前面花了三节,把Buck推导出各级传递函数,只需乘以即可获得环路开环传递函数。
有没有办法验证它们是否正确?这一节就来做吧。
验证方法
我打算使用LTspice如下:
1、搭好电路
用分立器件建造Buck电路,设定好输入电压,选定好电感,电阻,电容等器件。
2.根据公式直接画波特图
根据前面推导的公式,我们可以直接列出电路开环传输函数的表达式。有了表达式,我们可以根据表达式直接绘制波特图。
3.测试波特图
我们直接模拟前面建造的buck电路,从FB输入小信号,测量环路的波特图,就像我们在现实中测试波特图一样。
4、对比
如果根据公式获得的波特图与测试的波特图相同,则表明我们之前推出的公式没有问题,即验证已完成。
下面开始验证
搭建buck电路
我们根据buck构建电路的系统框图如下:
锯齿波RAMP利用电压源生成,将锯齿波与放大和补偿后的信号进行比较PWM了。周期为10us,即开关频率为100Khz,也就是说,我buck开关频率固定为100Khz。
类似于我们常用的buck芯片,Vfb设定为0.8V,当我建造电路时,我想输出3.3V因此设定电压R3=10K,R2=31.25K,输出电压可根据分压计算:Vout=0.8*(1 R2/R3)=3.3V
R5=100K,C2=2.2nF我很随意,只是随意尝试了几个值,看输出电压可以正常输出我想要的值没有改变,兄弟也可以尝试其他值看。
除了电阻、电容和电感,图中还使用了它PMOS管Si高速比较器4403LT1720,放大器AD8031,这几个器件选型也并没有特别的挑选。不过需要注意,比较器不要用放大器替代,速度会不够,无法正确的产生PWM信号。
我们运行下,输出波形如下图
可见输出为3ms之后稳定在3.3V,与我们的设定值一致,说明建造的电路正常运行。
然而,可能会觉得输出电压刚上电就会飙升到8V有问题,这实际上是因为我们没有额外处理初始状态。另一方面,当我们只测量稳定状态时,我们只需要测量电源3ms后环路就够了,不影响我们的目的。
电路已经建成,然后进入第二步——根据公式获得波特图。
直接按公式画波特图
反馈级和误差放大级的传递函数表达式如下:
采样和放大补偿级的传递函数可以代入前面构建的电路,如下图所示:
前一章脉冲调制级传递函数Gpwm(s)传递函数表达式如下:
我们建造的电路的锯齿波幅值为12V,即VM=因此,调制级传递函数的表达式为:
根据上一节开关变换器的传输函数Gvd(s)可见,开关级传输函数Gvd表达式如下:
L是电感,C输出滤波电容器,Vi输入电压,R为负载。代入我们建造的BUCK电路,那就是L为L1=33uH,C为C1=100uF,R为R1=1Ω,即Gvd表达式为:
嗯,我们现在已经找到了四个级别的传输函数,我们把它们都乘以开环传输函数。
有了表达式,我们可以直接画出开环传递函数的波特图,这里可以直接使用LTspice我写了一篇小文章来介绍具体的方法,见下面的链接。
如何使用LTspice已知传递函数的波特图
我们使用LTspice直接绘制上述开环传输函数对应的波特图,需要代入电路图中的每个参数值(L1=33uH,C1=100uF,C2=2.2nF,R1=1Ω,R2=31.25K,R5=100K)。
最终波特图如下图所示:
从图中可以看出,穿越频率为5.56Khz
以上是计算开环传输函数的公式,然后根据公式直接绘制波特图。写作更冗长,主要是希望想亲自尝试的学生能按照步骤快速得到结果。
已经有了公式法,以下是通过测试获得波特图的方法。
波特图测试
使用LTspice得到波特图有点难。我在这里卡了很久,这也是我最近没有更新的原因之一,但最终在一位网友的帮助下解决了我的问题。
为了防止兄弟们在这一步卡住,我尽量说清楚。
波特图的测试原理实际上与我们在实际工作中测试仪器环路相同。
通过向环路注入正弦波小信号,然后测量输出信号,输出信号与输入信号范围的比值是环路的增益,两者之间的相位差是环路的相位移。
请注意,小信号的频率发生了变化,因为我们的波特图描述了不同频率下环路的增益和相移之间的关系。因此,我们需要测量大量的频点,分别测量每个频点对应的增益和相移,然后将它们连接条线,形成波特图。如果正弦波小信号只有一个频率,则只能得到一个点。
是不是有点类似?AD采样?要想得到非常平滑的曲线,就需要采样更多的点,这意味着采样率更高。
使用LTspice同样,如果参数设置不合理,模拟时间可能会特别长,这需要特别注意,我稍后会详细介绍。
现实中如何测试环路,我在哔哩哔哩看到了一段视频,说得很清楚。链接是这样的:
https://www.bilibili.com/video/BV1tt4y117vL?spm_id_from=333.337.search-card.all.click
有兴趣可以去看看,还不错
下面是视频的一章截图,测试原理是一目了然的了。
以上是波特图在实际工作中通过测试获得的原理。
下面进入正题:LTspice如何通过测试方法获得前面构建的?Buck电路波特图呢?
首先,在Vout在上述分压电阻之间添加一个电压源,以注入正弦波小信号。请注意,频率是变量freq,因为要测量很多频率点,幅度是20mV,不要太大,会影响电路的正常工作。
如下图所示:
如果你小心,你会发现我加了0.01Ω的电阻R4.加这个的原因是我踩的坑。如果没有,R4.然后网络a和网络out这是一个网络,以后执行时总是有问题,所以这个R4只起到隔离作用,不允许同一网络被取名两次。
右面的spice命令增加了很多,看起来有点,其实也不难,大致意思是这样的:
.measAavgavgV(a)-----测量a点电压平均值Aavg
.measBavgavgV(b)-----测量b点电压平均值Bavg
.measAreavg(V(a)-Aavg)*cos(360*time*Freq)-----测量a点交流电压实的平均值Are
.meas Aim avg-(V(a)-Aavg)*sin(360*time*Freq)-----测量a点交流电压虚部平均值Aim
.measBreavg(V(b)-Bavg)*cos(360*time*Freq)-----测量b点交流电压实平均值Bre
.measBimavg-(V(b)-Bavg)*sin(360*time*Freq)-----测量b点交流电压虚部平均值Bim
.measGainMagparam20*log10(hypot(Are,im)/hypot(Bre,Bim)) -----测量增益
.meas GainPhiparam mod(atan2(Aim,Are)-atan2(Bim,Bre)+180,360)-180-----测量相位
如果不懂也没关系,只需要将电路上面的2个测量点命名为a和b,然后将这一段spice命令粘上即可。
Freq是频率,是一个变量,因为会测量很多频率点。
.param t0=3m-----设置参数t0=3ms
.tran 0 {t0+20/freq} {t0}-----运行t0=3ms后开始测试,测试20个周期
.step oct paramFreq 1K 10K 4-----测量频率范围为1K~10Khz,每倍频程测量4个点
t0是系统开始运行到达到稳定状态所需要的时间长度。前面我们运行的时候,已经知道了3ms后系统达到稳定,所以我们这里设置为3ms。注意,不同的系统达到稳定的时间是不同的,要根据实际情况来。不过也需要注意,设置太长会造成仿真时间太长。
频率测量范围我选定的是1K~10K,之所以是这个范围,是因为我已经提前知道了穿越频率是5K左右,所以没有把频程设置很大,因为设太大会造成仿真时间比较长。当然,兄弟们可以自己改一改试一试。
仿真运行
一切准备就绪,我们运行一下,基于当前的设置,我计时了一下,运行时间大概是3分钟(不同电脑配置可能不同)。
运行过程中,我们可以在窗口左下方看到仿真进度,左下角可以看到Run:1/15;
15表示的是会测量15个频点,1表是正在测量第一个频点。
运行结束之后,波形窗口看不到任何波形,因为还需要操作下面几步:
1、在波形窗口点击鼠标右键,选择“View”菜单下面的“SPICE Error Log”
2、在弹出的log窗口里面,点击鼠标右键,选择“Plot .step’ed .meas data”,在弹出的窗口选择“是”
3、在弹出的窗口中点击鼠标右键,选择“View”菜单下面的“Visible Traces”
4、在弹出的窗口里面选择“gain”,就可以生成波特图了
生成的波特图如下:
以上就是采用测试的方法得到波特图的全过程了,有点繁琐,我也是折腾了比较久,感兴趣的同学可以自己玩一玩,相关源文件我文末会分享出来。
至此,公式直接画出的波特图和测试法得到的波特图都已经出来了,我们下面对比看看它们的差别。
波特图对比
可以看到,二者波形基本一样,验证了我们开篇的目的:我们推导的传递函数是正确的。
小结
本节内容就写到这里了,主要是使用LTspice进行仿真验证前面推导的公式,不过这个仿真相对于以前来说还是比较复杂的,需要折腾一下。
相关源文件我已经放到了网盘,可以在我的微信公众号“硬件工程师炼成之路”后台回复“炼成之路”。
东西有点多,文件放置在目录:电源/开关电源传递函数/Buck电源环路仿真实验验证