仿真之前,先做简单的设定和计算:
输入电压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中添加元器件,绘制原理图了:
(1)v_pulse驱动开关
图1
(2)clock_l4驱动开关
图2
首先,我们要添加一个开关管,你可以添加一个真实的MOSFET,也可以用一个模拟开关替代,由于本示例仅仅是验证BUCK电路的原理,所以选择了模拟开关。在search检索栏中输入关键字switch确认,在检索结果中选择switch,analog SPST w/logic Enbl,双击添加到原理图中。
图3
图4
在原理图中双击该器件,打开属性栏,需要设置一些关键参数,ron即开关导通时的阻抗,此处保持默认值0.001Ω,roof即开关管关闭时的阻抗,此处保持默认值1megΩ(1兆欧),如果你想改变导通和关断阻抗也是可以的,还是那句话,随心所欲。ton和toff是两个关键参数,即开关管的开通时间和关断时间,表示开关管的开关速度,理论上我们希望开关速度越快越好,比如你可以设置为1ns(注意,必须大于0,所以不能设置为0),但是这两个值影响到saber仿真的时间步进,即saber仿真参数中的Min Time Step必须小于ron和roff,否则仿真进程会因为错误而无法进行。所以如果ron和roff设置的太小,仿真参数中的Min Time Step也必须设置很小,导致仿真速度很慢,需要等待很长时间才能结束仿真进程,尤其是在大型的系统仿真中,由于电路结构复杂,元器件多,saber的计算量很大,如果时间步进再设置的很小,可能需要几十分钟的时间来仿真一个几十毫秒的仿真进程。当然,您也可以泡一杯咖啡或一杯茶,悠闲的等待。在本示例中,为了节约时间,设置ron和roff为100ns。
添加了开关管之后,还需要添加一个驱动信号,由于我们使用的模拟开关是逻辑使能的,所以需要一个逻辑时钟信号来驱动它。
图5
在器件搜索栏中输入logic clock,双击搜索结果,添加到原理图中。然后再双击原理图中的器件,打开属性栏设置参数,有两个关键参数,
一个是freq,即频率,此处输入100k,默认单位是Hz,所以不需要画蛇添足的输入单位。此处再说明一下,saber的参数设置中,所有的参数都是有默认单位的,频率是Hz,时间是s,电压是V,电流是A,功率是W,以此类推,并不需要我们输入单位符号。
第二个参数是duty,即占空比,此处输入0.5。
或者:
在器件搜索栏中输入v_pulse,双击搜索结果,添加到原理图中。
图6
接下来,依次添加电感(关键字inductor搜索),电容(关键字capacitor搜索),二极管(关键字diode搜索)到原理图中,diode检索后选择diode,ideal,即理想二极管。
添加完成之后,修改必要的参数,电感修改参数栏的l值,输入12.5u,电容修改参数栏的c值,输入100u,二极管修改参数栏的Von值,输入0.3V(肖特基二极管的导通压降)。负载电阻的rnom值修改为1。
所有器件参数设置完成,进行仿真参数设置,如下:
图7
为什么要仿真10ms?是因为我们的开环电路,一开始就是0.5的占空比,电感电流为0,电容电压为0,会有一个震荡的过程,直到达到稳态值。
在这里我们希望看到的是稳态值,而不是震荡的过程,所以仿真进程设置10ms,以使时间长度足够观测到稳态值。
图8
仿真结果如上图所示,在经过1ms左右的震荡之后,电压和电流逐渐达到稳态值,输出电压为9.87V,与我们计算的10V有些误差,为何?因为在我们的电路中开关管有导通阻抗,二极管有导通压降,这是在计算时没有考虑的,所以仿真结果与计算值有些出入。
图9
在上图所示的时间轴上,如红色标记所示,鼠标左键按住不放,向右移动一段距离后松开,即可把此段时间内的波形展开:
图10
同样的方式继续展开时间轴,直到能够看到完整清晰的电感电流波形和电容电压波形,如下图所示:
图11
测量结果显示,电容电压纹波为0.05V,电感电流纹波为4.06A。如何进行精确的测量?
图12
如上图所示,在Tool中选择measurement tool,弹出菜单,点击measurement右边的可选框,弹出下拉菜单,选择levels中的peak to peak,即可测量峰峰值,同时可以看到菜单中的选项非常丰富,跟示波器的使用方法类似,可测量最大值,最小值,峰峰值,平均值等,在time domain选项中还可以测量各种跟时间相关的量。
至此,一个BUCK电路的开环仿真就完成了,你也可以尝试仿真BOOST,BUCK-BOOST等电路的开环仿真,用几分钟的时间,完成了一个电路的仿真,看到了和示波器中一样的电压或电流波形,效果是多么的美妙啊。
大部分的调试工作都是可以通过仿真来替代的。大部分的设计工作都是可以通过仿真来验证合理性和可行性的,一旦您掌握了仿真的方法,并能够熟练的使用,你将终生受益,你可以摆脱大多数低效的调试工作,可以节约大量的时间和精力,可以直观的看到你的设计结果,而不仅仅是计算书中的计算公式和枯燥的数字。
当你有一个对于电路的新的想法和思路,如果你要验证它,你可能要花费几天甚至几个月的时间去准备器件,焊板子,调试,直到获得结果。可是如果你用仿真的方法,也许几分钟就搞定了,并且通过更改电路和参数,许多灵感就会迸发出来。
对于很多无法通过精确计算来推算的电路,我们通过仿真就可以获得精确的结果,这对于非线性系统的解决方案而言,真是事半功倍啊,为什么要去求解复杂的矩阵方程?我需要的仅仅是结果而已,过程的推导留给大学老师吧。仿真可以让我们从复杂的计算中解脱出来,随心所欲的更改电路参数,然后获得直观的结果,当你掌握诀窍的时候,你可以让自己的开发效率提高十倍!