Saber电源仿真基础篇Word格式.docx
《Saber电源仿真基础篇Word格式.docx》由会员分享,可在线阅读,更多相关《Saber电源仿真基础篇Word格式.docx(15页珍藏版)》请在冰豆网上搜索。
![Saber电源仿真基础篇Word格式.docx](https://file1.bdocx.com/fileroot1/2023-1/9/afbea21a-5585-4f4b-83a4-8758db013d75/afbea21a-5585-4f4b-83a4-8758db013d751.gif)
schematic,进入原理图绘制画面,如下图所示:
在进入原理图绘制界面之后,可以按照我们自己的需要来绘制电路原理图。
首先,我们来绘制一个简单的三极管共发射极电路。
第一步,添加元器件,在空白处点击鼠标右键菜单getpart—>
partgallery
有两个选择器件的方法,上面的左图是search画面,可以在搜索框中键入关键字来检索,右图是borwse画面,可以在相关的文件目录下查找自己需要的器件。
通常情况下,选择search方式更为快捷,根据关键字可以快速定位到自己想要的器件。
如下图所示,输入双极型晶体管的缩写bjt,回车确定,列表中显示所有含有关键字bjt的器件,我们选择第三个选择项,这是一个理想的NPN型三极管,双击之后,在原理图中就添加了该器件。
依照此方法,我们先后输入voltagesource查找电压源,并选择voltagesourcegeneralpurpose添加到原理图。
输入resistor,选择resistor[I]添加到原理图(添加2个)。
输入GND,选择ground(sabernode0)添加到原理图,ground(sabernode0)是必须的,否则saber仿真将因为没有参考地而无法进行。
添加完器件之后,用鼠标左键拖动每个器件,合理布置位置,鼠标左键双击该器件,即可修改必要的参数,在本示例中,仅需要修改电压源的电压,电阻的阻值,其他的都不需修改。
然后按下键盘的W键,光标变成了一个十字星,即表示可绘制wire(连线),将所有的器件连接起来。
如下图所示:
其中电压源为12V,基极电阻为10k,集电极电阻为1k,共发射极连接。
选择分析方法,由于这是一个大信号系统,我们寻找的是一个静态直流工作点,因此我们选择下图所示的DCoperatingpoint,将basic中的displayafteranalysis项选择Yes,完成后点击OK。
直流工作点仿真结果如下:
三极管的基极电压为0.8422V,集电极电压为0.06869V,即深度饱和时,Vbe约为0.84V,Vce约为0.069V。
还有一种更为直观的方法,如同示波器一样观测每个节点的电压波形,如下图所示:
选择分析图标栏的第五项operatingpoint/transient,弹出窗口,进行参数设定。
在上图中的basic栏中,EndTime指的是仿真结束的时间,这个时间指的是电路运行的时间跨度,而不是仿真软件工作的时间,在本示例中,由于在系统中没有时变量和电容器,所以选择1us就足够了,默认单位为s,所以输入1u。
TimeStep指的是仿真软件计算步进,即从这个工作点到下一个工作点的时间跨度,在本示例中,由于没有瞬变量,选择100ns就可以了,输入100n。
MonitorProgress采用默认设置,PlotAnalysis选择下拉框中的Yes-replacePlot,表示每一次仿真之后,所有的仿真结果都更新为最新值。
在上图中,input/output一栏里,waveformatpins选择下拉框中的AcrossandThroughVariables,表示仿真结果同时含有电压和电流值,这样你既可以看电压波形,也可以看电流波形。
在右图的Transient选项栏里,DataFile的输入框中输入_,即下划线,表示仿真结果不以文件的形式输出(只保存在虚拟内存中),一旦关闭仿真软件,仿真结果将会丢失。
记住,这里一定要输入下划线,否则你的硬盘很容易被仿真结果文件填满,一个小的仿真结果文件都有几百M,稍大一点的都有几个G,还是节省一点吧,不要以文件形式保存在硬盘中了。
还需要设置integrationcontrol栏中的MaxTimeStep和MinTimeStep选项,这两个会影响仿真的速度,一个是最大步进,一个是最小步进,仿真的步进将在这两个值之间,这两个值取的越大,仿真软件的运行速度越快,但同样的会降低仿真的精度,导致结果可能失真。
同时,有一点必须注意,MinTimeStep必须小于Basic中设置的TimeStep,否则仿真软件会因为错误而终止仿真进程。
在本示例中,我们选择MaxTimeStep为200ns,MinTimeStep为99ns(小于TimeStep设定的100ns)。
以上参数设置完成之后,其他参数均保持默认值,点击OK,saber会运行仿真进程。
仿真结束之后,程序会打开cosmoscope界面,让我们可以观察所有节点的电压和电流波形。
如上图所示,在cosmoscope界面里,有两个对话框,第一个是signalmanager,其中显示所有可供选择的仿真结果文件,此文件保存在虚拟内存中,软件关闭后即丢失。
第二个对话框显示所选中的仿真结果文件中所有可供观察的节点,我们点击三极管q_3p.q_3p1的可选项,选择b和c,即基极b和集电极c的电压,分别双击,其波形显示如下:
选择测量选项,分别测得Vc为0.06869V,Vb为0.8422V,与DCoperatingpoint中分析的结果一致。
以上是一个简单的示例,下面我们再仿真一个稍微复杂一点的电路,用TL431和三极管共同构成的一个线性直流稳压电源,如下图所示:
添加TL431的方法与上面添加其他器件的一样,在空白处点击鼠标右键—>
getpart—>
partsgallery,然后输入tl431进行关键字检索,在搜索到的器件列表中选择tl431c,双击添加到原理图中。
这里还有两个简单的原理图绘制技巧,如果想添加某个器件,原理图中已有类似器件,比如说电阻,那么不必再去检索了,鼠标左键单击已有的电阻,这时器件颜色为绿色,表示已选中,然后用ctrl+C复制,鼠标左键再点击空白处,键盘ctrl+V粘贴,器件就添加完成了,修改其参数即可。
第二个就是旋转器件的角度,鼠标左键点击选中器件,鼠标右键点击弹出菜单栏,其中的rotate选项可以按照角度旋转器件,flip选项可以上下或左右翻转器件。
在本示例中,我们想做一个10V0.5A的线性电源。
输入电压12V,用TL431来控制输出电压值,反馈比例为1k/(1k+3k)=1/4,输出电压即为2.5V*4=10V,负载电阻为20Ω,输出电流为10V/20Ω=0.5A,假定三极管的Vbe为0.8V,那么TL431阴极电压为10V+0.8V=10.8V,TL431的工作电流在1mA~100mA之间,这里我们选择三极管集电极和基极之间的跨接电阻为50Ω,则流过该电阻的电流为(12V-10.8V)/50Ω=24mA,假定三极管的放大倍数为100,那么流入三极管基极的电流为5mA,流入TL431阴极的电流为19mA,满足TL431工作电流的取值范围。
首先来看一下DCoperatingpoint的分析结果:
n_9即为输出电压,其值为9.998V,与我们设计的10V输出电压吻合。
接下来用operatingpoint/transient来看一下各节点的电压波形:
以上波形基本上与设计值一致。
通过这个简单的例子,我们用几分钟的时间来仿真,可以替代几个小时的电路板焊接和调试的工作,是不是可以节约很多的时间呢?
接下来,我们的仿真工作要进入开关电源的领域了,先从最简单的BUCK电路开始吧,脑子里面不能立即勾画出BUCK电路的请举手,您可以从大学一年级重新开始学习啦。
仿真之前,先做简单的设定和计算:
输入电压20V,输出电压10V,那么稳态占空比是0.5。
输出电流10A,那么负载电阻是1Ω。
设定电流纹波系数为0.4,纹波电流峰峰值为10A*0.4=4A。
设定开关频率为100kHz,开关周期为10us,那么电感量为:
L=(20V-10V)*(10us*0.5)/4A=12.5uH。
电容根据经验值取100uF,电容的大小将决定输出电压纹波的大小,取的大一点,输出电压纹波小一点,大家可以自由选取,观察输出电压纹波的大小。
仿真的优点就是你可以随心所欲的选取你的参数,来观察不同的仿真结果,而不用劳心劳力的去焊板子调试,示波器观测。
参数计算完成之后,下面要在saber中添加元器件,绘制原理图了:
首先,我们要添加一个开关管,你可以添加一个真实的MOSFET,也可以用一个模拟开关替代,由于本示例仅仅是验证BUCK电路的原理,所以选择了模拟开关。
在search检索栏中输入关键字switch确认,在检索结果中选择switch,analogSPSTw/logicEnbl,双击添加到原理图中。
在原理图中双击该器件,打开属性栏,需要设置一些关键参数,ron即开关导通时的阻抗,此处保持默认值0.001Ω,roof即开关管关闭时的阻抗,此处保持默认值1megΩ(1兆欧),如果你想改变导通和关断阻抗也是可以的,还是那句话,随心所欲。
ton和toff是两个关键参数,即开关管的开通时间和关断时间,表示开关管的开关速度,理论上我们希望开关速度越快越好,比如你可以设置为1ns(注意,必须大于0,所以不能设置为0),但是这两个值影响到saber仿真的时间步进,即saber仿真参数中的MinTimeStep必须小于ron和roff,否则仿真进程会因为错误而无法进行。
所以如果ron和roff设置的太小,仿真参数中的MinTimeStep也必须设置很小,导致仿真速度很慢,需要等待很长时间才能结束仿真进程,尤其是在大型的系统仿真中,由于电路结构复杂,元器件多,saber的计算量很大,如果时间步进再设置的很小,可能需要几十分钟的时间来仿真一个几十毫秒的仿真进程。
当然,您也可以泡一杯咖啡或一杯茶,悠闲的等待。
在本示例中,为了节约时间,设置ron和roff为100ns。
添加了开关管之后,还需要添加一个驱动信号,由于我们使用的模拟开关是逻辑使能的,所以需要一个逻辑时钟信号来驱动它。
在器件搜索栏中输入logicclock,双击搜索结果,添加到原理图中。
然后再双击原理图中的器件,打开属性栏设置参数,有两个关键参数,一个是freq,即频率,此处输入100k,默认单位是Hz,所以不需要画蛇添足的输入单位。
此处再说明一下,saber的参数设置中,所有的参数都是有默认单位的,频率是Hz,时间是s,电压是V,电流是A,功率是W,以此类推,并不需要我们输入单位符号。
第二个参数是duty,即占空比,此处输入0.5。
接下来,依次添加电感(关键字inductor搜索),电容(关键字capacitor搜索),二极管(关键字diode搜索)到原理图中,diode检索后选择diode,ideal,即理想二极管。
添加完成之后,修改必要的参数,电感修改参数栏的l值,输入12.5u,电容修改参数栏的c值,输入100u,二极管修改参数栏的Von值,输入0.3V(肖特基二极管的导通压降)。
负载电阻的rnom值修改为1。
所有器件参数设置完成,进行仿真参数设置,如下:
为什么要仿真10ms?
是因为我们的开环电路,一开始就是0.5的占空比,电感电流为0,电容电压为0,会有一个震荡的过程,直到达到稳态值。
在这里我们希望看到的是稳态值,而不是震荡的过程,所以仿真进程设置10ms,以使时间长度足够观测到稳态值。
仿真结果如上图所示,在经过1ms左右的震荡之后,电压和电流逐渐达到稳态值,输出电压为9.87V,与我们计算的10V有些误差,为何?
因为在我们的电路中开关管有导通阻抗,二极管有导通压降,这是在计算时没有考虑的,所以仿真结果与计算值有些出入。
在上图所示的时间轴上,如红色标记所示,鼠标左键按住不放,向右移动一段距离后松开,即可把此段时间内的波形展开:
同样的方式继续展开时间轴,直到能够看到完整清晰的电感电流波形和电容电压波形,如下图所示:
测量结果显示,电容电压纹波为0.05V,电感电流纹波为4.06A。
如何进行精确的测量?
如上图所示,在Tool中选择measurementtool,弹出菜单,点击measurement右边的可选框,弹出下拉菜单,选择levels中的peaktopeak,即可测量峰峰值,同时可以看到菜单中的选项非常丰富,跟示波器的使用方法类似,可测量最大值,最小值,峰峰值,平均值等,在timedomain选项中还可以测量各种跟时间相关的量。
至此,一个BUCK电路的开环仿真就完成了,你也可以尝试仿真BOOST,BUCK-BOOST等电路的开环仿真,用几分钟的时间,完成了一个电路的仿真,看到了和示波器中一样的电压或电流波形,效果是多么的美妙啊。
大部分的调试工作都是可以通过仿真来替代的。
大部分的设计工作都是可以通过仿真来验证合理性和可行性的,一旦您掌握了仿真的方法,并能够熟练的使用,你将终生受益,你可以摆脱大多数低效的调试工作,可以节约大量的时间和精力,可以直观的看到你的设计结果,而不仅仅是计算书中的计算公式和枯燥的数字。
当你有一个对于电路的新的想法和思路,如果你要验证它,你可能要花费几天甚至几个月的时间去准备器件,焊板子,调试,直到获得结果。
可是如果你用仿真的方法,也许几分钟就搞定了,并且通过更改电路和参数,许多灵感就会迸发出来。
对于很多无法通过精确计算来推算的电路,我们通过仿真就可以获得精确的结果,这对于非线性系统的解决方案而言,真是事半功倍啊,为什么要去求解复杂的矩阵方程?
我需要的仅仅是结果而已,过程的推导留给大学老师吧。
仿真可以让我们从复杂的计算中解脱出来,随心所欲的更改电路参数,然后获得直观的结果,当你掌握诀窍的时候,你可以让自己的开发效率提高十倍!