2004年9月第3期(总第60期)Vol.20No.3(SerialNo.60)2004
MATLAB与PSPICE在电路分析中的应用
游 磊(四川大学计算机学院) 梁 颖 宁元中(四川大学电气信息学院)
摘 要:本文通过一个电路分析的实例介绍了MATLAB与PSPICE在电路分析中的应用,着重体现了MATLAB及其TOOLBOX在解决微分方程初值问题的强大功能以及MATLAB与PSPICE卓越的绘图功能,同时根据二者自身的特点,讨论了它们在电路分析应用中的异同。
关键词:MATLAB PSPICE 仿真
一、引言
MATLAB是一种广泛应用于工程计算及数值分析领域的新型高级语言,由主开发环境、扩展MATLAB功能的工具箱、Simulink仿真环境和第三方开发的辅助工具等内容组成。它可靠的数值计算和符号计算功能、简单易学的编程语言、强大的图形功能以及为数众多的应用工具箱是区别于其它科技应用软件的显著特点。
SPICE(SimulationProgramWithIntegratedCircuitEmphasis)为国际上著名的通用电路模拟分析程序,由美国加州大学伯克莱分校开发研制。PSPICE是由美国Microsim公司推出的基于SPICE程序的PC机版本。目前广泛使用的PSPICE910版本主要用于电路仿真,以源程序或图形方式输入,自动进行电路检查,生成图表,模拟和计算电路,它不仅可以对模拟电子线路进行不同输入状态的时间响应、频率响应、噪声和其他性能的分析优化,以使设计电路达到最优的性能指标,还可以分析数字电子线路和模数混合电路,是公认的优秀通用电路模拟软件。
本文根据MATLAB与PSPICE的特点并结合实例,讨论了二者在电路分析中的应用。
二、MATLAB及其TOOLBOX在电路分析中的应用
(一)电路分析实例
已知电路如图1所示,其中R1=4Ω,R2=2Ω,・18・
R3=3Ω,L=1.6H,C=0.25F,E(t)=sint。初
值条件:iL(0)=15A,q(0)=2C。试求电容两端的电压以及流过电感的电流。
图1 待分析电路图
(二)回路方程法11列写回路方程
(1)选择回路电流i1(t),uc(t)为未知量,电路如图1所示。所列回路方程为:
(R1+R2)i1(t)-R2i3(t)+L
di1(t)
=0dt
(R2+R3)i3(t)-R2i1(t)+uc(t)-sint=0
(回路方程)
i3(t)=C
duc(t)dt
经整理的标准状态方程如下:
duc(t)dtdi1(t)dt
-=
48 55
uc(t)i1(t)
113- -44
+
4514
E(t)
a.用MATLAB中的dsolve函数解回路方程.m
文件如下:
MATLAB与PSPICE在电路分析中的应用
t=linspace(0,33pi,100)[f,g]=dsolve(′Df=-0.83f+1.63g+0.83sin(t),Dg=-0.253f-3.253g+0.253sing
)(t)′,′f(0)=8,g(0)=15′
%以下程序实现绘图功能,后面的方法也会用
时域方程组,用拉氏变换将其变换为频域方程组,利
用solve命令解出方程组中的待求量,再对其进行反拉氏变换,即可求出待求量的时域表达式,.m文件如下:
t=linspace(0,33pi,100)symsR1R2R3LCreal
)I1=sym(′I1(t)′
)U1=sym(′U1(t)′)dIl=sym(′diff(I1(t),t)′)dU1=sym(′diff(U1(t),t)′symstsE=sin(t)
eq1=(R1+R2)3I1-C3R23dU1+L3dI1
eq2=C3(R2+R3)3dU1-R23I1+U1-EL1=laplace(eq1,t,s)L2=laplace(eq2,t,s)symsLI1LU1
NI1=subs(L1,{R1,R2,R3,L,C,′I1(0)′,′U1(0)′},{4,2,3,1.6,0.25,15,8})
NU1=subs(L2,{R1,R2,R3,L,C,′I1(0)′,′U1(0)′},{4,2,3,1.6,0.25,15,8})
NI1=subs(NI1,{′laplace(I1(t),t,s)′,′laplace(U1(t),t,s)′}
NI1=collect(NI1,LI1,{LI1,LU1})
NU1=subs(NU1,{′laplace(I1(t),t,s)′,′laplace(U1(t),t,s)′},{LI1,LU1})NU1=collect(NU1,LU1)
[LI1,LU1]=solve(NI1,NU1,LI1,LU1)I1=ilaplace(LI1,s,t)U1=ilaplace(LU1,s,t)
到%
subplot(2,2,1);ezplot(g,[0,10]);
);ylable(′);gridtitle(′Current′I1(t)′
subplot(2,2,1);ezplot(I1,[0,10]);
);ylable(′);gridtitle(′Current′I1(t)′subplot(2,2,2);ezplot(U1,[0,10]););ylable(′);gridtitle(′Charge′U1(t)′
subplot(2,2,3);ezplot(I1,[2,25]););ylable(′title(′Current′I1(t)′;grid
);text(15,-0.06,′text(2,-0.1,′Transient′);SteadyState′
subplot(2,2,4);ezplot(U1,[2,25]););ylable(′);gridtitle(′Charge′U1(t)′
);text(15,0.2,′text(3,0.47,′Transient′Steady
);State′
b.用toolbox中的ode45或ode23函数求解回
路方程,.m文件如下:
functiondy=rigid(t,y)
dy=zeros(2,1); %acolumnvector
dy(1)=-0.83y(1)+1.63y(2)+0.83sin(t);
dy(2)=-0.25y(1)+3.253y(2)+0.253sin(t);
[t,y]=ode45@rigid,[0 33pi],[8 15]);%[t,y]=ode23@rigid,[033pi],[815];
绘图程序与上面的完全相同。
c.用toolbox中的拉氏变换法求解回路方程拉氏变换法求解常微分方程时,先列出电路的
绘图程序与上面的完全相同。d.输出结果如图2所示:
・19・
MATLAB与PSPICE在电路分析中的应用
图2 以电流、电压为变量的输出结果
(2)选择回路电流和电容电荷为未知量,电路如
图1所示。所列回路方程如下:
L
di1(t)dQc(t)
+(R1+R2)i1(t)-R2=0dtdt
dQc(t)Qc(t)
+=E(t)dtC
代入数值经整理的标准状态方程如下:
di1(t)
dtdQ(t)dt
-=
13 -14
i1(t)Q(t)
24 -55
+
1415
E(t)
-R2i1(t)+(R2+R3)
(回路方程)
i1(0)=15A qc(0)=2C
仍可用上面几种方法来求解,只需将变量改为电压和电荷即可。
输出结果如图3所示。
图3 以电压、电荷为变量的输出结果
(1)选择回路电流i1(t),uc(t)为未知量 (三)单树枝割集、单链枝回路法
树状图如图4所示。duc(t)
C=i3(t)
dtL
di1(t)
+R1i1(t)+R2(i1(t)-i3(t))=0dt
E(t)+R2i1(t)-uc(t)
R2+R3
i3(t)=
图4树状图
・20・
MATLAB与PSPICE在电路分析中的应用
代入数值经整理的标准状态方程如下:
duc(t)dtdi1(t)dt
R3 3 4 3
L1 0 1 116 IC=15C1 4 0 0125 IC=8V1 3 0 sin(010.159)
-=
-
48 55113 -44
uc(t)i1(t)
+
4514
E(t)
(2)选择回路电流和电容电荷为未知量i1(t)=
dQ(t)-dt
R1Ldi1(t)i1(t)+R2R2dt
(单树支割
集方程)
1tranIn25uic
1probe1end
(单连支回di1(t)Q(t)dQ(t)+R3+L+R1i1(t)=E(t) Cdtdt路方程)
代入数值经整理的标准状态方程如下:di1(t)dtdQ(t)dt
-=
13 -14
i1(t)Q(t)24 -55
+
1415
E(t)
电路的解法和输出结果都与回路法完全相同,这里就不再重复了。
三、PSPICE在电路分析中的应用
(一)仿真电路图如图5所示。(二)源程序如下:R1 1 2 4R2 0 2 2
图5仿真电路图
(三)输出结果
可由上面的电路图或源程序直接用PSPICE仿真得到,也可以将MATLAB所得数据传入PSPICE,在其probe中得到。输出结果如图6所示。
图6 PSPICE中的输出结果
(t’);title‘(current’);gridon 还可以把PSPICE数据输出到Excel中,在‘
Matlab的file中载入,命令如下:subplot322;plot(data(:,1),data(:,2);xlabel
);gridon(t’);title‘(voltage’clear‘
subplot321;plot(data(:,1),data(:,2));xlabel
・21・
MATLAB与PSPICE在电路分析中的应用
图7 MATLAB中的输出结果 四、MATLAB与PSPICE在电路分析中的比较
(一)MATLAB与PSPICE的共同点MATLAB和PSPICE的仿真结果可知二者的共同特点是:①计算结果可视化。两种语言都能使用户在屏幕上生成和处理函数图形(包括曲线、曲面、立体空间等);②它们有针对各物理量以及数字信号系统建模、分析和仿真的环境;③在仿真结果的指导下,可以了解各元件(电阻、电容、电感和晶体管等)参数对电路的大致影响,从而对比、改进电路,确定设计中电路参数的最佳数值。
(二)结果的比较在对该电路的分析与计算机中先后采用了MATLAB和PSPICE的不同方法。MATLAB编程是根据方程直接编写其1M文件,经运行即得结果,其显示的图形精度高,光滑性好。而PSPICE的in2putfile可根据电路直接编写,也可以通过在OR2CAD中输入电路图而自动生成,其运行结果所得数
画图时,往往不清楚元件的参考方向与我们所想的参考方向是否一致,容易把电压电流的参考方向弄混,在有初始值时,导致仿真结果错误,而且很难找到错误之所在。
(四)结论由上我们可以看出,用PSPICE求解电路最方便快捷,它不需要列写电路方程组,只需画出电路仿真图形或写出PSPICE的inputfile。但其解是离散数据,故其显示的图形光滑度较差;在MATLAB中用LAPLACE变换进行求解需先把电路时域微分方程组变换成频域中的代数方程组,在频域中求解出各个待求量,再将其反变换得到时域解,这种方法较为通用,但速度比较慢。用LAPLACE变换求解可得到待求量的时域表达式,解是连续性的,故精度高,图形光滑性好。
五、结束语在清楚地了解MATLAB和PSPICE两种软件在处理电路分析问题时的异同后,我们可以更方便地根据实际问题的不同需要选择更方便、更快捷、精度更高、输出曲线更为理想的方法,而不造成资源与时间的浪费。
参考文献
[1]张航,黄樊译1[美]D.Hanselman,B.Little2field著,精通MATLAB61北京:清华大学出版社,20011
[2]刘卫国1科学计算与MATLAB语言[M].北京:中国铁道出版社,20001
[3]胡清,孟永良,王改芳1MATLAB语言及其与C/C++的混合编程[J].微型机与应用,2000,19(11)∶12-131
[4]贾新章1ORCAD/PSPICE910实用教程[M].西安:西安电子科技大学出版社,19991
(责任编辑 魏 中)
据图形考贝后光滑度较差,但同样反映了变量的变
化趋势。如果用PSPICE的输出文件,到MATLAB中进行仿真,这样就可以得到比较令人满意的结果。
(三)MATLAB与PSPICE的优缺点
MATLAB具有较强的数据处理功能,对所列的
微分或代数方程,简单运用命令就可求解;针对电路图,只要列得方程,就可编程实现求解;但它也有不足之处,就是在求解时必须要先列出电路方程并且不能直接求全响应。而这一点PSPICE却能完成;同时PSPICE可根据电路直接输入参数,得到结果,不需要很强的数学知识就可实现编程,这是它的优点。缺点是根据电路图实现输入容易,针对方程却不是很容易,且所得输出结果一经拷贝显示精确度较差。另外,PSPICE与MATLAB相比,其元器件库更齐全,而且可以从网上下载最新元件模型。但PSPICE元件模型没有明显标注管脚标号,这样,在・22・
因篇幅问题不能全部显示,请点此查看更多更全内容