资源描述
湖南工业大学
课 程 设 计
资 料 袋
湖南工业大学 学院(系、部) 2010 ~ 2011 学年第 二 学期
课程名称 微波技术与天线 指导教师 邱银安 职称 副教授
学生姓名 曾辉 专业班级 通信081 学号 07450000106
题 目 史密斯圆图与应用
成 绩 起止日期 2011 年 6 月 20 日~ 2011 年 6月 26日
目 录 清 单
序号
材 料 名 称
资料数量
备 注
1
课程设计任务书
1
2
课程设计说明书
1
3
源程序
1
4
5
湖南工业大学
课程设计任务书
2010—2011 学年第 2 学期
计算机与通信 学院 通信工程 专业 通信081 班级
课程名称: 微波技术与天线
设计题目: 史密斯圆图分析与应用
完成期限:自 2011 年 6 月 20 日至 2011 年 6 月 26 日共 1 周
内
容
及
任
务
一、设计的主要技术(参数):史密斯圆图,史密斯圆图演示软件
二、设计任务
1.了解史密斯圆图的原理和作用;
2.学会使用史密斯圆图分析问题。
三、设计工作量
1周完成
进
度
安
排
起止日期
工作内容
6月20日
分组、任务分配、课题理解
6月21日
功能分析、程序设计
6月22日-6月24日
实验验证和测试
6月25日-6月26日
总结、书写实验报告
参
考
资
料
[1] 王新稳,李萍. 微波技术与天线,电子工业出版社,2009年
[2] 廖承恩.微波技术基础.西安电子科技大学出版社,1995年
[3].吴万春,梁昌洪.微波网络及其应用.国防工业出版社,1980年
指导教师(签字): 年 月 日
系(教研室)主任(签字): 年 月 日
微波技术与天线
课程设计说明书
史密斯圆图分析与应用
起止日期: 2011年6月20日 至 2011年6月26日
学生姓名
曾辉
班级
通信081班
学号
07450000106
成绩
指导教师(签字)
计算机与通信学院
2011年 6 月 25 日
课题名称
微波技术与天线
人 数
5人
组 长
欧阳阿玲
同组人员
朱雄伟、丁春雨、吴多志、曾辉
课
题
的
主
要
内
容
和
要
求
主要内容:
1.了解史密斯圆图的原理和作用;
2.学会使用史密斯圆图分析问题。
课题要求:
1.实时显示史密斯圆图上的阻抗值和归一化阻抗值;
2.实时显示导纳圆图和归一化导纳值;
3.并联单可变匹配长度的计算;
4.并联双可变匹配长度的计算;
5.驻波系数、反射系数模和幅角;
6.传输线归一化长度并显示行驻波的波形;
7.计算传输线的输入阻抗和归一化输入阻抗;
具体任务
1、理解整个课程设计思想;
2、完成相关程序设计;
3、完成程序代码设计;
4、完成整个设计的验证;
时间安排与完成情况
2011年6月20日:课程设计分组并选题,组长分配各成员任务,明确此次课程设计要求。
2011年6月21:对该课题进行原理分析、程序设计。
2011年6月22—24日:运行并调试程序,观察实验结果,进行小组讨论。
2011年5月25日—26日:小组总结后完成课程设计报告。
目 录
第一章、史密斯圆图的基本介绍 5
1.1 史密斯圆图的介绍 5
1.2 史密斯圆图的理论分析 6
第二章、史密斯圆图的基本原理 7
第三章、史密斯圆图的应用 8
3.1 用史密斯图求VSWR 8
3.2 用史密斯图求导纳 9
3.3 利用史密斯图进行阻抗匹配 10
第四章、史密斯圆图的应用程序 11
心得体会 11
第一章、史密斯圆图的基本介绍
1.1 史密斯圆图的介绍
史密斯图(Smith chart)是一款用于电机与电子工程学的图表,主要用于传输线的阻抗匹配上。 实部r=常数和虚 x=常数,两族正交直线变化为正交圆并与反射系数|G|=常数和虚部x=常数套用而成。
该图表是由菲利普·史密斯(Phillip Smith)于1939年发明的,当时他在美国的RCA公司工作。史密斯也许不是图表的第一位发明者,一位名为Kurakawa的日本工程师声称早于其一年发明了这种图表。史密斯曾说过,“在我能够使用计算尺的时候,我对以图表方式来表达数学上的关联很有兴趣。”
史密斯图的基本在于以下的算式:
Smith 圆图
当中的Γ代表其线路的反射系数(reflection coefficient),即S-parameter里的S11,zL是归一负载值,即ZL / Z0。当中电路的负载值Z0是传输线的特性阻抗值,通常会使用50Ω。图表中的圆形线代表电阻抗力的实数值,即电阻值,中间的横线与向上和向下散出的线则代表电阻抗力的虚数值,即由电容或电感在高频下所产生的阻力,当中向上的是正数,向下的是负数。图表最中间的点(1+j0)代表一个已匹配(matched)的电阻数值(ZL),同时其反射系数的值会是零。图表的边缘代表其反射系数的长度是1,即100%反射。在图边的数字代表反射系数的角度(0-180度)和波长(由零至半个波长)。有一些图表是以导纳值(admittance)来表示,把上述的阻抗值版本旋转180度即可。
1.2 史密斯圆图的理论分析
一、圆图概念
圆图是求解均匀传输线有关阻抗计算和阻抗匹配问题的一类曲线坐标图,图上有两组坐标线,即归一化阻抗或导纳的实部和虚部的等值线簇与反射系数的模和辐角的等值线簇。所有这些等值线都是圆或圆弧,故称其为阻抗圆图或导纳圆图,简称圆图。
圆图所依据的关系式如下所示:
z(d)=Z(d)/Z0=(1+Γ(d))/(1-Γ(d))
或者Γ(d)=(z(d)-1)/(z(d)+1) 式*
jθ
式中z(d)和Γ(d)一般为复数:
jΦ(d)
z(d)=r(d)+jx(d)=|z|e
Γ(d)=Γre(d)+jΓim(d)=|Γ(d)|e
圆图便是依据式*将z(d)和Γ(d)的两组等值线簇套印在一张图纸上而成的,便于直接读出相互转换的关系和数据。
二、Γ平面上的归一化阻抗圆
依据下式可确定归一化电阻圆和归一化电抗圆,y由外到内依次为0,0.5,1,2,图1.2为归一化电阻图。
图1.2 归一化电阻图
传输线的正弦稳态分析所需的计算含有复数。在有效使用计算器和计算机之前,这些计算十分好事与繁复。结果导致图解分析技术的发展,并用来计算传输线的性能。史密斯圆图在其中是比较好的,它实质上是一个传输线计算器,能使用者迅速得出在传输线上任一点所发生的物理解释。除了确定线上任一点的输入阻抗,电压反射系数,VSWR,在线上放置短截线的位置以使传输线匹配外,还可由史密斯圆图获得一些其他数据。
(三)圆图使用
1).在传输线上移动半个波长,相当于圆图上旋转360º;
2).由负载向电源移动,圆图上为顺时针旋转;由电源向负载移动,为逆时针旋转;
3).阻抗圆图的电阻圆全部都与=1的直线相切,并且都在单位圆内;
r=0(短路)时,圆心在(0,0),半径=1(与单位圆重合);
r=¥(开路)时,圆心在(1,0),半径=0(缩为1个点);
坐标轴()是一条纯电阻线,线上的点从左到右电阻值从0到¥,中心为1;中心之左<1;中心之右>1,右半轴上的点代表电压最大点,其值大小等于驻波比。
4).阻抗圆图的电抗圆全部都与=0的直线相切,并且圆心都在=1的直线上,它们截于单位圆内的为有效部分,其中:>0的为电感线;<0的为电容线;x=0时,圆心和半径都趋于¥(变为一直线);x=¥时,半径=0(缩为1个点)。
5).导纳圆图与阻抗圆图表达式完全一样,它们是同一物理实质,两种表达方式g=0(开路)时,圆心在(0,0),半径=1(与单位圆重合);g=¥(短路)时,圆心在(1,0),半径=0(缩为1个点);坐标轴()是一条纯电导线,线上点的电导值从0到¥,右半轴上的点代表电压最小点,其值大小等于驻波比。导纳圆图上的一个点,沿等驻波圆转动180º便可得到相应的阻抗值;反之,亦相同。
第二章、史密斯圆图的基本原理
史密斯圆图是通过验证阻抗匹配的负载产生的。这里我们不直接考虑阻抗,而是用反射系数L,反射系数可以反映负载的特性(如导纳、增益、跨导),在处理RF频率的问题时,L更加有用。
图1.3中圆周上的点表示具有相同实部的阻抗。例如,R=1的圆,以(0.5, 0)为圆心,半径为0.5。它包含了代表反射零点的原点(0, 0)(负载与特性阻抗相匹配)。以(0,0)为圆心、半径为1的圆代表负载短路。负载开路时,圆退化为一个点(以1,0为圆心,半径为零)。与此对应的是最大的反射系数1,即所有的入射波都被反射回来。
图1.3
在作史密斯圆图时,有一些需要注意的问题。下面是最重要的几个方面:
(1)、所有的圆周只有一个相同的,唯一的交点(1,0);
(2)、代表0、也就是没有电阻(r =0)的圆是最大的圆;
(3)、无限大的电阻对应的圆退化为一个点(1,0);
(4)、实际中没有负的电阻,如果出现负阻值,有可能产生振荡;
(5)、选择一个对应于新电阻值的圆周就等于选择了一个新的电阻。
有很多种阻抗匹配的方法包括:
1、计算机仿真: 由于这类软件是为不同功能设计的而不只是用于阻抗匹配,所以使用起来比较复杂。设计者必须熟悉用正确的格式输入众多的数据。设计人员还需要具有从大量的输出结果中找到有用数据的技能。另外,除非计算机是专门为这个用途制造的,否则电路仿真软件不可能预装在计算机上。
2、手工计算: 这是一种极其繁琐的方法,因为需要用到较长(“几公里”)的计算公式、并且被处理的数据多为复数。
经验:只有在RF领域工作过多年的人才能使用这种方法。总之,它只适合于资深的专家。
史密斯圆图: 本文要重点讨论的内容。
第三章、史密斯圆图的应用
3.1 用史密斯图求VSWR
我们知道,传输线上前向和后向的行波合成会形成驻波,其根本原因在于源端和负载端的阻抗不匹配。我们可以定义一个称为电压驻波比(voltage standing-wave ratio, VSWR)的量度,来评价负载接在传输线上的不匹配程度。VSWR定义为传输线上驻波电压最大值与最小值之比:
对于匹配的传输线Vmax=Vmin, VSWR将为1,VSWR也可以用和接受端反射系数的关系式来表达:
对于完全匹配的传输线,反射系数为0,故而VSWR为1,但对于终端短路或开路,VSWR将为无穷大,因为这两种情况下的反射系数绝对值为1。
在史密斯图上表示:
所以要计算VSWR,只需要在极坐标的史密斯图上以阻抗点到圆心的距离为半径作圆,与水平轴相交,则离极坐标圆点最远点坐标的大小即为电压驻波比的大小。举个例子,假设传输线的阻抗为50Ω,负载的阻抗为50+j100Ω,则负载在史密斯圆上的归一化阻抗的大小为:1.0+j2.0Ω,按上述方法即可在图中求出VSWR的大小。
3.2 用史密斯图求导纳
我们知道,如果将史密斯阻抗圆图旋转180度,就可以得到史密斯导纳圆图,根据这个关系,在阻抗圆图上也可以通过做图求出任一点的导纳。其步骤就是连接所在点和圆心,并反向延长至等距离,所得点的坐标就是其导纳。比如,某点阻抗为400-j1600Ω,Z0=1000Ω,则其归一化阻抗为0.4-j1.6,从图中可以得到导纳大小为:Y=(0.145+j0.59)Y0=0.000145+j0.00059Ω-1。
3.3 利用史密斯图进行阻抗匹配
(1)使用并联短截线的阻抗匹配
我们可以通过改变短路的短截线的长度与它在传输线上的位置来进行传输网络的匹配,当达到匹配时,连接点的输入阻抗应正好等于线路的特征阻抗。
假设传输线特征阻抗的导纳为Yin,无损耗传输线离负载d处的输入导纳Yd=Yin+jB(归一化导纳即为1+jb),输入导纳为Ystub=-jB的短截线接在M点,以使负载和传输线匹配。在史密斯图上的操作步骤:
1.做出负载的阻抗点A,反向延长求出其导纳点B;
2.将点B沿顺时针方向(朝着源端)转动,与r=1的圆交于点C和D;
3.点D所在的电抗圆和圆周交点为F;
4.分别读出各点对应的长度,B(aλ),C(bλ),F(kλ);
5.可以得出:负载至短截线连接点的最小距离d=bλ-aλ,短截线的长度S=kλ-0.25λ。
(2)使用L-C电路的阻抗匹配
在RF电路设计中,还经常用L-C电路来达到阻抗匹配的目的,通常的可以有如下8种匹配模型可供选择;这些模型可根据不同的情况合理选择,如果在低通情况下可选择串联电感的形式,在高通时则要选择串联电容的形式。
使用电容电感器件进行阻抗匹配,在史密斯图上的可以遵循下面四个规则:
1、沿着恒电阻圆顺时针走表示增加串联电感;
2、沿着恒电阻圆逆时针走表示增加串联电容;
3、沿着恒电导圆顺时针走表示增加并联电容;
4、沿着恒电导圆逆时针走表示增加并联电感。
第四章、史密斯圆图的应用程序
/ SmithChartDemoDlg.cpp : implementation file
#include "stdafx.h"
#include "SmithChartDemo.h"
#include "SmithChartDemoDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
CSmithChartDemoDlg::CSmithChartDemoDlg(CWnd* pParent /*=NULL*/)
: CDialog(CSmithChartDemoDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CSmithChartDemoDlg)
m_hDiankang = 0.0;
m_hDianzu = 0.0;
m_hTexing = 0.0;
m_hWavelenght = 0.0;
m_hSwr = _T("");
m_hFansheShibu = _T("");
m_hFansheXubu = _T("");
m_hGuiyiShibu = _T("");
m_hGuiyiXubu = _T("");
m_hSlider = 0;
//}}AFX_DATA_INIT
// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
void CSmithChartDemoDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CSmithChartDemoDlg)
DDX_Control(pDX, IDC_SLIDER1, m_hSliderControl);
DDX_Text(pDX, IDC_EDIT_DIANKANG, m_hDiankang);
DDX_Text(pDX, IDC_EDIT_DIANZU, m_hDianzu);
DDX_Text(pDX, IDC_EDIT_TEXING, m_hTexing);
DDX_Text(pDX, IDC_EDIT_WAVELENGTH, m_hWavelenght);
DDX_Text(pDX, IDC_EDIT_SWR, m_hSwr);
DDX_Text(pDX, IDC_EDIT_FANSHE_SHIBU, m_hFansheShibu);
DDX_Text(pDX, IDC_EDIT_FANSHE_XUBU, m_hFansheXubu);
DDX_Text(pDX, IDC_EDIT_GUIYI_SHIBU, m_hGuiyiShibu);
DDX_Text(pDX, IDC_EDIT_GUIYI_XUBU, m_hGuiyiXubu);
DDX_Slider(pDX, IDC_SLIDER1, m_hSlider);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CSmithChartDemoDlg, CDialog)
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);
CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
CString strAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}
chart.SetRange(CPoint(0,0),CPoint(400,400),CPoint(200,200));
m_hTexing = 50;
m_hDianzu = 50;
m_hDiankang = 50;
m_hSwr = "";
m_hSliderControl.SetRange(0,100,TRUE);
m_hSliderControl.SetPos(25);
UpdateData(FALSE);
return TRUE; // return TRUE unless you set the focus to a control
void CSmithChartDemoDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
{
CAboutDlg dlgAbout;
dlgAbout.DoModal();
}
else
{
CDialog::OnSysCommand(nID, lParam);
}
}
void CSmithChartDemoDlg::OnPaint()
{
CDC * pDC = GetDC();
chart.InitSmithChart(pDC);
ReleaseDC(pDC);
if (IsIconic())
{
CPaintDC dc(this); // device context for painting
SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialog::OnPaint();
}
}
HCURSOR CSmithChartDemoDlg::OnQueryDragIcon()
{
return (HCURSOR) m_hIcon;
}
void CSmithChartDemoDlg::OnBtnCacul()
{
if(m_hTexing <= 0)
{
MessageBox("特性阻抗不能小于等于零!","警告....",MB_OK|MB_ICONHAND);
return;
}
if(m_hDianzu<0)
{
MessageBox("电阻不能小于零!","警告....",MB_OK|MB_ICONHAND);
return;
}
//获取阻抗
IMPEDANCE impedance;
impedance.impedanceX = m_hDianzu;
impedance.impedanceY = m_hDiankang;
impedance.impedanceChara = m_hTexing;
//获取归一化阻抗
RLXL rlxl;
rlxl = chart.CaculateRLXL(impedance);
//获取反射系数
FRFL frfl;
frfl = chart.CaculateFRFL(rlxl);
//获取R,X圆参数
CIRCLE rCircle = chart.CaculateCircleR(rlxl.r);
CIRCLE xCircle = chart.CaculateCircleX(rlxl.x);
//获取绘图设备
CDC * pDC = GetDC();
chart.InitSmithChart(pDC);
CPen pen(PS_DOT,2,RGB(255,0,0));
CPen * poldPen = pDC->SelectObject(&pen);
chart.DrawCircleR(rCircle,pDC);//画R圆
chart.DrawCircleX(xCircle,pDC);//画X圆
chart.DrawCircle(frfl,pDC);//画等反射系数圆
chart.ShowImpedance(frfl,rlxl,impedance.impedanceChara,pDC);
pDC->SelectObject(poldPen);
ReleaseDC(pDC);//释放绘图设备
//////////////更新界面数据
m_hSwr.Format("%.2f",chart.GetSWR(frfl));//获取驻波比
m_hGuiyiShibu.Format("%.2f",rlxl.r);//归一化阻抗实部
m_hGuiyiXubu.Format("%.2f",rlxl.x);//归一化阻抗虚部
m_hFansheShibu.Format("%.2f",frfl.Fr);//反射系数实部
m_hFansheXubu.Format("%.2f",frfl.Fl);//反射系数虚部
UpdateData(FALSE);
}
void CSmithChartDemoDlg::OnBtnFind()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
if(m_hTexing <= 0)
{
MessageBox("特性阻抗不能小于等于零!","警告....",MB_OK|MB_ICONHAND);
return;
}
if(m_hDianzu<0)
{
MessageBox("电阻不能小于零!","警告....",MB_OK|MB_ICONHAND);
return;
}
IMPEDANCE impedance;
impedance.impedanceX = m_hDianzu;
impedance.impedanceY = m_hDiankang;
impedance.impedanceChara = m_hTexing;
RLXL rlxl;
rlxl = chart.CaculateRLXL(impedance);
FRFL frfl = chart.CaculateFRFL(rlxl);
/////////////////////////////////////
//获得旋转后新点的反射系数
frfl = chart.Rotate(frfl,m_hWavelenght);
//重新获得归一化阻抗
rlxl = chart.CaculateRLXL(frfl);
CIRCLE rCircle = chart.CaculateCircleR(rlxl.r);
CIRCLE xCircle = chart.CaculateCircleX(rlxl.x);
CDC * pDC = GetDC();
chart.InitSmithChart(pDC);
CPen pen(PS_DOT,2,RGB(255,0,0));
CPen * poldPen = pDC->SelectObject(&pen);
chart.DrawCircleR(rCircle,pDC);
chart.DrawCircleX(xCircle,pDC);
chart.DrawCircle(frfl,pDC);
chart.ShowImpedance(frfl,rlxl,impedance.impedanceChara,pDC);
pDC->SelectObject(poldPen);
ReleaseDC(pDC);
m_hSwr.Format("%.2f",chart.GetSWR(frfl));//获取驻波比
m_hGuiyiShibu.Format("%.2f",rlxl.r);//归一化阻抗实部
m_hGuiyiXubu.Format("%.2f",rlxl.x);//归一化阻抗虚部
m_hFansheShibu.Format("%.2f",frfl.Fr);//反射系数实部
m_hFansheXubu.Format("%.2f",frfl.Fl);//反射系数虚部
UpdateData(FALSE);
}
void CSmithChartDemoDlg::OnReleasedcaptureSlider1(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
m_hWavelenght = double(m_hSlider)/100;
UpdateData(FALSE);
UpdateData(TRUE);
if(m_hTexing <= 0)
{
MessageBox("特性阻抗不能小于等于零!","警告....",MB_OK|MB_ICONHAND);
return;
}
if(m_hDianzu<0)
{
MessageBox("电阻不能小于零!","警告....",MB_OK|MB_ICONHAND);
return;
}
IMPEDANCE impedance;
impedance.impedanceX = m_hDianzu;
impedance.impedanceY = m_hDiankang;
impedance.impedanceChara = m_hTexing;
RLXL rlxl;
rlxl = chart.CaculateRLXL(impedance);
FRFL frfl = chart.CaculateFRFL(rlxl);
/////////////////////////////////////
//获得旋转后新点的反射系数
frfl = chart.Rotate(frfl,m_hWavelenght);
//重新获得归一化阻抗
rlxl = chart.CaculateRLXL(frfl);
CIRCLE rCircle = chart.CaculateCircleR(rlxl.r);
CIRCLE xCircle = chart.CaculateCircleX(rlxl.x);
CDC * pDC = GetDC();
chart.InitSmithChart(pDC);
CPen pen(PS_DOT,2,RGB(255,0,0));
CPen * poldPen = pDC->SelectObject(&pen);
chart.DrawCircleR(rCircle,pDC);
chart.DrawCircleX(xCircle,pDC);
chart.DrawCircle(frfl,pDC);
chart.ShowImpedance(frfl,rlxl,impedance.impedanceChara,pDC);
pDC->SelectObject(poldPen);
ReleaseDC(pDC);
m_hSwr.Format("%.2f",chart.GetSWR(frfl));//获取驻波比
m_hGuiyiShibu.Format("%.2f",rlxl.r);//归一化阻抗实部
m_hGuiyiXubu.Format("%.2f",rlxl.x);//归一化阻抗虚部
m_hFansheShibu.Format("%.2f",frfl.Fr);//反射系数实部
m_hFansheXubu.Format("%.2f",frfl.Fl);//反射系数虚部
UpdateData(FALSE);
*pResult = 0;
}
心得体会
经过此次微波课程设计,我认识到微波在我们生活当中起到了很重要的作用,也明白了微波从学习到应用以及最后的设计都有一段艰辛的路程要走,我们需要学习的还有很多。感觉平时学习的还可以,到实际的应用当中的时候才发现我们课本上学习的知识有限,心态还不端正,真正体会到了“书到用时方恨少”这句话含义。
在老师的指导和帮助下,初步完成了微波设计,也体会到了微波的光明前途。我们在微波方面还有很大的发展机会和提升空间,同时,我也看到了自己的不足,对知识的把握不深,对软件的使用不够熟练,这都需要我们呢在平时加强练习,向老师和同学请教、学习和交流,努力提高自己的能力。
展开阅读全文