基于MATLAB的HFSS偶极子天线设计与准确度分析

2022-03-31 来源:微波射频网 作者:江右射频 字号:

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时,此时的天线计算结果取决于空气盒子的尺寸。

主题阅读:MATLAB  HFSS  天线