BUCK电路的环路计算,补偿和仿真
XiaJun2010-8-14
本示例从简单的BUCK电路入手,详细说明了如何进行电源环路的计算和补偿,并通
过saber仿真验证环路补偿的合理性。
一直以来,环路的计算和补偿都是开关电源领域的“难点”,很多做开关电源研发的工
程师要么对环路一无所知,要么是朦朦胧胧,在产品的开发过程中,通过简单的调试来确定
环路补偿参数。而这种在实验室里调试出来的参数真的能满足各种实际的使用情况吗?能保
证电源产品在高低温的情况下,在各种负载条件下,环路都能够稳定吗?能保证在负载跳变
的情况下收敛吗?
太多的未知数,这是产品开发的大忌。我们必须明明白白的知道,环路的稳定性如何?
相位裕量是多少?增益裕量是多少?高低温情况下这些值又会如何变化?在一些对动态要
求非常严格的场合,我们如何折中考虑环路稳定性和动态响应之间的关系?
有的放矢,通过明确的计算和仿真,我们的产品设计才是科学的,合理的,可靠的。
我们的目标是让产品经得起市场的检验,让客户满意,让自己放心。
一切从闭环系统的稳定性说起,在自动控制理论中,根据乃奎斯特环路稳定性判据,
如果负反馈系统在穿越频率点的相移为180,那么整个闭环系统是不稳定的。
很多人可能对这句话很难理解,虽然自动控制理论几乎是所有大学工科学生的必修课,
可大部分是是字体演变 抱着应付的态度的,学完就忘了。
那就再给大家讲解一下吧。
等式:Vout=[Vin-Vout*H(S)]*G(S)
公式:
Vout
Vin
GS()
1GS()HS()⋅+
G(S)/(1+G(S)*H(S))就称之为系统的闭环传递函数,如果1+G(S)*H(S)=0,那么闭环系
统的输出值将会无限大,此时闭环系统是不收敛的,也即是不稳定的。
G(S)*H(S)是系统的开环传递函数,当G(S)*H(S)=-1时,以S=j带入,即获得开环系
统的频域响应为G(j)*H(j)=-1,此时频率响应的增益和相角分别为:
gain=‖-1‖=1
angle=tan-1(0/-1)=180
从上面的分析可以看出,如果扰动信号经过G(S)和H(S)后,模不变,相位改变180,
那么这个闭环系统就是不稳定的。
但是,别忘了,这是负反馈系统,信号经过H(S)之后,本身就有180的相移,所以,
针对负反馈的闭环系统而言,其描述为:如果扰动信号经过系统主电路和反馈系统之后,其
模不变,相位也不变,那么这个系统是不稳定的。为什么相位也不变?因为G(S)*H(S)造成
的180相移和负反馈本身造成的180相移,两者叠加之后是360,所以等于相位不变。
什么是穿越频率?
G(S)*H(S)对应的增益为1(即幅值不变)的频率即为穿越频率。换算为dB单位:
20log1=0dB。
理论上来说,在穿越频率点上,只要相移不是180,那么系统就是稳定的。但是由于
模拟系统的离散性(即所有器件的特性都不是固定不变的,随时间和温度在不断的变化),
如果相移很接近180,这时闭环系统是条件稳定的,即有可能进入不稳定状态。所以为了
避免这种情况,要求在穿越频率点上,开环传递函数G(S)*H(S)的相移应该与180保持足够
的裕量。这个裕量选取多少比较合适呢?目前在工程应用上通常选取45,即要求传递函数
G(S)*H(S)的相移应该小于135,这是兼顾考虑环路稳定性和动态响应速度的折中值,理论
上来说裕量越大越好,但过大的相位裕量会导致动态响应变慢(过阻尼特性)。
为了保证足够的相位裕量,我们希望开环传递函数的增益曲线以-1的斜率穿越0dB线。
如果开环传递函数的增益曲线在穿越频率点的斜率为-2,那么意味着有接近180的相移,这
将导致相位裕量明显不足,而如果斜率为-1,那么通常意味着相位有45以上的裕量。
增益曲线的斜率是如何来的?主电路或反馈补偿电路中,每产生一个极点,开环传递
函数的增益曲线斜率在该极点的转折频率点上就会增加-1,相反的,每产生一个零点,开环
传递函数的增益曲线斜率在该零点的转折频率点上就会增加+1。
不同斜率下的相位裕量如下图所示:
从上图可以看出,如果开环传递函数以-2的斜率穿越0dB线,那么相移接近180,如
果以-1的斜率穿越0dB线,那么相移接近90。
从上图也可以看出,如果两者的穿越频率(fc)相同,那么在0Hz频率点上,-2斜率下降
的开环传递函数的增益远远大于-1斜率下降的开环传递函数,这有什么意义呢?这就是静
态增益,决定了输出值与给定值之间的静态误差。假如给定值是10V,希望输出也是10V,
以-1斜率下降的开环传递函数的静态增益是20dB,以-2斜率下降的开环传递函数的静态增
益是40dB,两者的输出静态误差分别为:10V*(1/10)=1V,10V*(1/100)=0.1V,可见
静态误差相差是多么巨大!所以,我们期望静态增益越大越好。
除此之外,开环传递函数的斜率还对动态响应有巨大影响。假如穿越频率fc依然相同,
一个开环传递函数的斜率为-1,另外一个为-2,负载从90%突然跳变到10%,那么此时的输
出电压必然会从一个稳态值变化到另外一个稳态值,这中间的暂态过程称之为动态响应。对
动态响应影响最大的是穿越频率fc,我们希望fc越大越好,当然为了避免开关频率对控制
环路的影响,fc必须远小于开关频率,一般取fc小于1/6的开关频率,一般的开关电源对
于动态响应要求并不十分苛刻,通常fc都小于开关频率的1/10。那么开环传递函数的斜率
对于动态响应有什么影响呢?
如下图所示:
从上图我们看到,开环传递函数斜率为-2的情况下,输出电压呈现明显的欠阻尼振荡,
输出电压快速达到下一个稳态值并过冲,随后围绕稳态值阻尼振荡。开环传递函数斜率为-1
的情况下,输出电压呈现明显的过阻尼特性,从一个稳态值缓慢的变化到下一个稳态值。
过阻一打一个成语 尼的缓慢变化和欠阻尼的多次振荡都不是我们想要的情况,我们希望动态发生时,
输出能够快速变化到稳定值,同时又不会产生反复的震荡。
那么我们可以结合上面的两种情况,对开环传递函数的斜率做出适当的变化,以达到
较快的动态响应速度。如下图所示:
从上图可以看出,在(1/2)fc频率处,开环传递函数的斜率由-2变成-1,可以达到较快的
动态响应,由于传递函数以-1的效率穿越0dB线,也可以获得足够的相位裕量。同时由于
从0Hz~(1/2)fc之间,开环传递函数以-2斜率衰减,可以获得很高的静态增益,从而使得静
态误差非常的小。
在这里需要说明的是,考核相位裕量,只需在穿越频率点的相位裕量足够就可以了,在
fc之前的相位裕量不必严格满足裕量要求。
通过上面的分析,我们已经对环路稳定性,相位裕量,动态响应有了初步的了解,下面
我们就要进入实例,来初步理解如何进行环路补偿的计算和仿真。
还是从最简单的拓扑——buck电路入手吧。
CCM情况下控制(占空比d)到输出(电压Vo)的小信号传递函数:
这个公式是怎么来的?
大多数的教材上都有推导过程,我们不需要知道如何去推导主电路的传递函数,这些已经被
研究的很透彻了,我们只需要拿过来用就可以了。在此推荐一下张兴柱博士的公司网站:
,张老师已经把常用拓扑的传递函数都推导出来并放在网站上面了。
下面开始计算,mathcad,不会用的请举手,们,时代在进步,要跟上潮流啊!
做简单的设定,输入Vg=20V,占空比0.5,输出10V,负载电阻1Ω,其他设定如下:
这是一个典型的低通滤波器,低频时增益保持不变,在LC产生的双极点处(频率为
1.16kHz),增益曲线以-2的斜率衰减,在电解电容的ESR产生的零点处(频率为4.5kHz),
增益曲线的斜率由-2变成-1。那么相位的变化情况如何呢?
看起来还不错,电容ESR引起的零点部分抵消了LC双极点导致的相移,使得在穿越频率
点上还保持足够的相位裕量:
从上面的计算中,可以获得主电路传递函数G(S)的穿越频率为7.2kHz,相位裕量为62.4。
看来我们不需要做补偿啊,穿越频率够大,在穿越频率点上传递函数增益曲线的斜率为-1,
相位裕量也大于45,只要让H(S)=1就可以保证开环传递函数G(S)*H(S)获得足够的相位裕
量。可是,静态增益实在太低了,只有26dB,我们要消除静态误差,就必须使得增益曲线
从0Hz开始就以-1或-2的斜率下降,补偿是不可避免的。
下面就几种典型的补偿方式做一下介绍:
1.单极点补偿
2.单零点补偿
3.单零单极补偿
4.双零单极补偿
5.单零双极补偿
6.双零双极补偿
根据以上的各种补偿电路,我们应该选择哪一个呢?
为了提高静态增益,我们需要在原点处产生一个极点,所以如果要做最简单的补偿,我们应
该采用单零单极补偿电路。
假如我们希望开环传递函数G(S)*H(S)的穿越频率为10kHz,而前面计算的G(S)的穿越频率
为7.2kHz,那么H(S)将把整体的穿越频率往后推延2.8kHz。
H(S)由两部分组成,一部分是我们需要设计的补偿环节K(S),另一部分是PWM的调制比,
即占空比与调制锯齿波电压幅值之间的比例,称之为Fm,如下图所示:
当V
E
=V
P
时,占空比为1,所以Fm=1/上嘴唇薄的男人 V
P
。
H(S)=K(S)*Fm,所以开环传递函数为:G(S)*K(S)*Fm。
K(S)*Fm在10kHz频率点的增益为20log(R2*Fm/R1),而G(S)在10kHz频率点的增益为:
,即-3.573dB。
所以有:20log(R2*Fm/R1)=3.573
假定V
P
=5V。
设定反馈分压电阻为Rf1=3kΩ图片带字 ,Rf2=1kΩ,如下图所示:
在小信号分析时,运放的正极接地,由于运放正负极之间的虚短特性,运放的负极等效
于接地,此时R
f2
被短接,R
f1
即为补偿网络的电阻R1,即R1=3kΩ。
据此可以求出:
R2=22.6kΩ
希望补偿电路的零点频率为1/2fc,即
可求出C1=4.425nF,取标准值4.7nF。
计算完成之后,让我们来看看补偿的效果吧:
根据计算结果,穿越频率为10.08kHz,相位裕量为60.6。
OK,计算完成了,结果是相当完美的,完全达到了我们的设计要求但是造句 ,那么仿真的情况会如
何呢?会与计算吻合吗?
下面就让我们通过saber的环路仿真来体验一下环路测试的效果吧。
不幸的是,我还无法实现闭环仿真来验证开环传递函数G(S)*H(S)的增益和相位曲线,幸运
的是,开环仿真还是可以进行的,我们可以分别对Fm*G(S)和K(S)进行开环仿真,与计算
结果进行对比和相互验证。
要实现频域的环路仿真,就必须用到saber中的环路扫描仪tdsa,它能够向环路注入频率可
变的正弦波信号,通过测试反馈信号,获得两者之间的增益和相位关系。
一共有5个脚需要连接相关的信号线,其中ON/OFF是tdsa的使能引脚,通过接入一个logic
clock就可以实现tdsa何时开始扫描,可是停止。Input(measure)的+-线分别接入需要测量
的回馈信号的正负引脚,output(source)的+-线分别接入信号注入点的正负引脚。
需要设置的属性,
fbegin:扫描起始频率
fend:扫描截止频率
ampl:注入信号的幅值(信号是以0为轴的正弦波)
npoints:从fbegin到fend总共需要扫描的频率点数
max_err:最大误差系数
mode:频率扫描执行的类型
max_nper:每个频点允许扫描的最大周期数
min_nper:每个频点允许扫描的最小周期数
min_tspp:每个扫描周期中允许的最少时间步进数
filter:选择是否需要对输入信号进行滤波
a0:滤波器的增益
f0:滤波器的品质因素
以上参数需要特别设置,其他的参数则不需改变。那么以上这些参数应该如何进行设置呢?
分别代表什么意思?
我们要测试开环特性,首先要向环路中的某一点注入频率连续变化的扰动信号,然后在环路
的另一点上测量回馈信号,通过对比两者的幅值和相位差就可以获得一定频段内注入点和反
馈点之间增益曲线和相位曲线。
那么通过source端向环路中的某一点注入频率连续变化的正弦波电压信号,其幅值就是
ampl,一般设置为0.1V即可,如果想测量准确,也可设置的大一点。
注入信号频率变化的范围由fbegin和fend决定,假如说我们想测量100Hz~100kHz之间的
开环特性,那么选择fbegin为100,fend为100k。
Tdsa如何扫描呢?即如何实现频率连续变化的信号注入呢?实际上频率是不可能连续变化
的,注入的信号还是离散的,即从一个频点间隔的跳到下一个频点,扫描的频点越多,间隔
越小,测试结果的准确性越高。在参数栏中,mode和npoints两个参数决定了扫描的频率间
隔形式,mode为扫描形式,npoints为总共需要扫描的频点数。Mode有三个可选项:linswp,
logswp,rlogswp。Linswp就是线性扫描,假定扫描频率从100Hz~100kHz,npoints为1000,
那么从100Hz~100kHz总共有99.9kHz的频谱宽度,每个频点间隔为99.9kHz/1000=99.9Hz,
注入信号的频率为100Hz,199.9Hz,299.8Hz,399.7Hz…100kHz。logswp就是以对数间隔的方式
进行扫描,100kHz/100Hz=1000,log1000=3,那么注入的信号频率为100Hz,100Hz*103/1000,
100Hz*103*2/1000,100Hz*103*3/10bob头 00…100Hz*103*1000/1000。至于rlogswp,我也没搞清楚是如何设
置的,大家有时间可以自己研究一下tdsa的使用说明书。对于两种扫描方式,虽然总的频点
数一样,但是linswp方式下频点之间的间隔是固定的,而logswp方式下,刚开始时频点之间
的间隔很小,越往后频点间隔越大。
另外的几个关键参数都跟仿真的精度相关,首先是max_err,即最大误差系数,在某一个频
率点上,tdsa向环路连续注入扰动信号,然后测量回馈的信号,对比增益和相位的变化,直
到获得稳定的值。如何判断是否达到稳定?即由max_err决定,将前面三个注入信号和回馈
信号的增益和相移取平均值,与当前注入信号和回馈信号的增益和相移对比,如果误差在
max_err限定的范围之内,即认为已达稳定状态,可以进行下一个频点的扫描。
Max_nper是在同一个频点上允许扫描的最大周期数,假如在同一个频点上扫描多次还没有
达到max_err限定的误差范围,而反复的扫描可能导致仿真周期变得很漫长,或者在某个频做梦梦到蛇是什么意思
点上由于电路某些参数设置不可能,根本就无法获得稳定值,那么这时候就需要跳过这个频
点,进入下一个频点进行扫描,max_nper即是允许tdsa在同一个频点扫描的最大次数,一
旦达到这个次数,即使还没有达到max_err限定的误差范围,也直接跳过这个频点,进入下
一个频点。
Min_nper,这是与max_nper对应的,即在同一个频点最少要扫描的次数,一般取大于3
Min_tspp,设定每一个扫描周期中的最小时间步进数,假如在频点10kHz,扫描一个周期是
100uS,那么希望100uS的正弦波尽量准确,就希望分段输入的波形光滑一些,所以需要设
定这段正弦波被分割的最少片段数,这个值设定的越大,波形越光滑,测得的相位越准确。
Filter,即是否要对tdsa的输入(input)信号进行滤波,默认是要滤波的,因为里面含有高
频开关纹波以及一些其他高次谐波,并不是我们环路扫描所需要的。
a0,滤波器的增益。
p0,滤波器的品质因素,滤波器的带宽由f0/p0,假如扫描频点为10kHz,p0为10,那么滤
波器的带宽为1kHz,即在input端将把9.5kHz~10.5kHz以外的信号滤掉。
以上参数解释完成之后,让我们来看一下实际的开环仿真电路经历挫折 吧。
为了开环仿真的需要,我们把K(S)和Fm之间的连接断开,即K(S)的输出不再作为Fm的
给定,而是通过在PWM生成比较器的正端直接输入一个固定的电压,从而获得一个固定的
占空,在本案例中,由于PWM的基波——锯齿波的幅值为5V,为了获得50%的占空比,
我们给定一个2.5V电压,如下图所示:
在2.5V给定电压上面,将tdsa的输出端(ouput)信号叠加上去,即为注入的扰动信号,将
输出端电解电容的电压接入tdsa的输入端(input),即为回馈春节作文三百字 电压信号。注入扰动信号使用
的是voltagesummer这个器件,它能够把参考地相同的两个电压信号相互叠加。
图中的运放选择理想运放,在器件搜索栏中输入opamp,在列表中选择opamp,level1这
个器件添加到原理中。比较器选择逻辑输出比较器,在器件搜索栏中输入comparator,在列
表中选择comparator,ideallogicout添加到原理图中。两个电解电容属性栏中的esr分别设
置为0.075,电感属性r设置为0.01。
设置t卤面的做法 dsa和logicclock参数如下:
Tdsa的使能信号使用logicclock,设置为:freq为1,duty为1,td为10ms,即频率为1,
占空比为1,延时10ms。为什么延时10ms才使能tdsa?因为仿真开始时有个暂态振荡的过
程,这是我们不想要的,所以需要避开这段时间。
Tdsa的参数如上图所示,起始频率从500Hz开始,因为如果起始频率低,仿真太耗时
间,一个100Hz的频率信号,周期是10ms,如果在该频点上扫描10个周期,时间就是100ms,
而为了仿真这100ms的运行周期,仿真程序可能要耗时几分钟,如此下来,仿真整个频段,
可能需要几个小时的时间。所以起始频点设置的大一点,仿真耗时将大大减小。但是要考虑
穿越频率的位置,起始频率必须小于穿越频率,否则环路扫描就没有意义了,因为你测不到
穿越频率和相关的相位裕量。在本案例中,估计穿越频率在几kHz,所以设置起始频率
500Hz,截止频率20kHz。
设置完成之后,运行operatingpoint/transient,进行参数设置,endtime输入1.2。为什么是
1.2s?其实这个结束时间越大越好,因为需要完成所有的频点扫描(共400个频点),扫描
的周期是比较长的,如果endtime不够的话,扫描就停止在endtime时间点上,不能完成整
个频段的扫描。比如我们估计一下,完成所有的频点扫描共需要3s,那么我们输入10,进
行仿真,并不是说仿真程序会在endtime达到10s时才结束,而是在tdsa完成所有扫描之后
自动结束,即完成20kHz频点的扫描后自动结束仿真程序。在本案例中,估计完成所有的
频点扫描,周期在1s以内,所以这里输入1.2。
由于开关的上升时间和下降时间分别设定为200ns,所以timestep设置为200n,mintimestep
设置为199n,maxtimestep设置为400n,这样仿真速度会稍微快一些。
设置完成之后,点击ok,仿真程序开始运行。
仿真运行以后,点击右上角的cmd图标,可以观察仿真程序目前的进度,如上图所示,在
仿真进行到10ms时,tdsa启动,开始扫描第一个频点500Hz。
如上图所示,仿真进度在90.81%时被tdsa结束,此时tdsa的所有频点扫描均已完成。
随后弹出cosmoscope仿真结果界面:
在signalmanager窗口点击openplotfiles框,弹出文件选择框,选择我们此次的目标文件,
其后辍为_tdsa,前面的test_为我们仿真文件的ac仿真结果,具体的取决于文件名。
在弹出的窗口中,双击AC_result,即可获得我们想要的增益曲线和相位曲线:
测量穿越频率约为2.68kHz,相移约为133.4。
那么,我们的计算结果如何呢?请看下面的结果:
结算结果显示,G(S)*Fm的穿越频率是2.733kHz,相移是135.1。
至此,计算和仿真的结果完全吻合。是不是有一种豁然开朗的感觉?
下面,我们再来仿真一下补偿环节K(S)的相位曲线和增益曲线吧。
由于仅仅仿真补偿环节的传递函数,所以不需要主电路部分,我们把它去掉,在反馈分压电
阻的输入端给定一个10V电压源,然后在这个电压源上叠加tdsa的输出信号output。
此处tdsa的属性设定要做更改,ampl更改为0.01,因为补偿电路是个信号放大环节,所以
注入的信号要非常的小,否则运放输出将会超过其供电电压范围。
仿真结果如下:
在10kHz频点,补偿电路的增益为17.5dB,相移为170.9。
下面通过mathcad计算补偿电路的增益曲线和相位曲线:
经过上面的计算和仿真,我们可以看到,无论是G(S)*Fm还是K(S),计算和仿真的结果都
是一致的,那么对于G(S)*Fm*K(S),虽然我们没有做仿真来验证,却可以确定,仿真的结
果与计算结果必然吻合。
计算和仿真完成之后,让我们再来看一下闭环时的负载动态效果吧。
这里我们需要用到一个动态电阻来模拟负载动态,在器件搜中栏中输入resistor,选择
resistor,PWL添加到原理图,设置属性如下:
打开属性栏,设置pwl属性如上图所示,意思是0~5ms内阻值为1Ω,在5ms~5.01ms之内
从1Ω变化到10Ω,即相当于负载电流在10us内从10A变化到1A,模拟的负载电流变化率
约为0.9A/us,负载从100%变化到10%。
点击确定,运行operationgpoint/transient仿真,endtime设置为10ms,因为不做tdsa仿真(tdsa
器件已经删除,运放输出作为PWM比较器的正向输入,系统闭环),10ms的仿真周期就足
够了,负载在5ms时发生突变。
仿真结果如下:
输出电压从一个稳态工作点到达下一个稳态工作点,需要大约0.6ms的时间,电压过冲幅度
为0.3V,其后快速回落,并经轻微的震荡后达到稳态工作点2。
从仿真可以看出,动态响应速度很快,过冲小,振荡少,完全能够满足要求。
至此,关于buck电路在CCM模式下的电压控制方式环路补偿设计,通过计算和仿真获得
了非常清晰的结果,通过这个案例,让大家明确环路补偿设计的方法和流程,让大家拨去心
头的迷雾,明明白白的设计我们的产品。
本文发布于:2023-03-23 01:21:58,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/1679505720349181.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:增益控制.doc
本文 PDF 下载地址:增益控制.pdf
留言与评论(共有 0 条评论) |