当前位置: 首页 > news >正文

利用HFSS-API设计指数渐变传输线

学个Antenna是以天线仿真和调试为主,理论原理为辅的干货天线技术专栏,包括天线入门知识以及各类天线的原理简介、仿真软件建模、设计、调试过程及思路。如有想看到的内容或技术问题,可以在文尾写下留言。

​摘要:

上节学个Antenna:HFSS脚本建模入门一文中,对HFSS的脚本录制和利用matlab-hfssapi建模进行了入门介绍,今天我们就利用HFSS-API来设计指数渐变传输线,实现宽带高性能的阻抗匹配。

本文使用的电磁仿真软件为ANSYS Electronics Desktop Version 2017.2.0

微带线尺寸计算

David M. Pozar. 微波工程[M]. 电子工业出版社, 2006.

已知基板的厚度,介电常数和微带线的线宽可以利用微波射频网的微带线特征阻抗计算器进行特性阻抗的快速计算。那么已知基板的厚度,介电常数和微带线的特性阻抗,如何计算其对应的线宽呢?

​http://www.mwrf.net/tool/rf/2015/16294.html

相应的理论公式已在上面的微波工程一书中详细阐述,现摘取部分关键内容如下:

  • 先计算等效介电常数:

  • 对于给定的特性阻抗

​和介电常数

,比值

​可求得:

已知基板介电常数、厚度,以及需要得到的微带线阻抗值可以根据上述理论公式进行Matlab代码编写:

1 function W=microstrip_Zcal(Er,H,Z0)
2 %Unit:mm,GHz,ohm
3 %计算中间变量
4 A=Z0/60*sqrt((Er+1)/2)+(Er-1)/(Er+1)*(0.23+0.11/Er);
5 B=377*pi/(2*Z0*sqrt(Er));
6 W_d_A=8*exp(A)/(exp(2*A)-2);
7 W_d_B=2/pi*(B-1-log(2*B-1)+(Er-1)/(2*Er)*(log(B-1)+0.39-0.61/Er));
8 if(W_d_A<2)
9 W_d=W_d_A;
10 else
11 W_d=W_d_B;
12 end
13 %计算微带线宽度
14 W=W_d*H;
15 end

  • 对于介电常数3.66、厚度1mm的基板,100欧姆微带线理论计算的线宽为0.5467mm

  • 对于介电常数2.2、厚度0.508mm的基板,50欧姆微带线理论计算的线宽为1.5652mm

指数渐变传输线理论

多节匹配变换器的理论这里不做过多阐述。如下图所示,若传输线各位置的特性阻抗按一定规律进行渐变,则可以通过改变渐变的类型得到不同的通带特性。本节对指数渐变传输线进行分析和建模。

对应上述图示,指数渐变传输线满足:

​因为

​,因此有

​结合小反射理论推导出输入端的反射系数:

​为了降低低频率处的失配,渐变传输线的长度应该大于介质中的半波长,即为

​微带线渐变传输线的HFSS-API快速设计

有了前二节的理论支撑,在限定长度

​的情况下,已知负载阻抗为

​,输入端参考阻抗为

​,微带线各位置的特性阻抗值可以确定,接着反向计算微带线线宽。

代码仅供参考,笔者自行根据个人习惯自行修改过hfssapi文件,参数传入等存在差异

