1. 前言
Matlab和HFSS相结合设计分析天线,不仅发挥了matlab强大的数据分析功能,同时还是实现天线设计的自动化。这对于复杂的阵列天线而言无疑是一个十分有用的功能。通过两者相结合组成的设计框架,实现了自动化的建模,降低了软件使用的难度,同时增强了两者的耦合度与集成度,提升天线工程师的设计效率。
2. 偶极子天线理论
2.1 概述
智能天线如图1所示,可以跟踪目标调整天线的辐射方向图。图中的天线可以是多个偶极子天线组成的阵列,通过一定的相位差合成一个窄波束的方向图。
图1. 智能天线
偶极子天线是一种经典的天线形式,偶极子天线可分为电偶极子和磁偶极子天线两种形态。其中,电偶极子天线在其 E 面,辐射方向图形状为∞,在 H 面,其辐射方向图形状为O形。而磁偶极子在 E 面,H 面的辐射方向图正好与电偶极子的辐射方向图相反。
目前偶极子天线主要朝着宽带化、小型化发展。比较新颖的宽带偶极子天线有以下几种。
2.2 电偶极子天线
电偶极子天线的的物理长度远小于其波长,此时此导线上各处电流I可看作均匀分布,如图2所示,通过失位法分析电偶极子产生的电磁场。
图2. 电偶极子模型
天线在远场的辐射性能见下式。
由此可知,此时在远场天线只存在上述公式中的两个分量即Eθ和Hφ,并且相互垂直同向,这些特性表明该天线可以向外传播能量。
图3. 辐射示意图
2.3 磁偶极子天线
磁偶极子是为了类比电偶极子而假想的概念模型,通常将磁偶极子模型等效为一个极小型的载有电流的圆环。假设xoy平面上一小圆环的半径为a,其远小于波长,如图4所示,使用矢位法分析该天线的电场强度和磁场强度。
图4. 磁偶极子
经过推导得到下式的电场强度和磁场强度。
对比电偶极子的电场强度和磁场强度,两种偶极子天线存在一定差异,两种天线存在90°的相位差,即两种的方向图正好相反。
半波长偶极天线的输入阻抗是由寻=73+ j42.5欧姆。
2.4 宽带电磁偶极子天线
1954年Calvin提出了磁电偶极子天线,下面将以一种宽带电磁偶极子天线为例,说明其工作原理。该天线主要由E形贴片和折叠垂直短路贴片组成。E 形电偶极子贴片一般具有多个相邻的谐振频点,从而实现了扩宽工作频带;折叠垂直短路贴片与其之间的地板可以等效为磁偶极子。下图是该天线的表面电流分布图。
图5. 天线表面电流分布
上图为该宽带天线在同一周期内不同时刻的表面电流分布,当t=T/2时,电偶极子处于工作的状态,天线的电流大部分都存在于E贴片上,折叠垂直端路贴片上只有很少的电流;而在t=T/4时,E形贴片上的电流很少,折叠垂直短路贴片上的表面电流增大,此时天线处于磁偶极子工作状态。可见,其电偶极子和磁偶极子有效结合在一起,就可以在远场实现良好的互补型辐射方向图,这也是电磁偶极子天线的基本理论依据。
图6. 电磁偶极子辐射特性
两者的远场辐射方向图存在互补的关系。通常情况下,电磁偶极子天线由正交放置且同时激励的电偶极子和磁偶极子组成,电偶极子在 E 面的方向图是平 8 字,对于磁偶极子,其是 O 字形状;在 H 面电偶极子的方向图是 O 字形状,而对于磁偶极子,其是平 8 字形状。将电偶极子和磁偶极子采用恰当的方式结合在一起,就可以在 E 面和 H 面获得相似的心形辐射方向图,电偶极子和磁偶极子在 E 面和 H 面叠加后的辐射方向图具有良好的相似性,更为关键的是,得到的辐射方向图后瓣都很小。
3. 基于matlab的偶极子天线设计程序
3.1 设计流程
基于Matlab的HFSS天线是指编写matlab程序并由该程序生成对应的脚本文件,接着再由HFSS调用该脚本文件最终实现天线设计的自动化过程。
与手动进行天线设计相类似,脚本语言设计天线遵从以下流程,首先使用启动HFSS命令开启软件,接着新建工程,在该工程中建立天线模型,依次设置各参数后开始仿真。
按照上述流程使用matlab控制HFSS生成的部分脚本内容如下:
Set oHfssApp = CreateObject("AnsoftHfss.HfssScriptInterface") Set oDesktop = oHfssApp.GetAppDesktop() oDesktop.RestoreWindow oDesktop.NewProject Set oProject = oDesktop.GetActiveProject oProject.InsertDesign "HFSS", " dio ", "DrivenModal", "" Set oDesign = oProject.SetActiveDesign("dio") Set oEditor = oDesign.SetActiveEditor("3D Modeler") oEditor.CreateCylinder _ Array("NAME:CylinderParameters", _ "XCenter:=", "0.00100meter", _ "YCenter:=", "0.000000meter", _ "ZCenter:=", "0.000000meter", _ "Radius:=", "0.020000meter", _ "Height:=", "0.028000meter", _ "WhichAxis:=", "X"), _ Array("NAME:Attributes", _ "Name:=", "mydipole_1", _ "Flags:=", "", _ "Color:=", "(255 255 0)", _ "Transparency:=", 0, _ "PartCoordinateSystem:=", "Global", _ "MaterialName:=", "vacuum", _ "SolveInside:=", true) oEditor.CreateCylinder _ Array("NAME:CylinderParameters", _ "XCenter:=", "-0.001000meter", _ "YCenter:=", "0.000000meter", _ "ZCenter:=", "0.000000meter", _ "Radius:=", "0.020000meter", _ "Height:=", "-0.028000meter", _ "WhichAxis:=", "X"), _ Array("NAME:Attributes", _ "Name:=", " mydipole_2", _ "Flags:=", "", _ "Color:=", "(255 255 0)", _ "Transparency:=", 0, _ "PartCoordinateSystem:=", "Global", _ "MaterialName:=", "vacuum", _ "SolveInside:=", true) Set oModule = oDesign.GetModule("BoundarySetup") oModule.AssignPerfectE _ Array("NAME:Antennas", _ "InfGroundPlane:=", false, _ "Objects:=", _ Array("mydipole_1"," mydipole_2")) oEditor.CreateRectangle _ Array("NAME:RectangleParameters", _ "IsCovered:=", true, _ "XStart:=", "-0.025000meter", _ "YStart:=", "0.000000meter", _ "ZStart:=", "-0.020000meter", _ "Width:=", "0.040000meter", _ "Height:=", "0.050000meter", _ "WhichAxis:=", "Y"), _ Array("NAME:Attributes", _ "Name:=", "GapSource", _ "Flags:=", "", _ "Color:=", "(255 255 0)", _ "Transparency:=", 5.000000e-01, _ "PartCoordinateSystem:=", "Global", _ "MaterialName:=", "vacuum", _ "SolveInside:=", true) oEditor.CreateBox _ Array("NAME:BoxParameters", _ "XPosition:=", "-1.000000meter", _ "YPosition:=", "-0.500000meter", _ "ZPosition:=", "-0.500000meter", _ "XSize:=", "2.000000meter", _ "YSize:=", "1.000000meter", _ "ZSize:=", "1.000000meter"), _ Array("NAME:Attributes", _ "Name:=", "AirBox", _ "Flags:=", "", _ "Color:=", "(255 255 0)", _ "Transparency:=", 0.75, _ "PartCoordinateSystem:=", "Global", _ "MaterialName:=", "vacuum", _ "SolveInside:=", true) Set oModule = oDesign.GetModule("BoundarySetup") oModule.AssignRadiation _ Array("NAME:ABC", _ "Objects:=", Array("AirBox")) Set oModule = oDesign.GetModule("AnalysisSetup") oModule.InsertSetup "HfssDriven", _ Array("NAME:Setup150MHz", _ "Frequency:=", "2.50000GHz", _ "PortsOnly:=", false, _ "maxDeltaS:=", 0.020000, _ "UseMatrixConv:=", false, _ "MaximumPasses:=", 25, _ "MinimumPasses:=", 1, _ "MinimumConvergedPasses:=", 1, _ "PercentRefinement:=", 20, _ "ReducedSolutionBasis:=", false, _ "DoLambdaRefine:=", true, _ "DoMaterialLambda:=", true, _ "Target:=", 0.3333, _ "PortAccuracy:=", 2, _ "SetPortMinMaxTri:=", false) |
3.2 空气盒子对偶极子天线仿真结果的影响
这里将天线的空气盒的大小设置为变量AIR,研究AIR的尺寸对天线仿真结果的影响程度。对应的程序设置内容如下。
图7. 天线仿真模型
这里在工作频段内计算了3个频点,依次按照[λ/4,2λ]范围调整空气盒子的大小,对比天线S11参数的仿真计算结果,如下图所示,可见随着空气盒子的尺寸大于天线中心频率的一个波长时,此时的仿真结果的差异逐渐减少。由此可得出一下结论:当天线空气盒子的尺寸设置大于λ时,天线仿真的结果差异性较小;当天线空气盒子的尺寸小于λ/4时,此时的天线计算结果取决于空气盒子的尺寸。