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.RestoreWindowoDesktop.NewProjectSet oProject = oDesktop.GetActiveProjectoProject.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) |
审核编辑:汤梓红
评论
查看更多