1 clear;clc;
2 %参数输入
3 Z0=50;ZL=100;%Z0:输入的参考阻抗,ZL:负载阻抗
4 lambda=300/3;%自定义工作频率下限的波长:mm
5 L=50;%渐变传输线的长度:mm
6 L0=linspace(0,L,251);tot_num=length(L0);
7 dL=L0(2)-L0(1);%离散化的传输线,每节的长度
8 %指数渐变传输线
9 a=1/L*log(ZL/Z0);
10 Z=Z0*exp(a*L0);
11 plot(L0,Z);%获取m文件当前路径
13p1=mfilename('fullpath');
14 i=findstr(p1,'\');
15 p1=p1(1:i(end));
16 pp=strcat(p1,'hfssapi');
17 %与m文件同级的文件夹中的hfssapi加入到路径中
18 addpath([pp '/3dmodeler']);
19 addpath([pp '/general']);
20 addpath([pp '/analysis']);
21 addpath([pp '/boundary/']);
22 %vbs脚本路径
23 tmpScriptFile = 'C:\Users\Dell\Desktop\exp_transmissionLine.vbs';
24 %计算微带线的线宽:mm
25 Er=2.2;H=0.508;Wcal=zeros(1,tot_num);
26 for num=1:tot_num
27 zcal=Z(num);
28 Wcal(num)=microstrip_Zcal(Er,H,zcal);
29 End
30
31 %vbs脚本建模:此处引用hfssapi为自己修改过后的,参数传入有差异;
32 %不可直接复制运行,当作伪代码,仅供参考
33 %建立HFSS模型文件.
34 fid = fopen(tmpScriptFile, 'wt');
35 % 建立一个新的HFSS project和design.
36 hfssNewProject(fid);
37 hfssInsertDesign(fid, 'gradually_changed_tri_transmissionLine');
38 % 创建新的Polyline
39 Points=zeros(2*tot_num,3);
40 for num=1:tot_num
41 Points(num,1:3)=[-Wcal(num)/2,(num-1)*dL,0];
42 End
43 Points((tot_num+1):end,1)=abs(flipud(Points(1:tot_num,1)));
44 Points((tot_num+1):end,2)=flipud(Points(1:tot_num,2));
45 Points((tot_num+1):end,3)=flipud(Points(1:tot_num,3));
46 hfssPolyline(fid, 'exp_transmissionLine', Points, 'mm', 1, 'Line', [255, 255, 0],0)
47 hfssSetColor(fid, 'exp_transmissionLine', [255,255,0]);
48 hfssSetTransparency(fid, {'exp_transmissionLine'}, 0);
49 hfssAssignPE(fid, 'Line', {'exp_transmissionLine'});
50
51 % Create the substrate
52 hfssBox(fid, 'substrate',[-40/2,0,0],[40,L,-H],'mm',1);
53 hfssAssignMaterial(fid, 'substrate', 'Rogers RT/duroid 5880 (tm)');
54 hfssSetTransparency(fid, {'substrate'}, 0.2);
55
56 % Create the ground
57 hfssRectangle(fid, 'GroundPlane', 'Z', [-40/2,0,-H],40,L, 'mm',1);
58 hfssSetColor(fid, 'GroundPlane', [192, 192, 192]);
59 hfssSetTransparency(fid, {'GroundPlane'}, 0.4);
60 hfssAssignPE(fid, 'PerfE_Ground', {'GroundPlane'});
61
62 %------------空气盒------------%
63 hfssBox(fid, 'AirBox', [-40/2-lambda/4,0,-H-lambda/4],[40+lambda/2, L, H+lambda/2], 'mm',1);
64 hfssSetTransparency(fid, {'AirBox'}, 0.9);
65 hfssAssignRadiation(fid, 'Rad1', 'AirBox');
66 %-----------设置端口---------------%
67 hfssRectangle(fid, 'waveport1', 'Y', [-Wcal(1)*6/2,0,-H],5*H,Wcal(1)*6, 'mm',1);
68 hfssRectangle(fid, 'waveport2', 'Y', [-Wcal(end)*6/2,L,-H],5*H,Wcal(end)*6, 'mm',1);
69 hfssSetColor(fid, 'waveport1', [255, 0, 0]); hfssSetColor(fid, 'waveport2', [255, 0, 0]);
70 hfssAssignWavePort(fid, 'Port1', 'waveport1', 1, false, [0,0,-H], [0,L,-H], 'mm');
71 hfssAssignWavePort(fid, 'Port2', 'waveport2', 1, false, [0,0,0], [0,L,0], 'mm');
72 %-----------改变积分终点--------------%
73 hfssInsertSolution(fid, 'Setup3000MHz', 3, 0.02, 15);
74 hfssInterpolatingSweep(fid, 'Sweep3to10GHz', 'Setup3000MHz',3, 10,351);
75
76 % Close the HFSS Script File.
77 fclose(fid);
78
79 function W=microstrip_Zcal(Er,H,Z0)
80 %Unit:mm,GHz,ohm
81 %计算中间变量
82 A=Z0/60*sqrt((Er+1)/2)+(Er-1)/(Er+1)*(0.23+0.11/Er);
83 B=377*pi/(2*Z0*sqrt(Er));
84 W_d_A=8*exp(A)/(exp(2*A)-2);
85 W_d_B=2/pi*(B-1-log(2*B-1)+(Er-1)/(2*Er)*(log(B-1)+0.39-0.61/Er));
86 if(W_d_A<2)
87 W_d=W_d_A;
88 else
89 W_d=W_d_B;
90 end
91 %计算微带线宽度
92 W=W_d*H;93 end

这里直接给出可执行的vbs脚本文件,vbs脚本建模的好处就是不管对方是用hfss15还是hfss18,都可以通过下面图片的操作,Run script进行模型的复构。

​微带线渐变传输线HFSS仿真结果

资源分享:查看原文末尾

原文链接:学个Antenna:利用HFSS-API设计指数渐变传输线 - RFASK射频问问

END

作者:微波天线工程师

应读者朋友们对这个系列文章的喜爱,也为了能够让老师更系统更全面地介绍MATLAB-HFSS-API相关知识,现推出该系列课程,共25课时,欢迎大家加入课程学习!https://www.rfask.net/kc/v/41.html

关于RFASK射频问问

射频问问 (http://RFASK.NET) 是在"微波射频网 (http://MWRF.NET)”系列原创技术专栏基础上升级打造的技术问答学习平台,主要围绕射频芯片、微波电路、天线、雷达、卫星等相关技术领域,致力于为无线通信、微波射频、天线、雷达等行业的工程师,提供优质、原创的技术问答、专栏文章、射频课程等学习内容。更多请访问:http://www.rfask.net

相关文章:

  • js的es6
  • 开源交流丨任务or实例 详解大数据DAG调度系统Taier任务调度
  • 配置Tomcat时系统环境变量已经配置好,但是启动Tomcat时还是闪退的解决办法
  • app,小程序打包
  • CVPR2022|比VinVL快一万倍!人大提出交互协同的双流视觉语言预训练模型COTS,又快又好!
  • 2023年考武汉安全员证有什么作用?安全员岗位职责是什么?甘建二
  • 开户许可证识别 易语言代码
  • ESP8266-Arduino编程实例-MLX90615红外测温仪驱动
  • 【算法leetcode】1837. K 进制表示下的各位数字总和(rust和go是真的好用)
  • Java中的实体类为什么要 implements Serializable?
  • 第十七天计算机视觉之光学字符识别OCR
  • Transformer架构
  • 基于SSM框架的人力资源管理系统毕业设计源码060936
  • js的基础
  • 分布式协同AI基准测试项目Ianvs:工业场景提升5倍研发效率
  • 《Java8实战》-第四章读书笔记(引入流Stream)
  • 【跃迁之路】【699天】程序员高效学习方法论探索系列(实验阶段456-2019.1.19)...
  • 2017 年终总结 —— 在路上
  • Angular 响应式表单之下拉框
  • iOS筛选菜单、分段选择器、导航栏、悬浮窗、转场动画、启动视频等源码
  • Storybook 5.0正式发布:有史以来变化最大的版本\n
  • 分布式任务队列Celery
  • 缓存与缓冲
  • 简单实现一个textarea自适应高度
  • 前端代码风格自动化系列(二)之Commitlint
  • 如何利用MongoDB打造TOP榜小程序
  • 温故知新之javascript面向对象
  • CMake 入门1/5:基于阿里云 ECS搭建体验环境
  • ​软考-高级-系统架构设计师教程(清华第2版)【第15章 面向服务架构设计理论与实践(P527~554)-思维导图】​
  • #考研#计算机文化知识1(局域网及网络互联)
  • $ is not function   和JQUERY 命名 冲突的解说 Jquer问题 (
  • $HTTP_POST_VARS['']和$_POST['']的区别
  • $redis-setphp_redis Set命令,php操作Redis Set函数介绍
  • (13)Latex:基于ΤΕΧ的自动排版系统——写论文必备
  • (2)(2.10) LTM telemetry
  • (3)nginx 配置(nginx.conf)
  • (C++)八皇后问题
  • (八)光盘的挂载与解挂、挂载CentOS镜像、rpm安装软件详细学习笔记
  • (二)linux使用docker容器运行mysql
  • (附源码)ssm航空客运订票系统 毕业设计 141612
  • (四)Tiki-taka算法(TTA)求解无人机三维路径规划研究(MATLAB)
  • (转)Linux下编译安装log4cxx
  • (转)PlayerPrefs在Windows下存到哪里去了?
  • .CSS-hover 的解释
  • .mysql secret在哪_MYSQL基本操作(上)
  • .Net MVC + EF搭建学生管理系统
  • .NET WebClient 类下载部分文件会错误?可能是解压缩的锅
  • .NetCore部署微服务(二)
  • .NET正则基础之——正则委托
  • .sys文件乱码_python vscode输出乱码
  • .vue文件怎么使用_我在项目中是这样配置Vue的
  • /etc/X11/xorg.conf 文件被误改后进不了图形化界面
  • @Async注解的坑,小心
  • @ComponentScan比较
  • [ Linux Audio 篇 ] 音频开发入门基础知识