最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

环路控制增益的基础

来源:动视网 责编:小OO 时间:2025-09-24 10:38:51
文档

环路控制增益的基础

BUCK电路的环路计算,补偿和仿真XiaJun2010-8-14本示例从简单的BUCK电路入手,详细说明了如何进行电源环路的计算和补偿,并通过saber仿真验证环路补偿的合理性。一直以来,环路的计算和补偿都是开关电源领域的“难点”,很多做开关电源研发的工程师要么对环路一无所知,要么是朦朦胧胧,在产品的开发过程中,通过简单的调试来确定环路补偿参数。而这种在实验室里调试出来的参数真的能满足各种实际的使用情况吗?能保证电源产品在高低温的情况下,在各种负载条件下,环路都能够稳定吗?能保证在负载跳变的情
推荐度:
导读BUCK电路的环路计算,补偿和仿真XiaJun2010-8-14本示例从简单的BUCK电路入手,详细说明了如何进行电源环路的计算和补偿,并通过saber仿真验证环路补偿的合理性。一直以来,环路的计算和补偿都是开关电源领域的“难点”,很多做开关电源研发的工程师要么对环路一无所知,要么是朦朦胧胧,在产品的开发过程中,通过简单的调试来确定环路补偿参数。而这种在实验室里调试出来的参数真的能满足各种实际的使用情况吗?能保证电源产品在高低温的情况下,在各种负载条件下,环路都能够稳定吗?能保证在负载跳变的情
BUCK 电路的环路计算,补偿和仿真

Xia Jun 2010-8-14 本示例从简单的BUCK 电路入手,详细说明了如何进行电源环路的计算和补偿,并通过saber 仿真验证环路补偿的合理性。

一直以来,环路的计算和补偿都是开关电源领域的“难点”,很多做开关电源研发的工程师要么对环路一无所知,要么是朦朦胧胧,在产品的开发过程中,通过简单的调试来确定环路补偿参数。而这种在实验室里调试出来的参数真的能满足各种实际的使用情况吗?能保证电源产品在高低温的情况下,在各种负载条件下,环路都能够稳定吗?能保证在负载跳变的情况下收敛吗?

太多的未知数,这是产品开发的大忌。我们必须明明白白的知道,环路的稳定性如何?相位裕量是多少?增益裕量是多少?高低温情况下这些值又会如何变化?在一些对动态要求非常严格的场合,我们如何折中考虑环路稳定性和动态响应之间的关系?

有的放矢,通过明确的计算和仿真,我们的产品设计才是科学的,合理的,可靠的。我们的目标是让产品经得起市场的检验,让客户满意,让自己放心。

一切从闭环系统的稳定性说起,在自动控制理论中,根据乃奎斯特环路稳定性判据,如果负反馈系统在穿越频率点的相移为180°,那么整个闭环系统是不稳定的。

很多人可能对这句话很难理解,虽然自动控制理论几乎是所有大学工科学生的必修课,可大部分是是抱着应付的态度的,学完就忘了。

那就再给大家讲解一下吧。

等式:V out=[Vin-V out*H(S)]*G(S)

公式:Vout Vin G S ()1G S ()H S ()⋅+

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 。

为了保证足够的相位裕量,我们希望开环传递函数的增益曲线以-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)到输出(电压V o)的小信号传递函数:

这个公式是怎么来的?

大多数的教材上都有推导过程,我们不需要知道如何去推导主电路的传递函数,这些已经被研究的很透彻了,我们只需要拿过来用就可以了。在此推荐一下张兴柱博士的公司网站:WWW.hzpgkj.com,张老师已经把常用拓扑的传递函数都推导出来并放在网站上面了。

下面开始计算,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.6 kΩ

希望补偿电路的零点频率为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/1000…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),即为回馈电压信号。注入扰动信号使用的是voltage summer这个器件,它能够把参考地相同的两个电压信号相互叠加。

图中的运放选择理想运放,在器件搜索栏中输入op amp,在列表中选择op amp,level 1这个器件添加到原理中。比较器选择逻辑输出比较器,在器件搜索栏中输入comparator,在列表中选择comparator,ideal logic out添加到原理图中。两个电解电容属性栏中的esr分别设置为0.075,电感属性r设置为0.01。

设置tdsa和logic clock参数如下:

Tdsa的使能信号使用logic clock,设置为:freq为1,duty为1,td为10ms,即频率为1,占空比为1,延时10ms。为什么延时10ms才使能tdsa?因为仿真开始时有个暂态振荡的过程,这是我们不想要的,所以需要避开这段时间。

Tdsa的参数如上图所示,起始频率从500Hz开始,因为如果起始频率低,仿真太耗时间,一个100Hz的频率信号,周期是10ms,如果在该频点上扫描10个周期,时间就是100ms,而为了仿真这100ms的运行周期,仿真程序可能要耗时几分钟,如此下来,仿真整个频段,可能需要几个小时的时间。所以起始频点设置的大一点,仿真耗时将大大减小。但是要考虑穿越频率的位置,起始频率必须小于穿越频率,否则环路扫描就没有意义了,因为你测不到穿越频率和相关的相位裕量。在本案例中,估计穿越频率在几kHz,所以设置起始频率500Hz,截止频率20kHz。

设置完成之后,运行operating point/transient,进行参数设置,end time输入1.2。为什么是1.2s?其实这个结束时间越大越好,因为需要完成所有的频点扫描(共400个频点),扫描的周期是比较长的,如果end time不够的话,扫描就停止在end time时间点上,不能完成整个频段的扫描。比如我们估计一下,完成所有的频点扫描共需要3s,那么我们输入10,进行仿真,并不是说仿真程序会在end time达到10s时才结束,而是在tdsa完成所有扫描之后自动结束,即完成20kHz频点的扫描后自动结束仿真程序。在本案例中,估计完成所有的频点扫描,周期在1s以内,所以这里输入1.2。

由于开关的上升时间和下降时间分别设定为200ns,所以time step设置为200n,min time step 设置为199n,max time step设置为400n,这样仿真速度会稍微快一些。

设置完成之后,点击ok,仿真程序开始运行。

仿真运行以后,点击右上角的cmd图标,可以观察仿真程序目前的进度,如上图所示,在仿真进行到10ms时,tdsa启动,开始扫描第一个频点500Hz。

如上图所示,仿真进度在90.81%时被tdsa结束,此时tdsa的所有频点扫描均已完成。

随后弹出cosmoscope仿真结果界面:

在signal manager窗口点击open plotfiles框,弹出文件选择框,选择我们此次的目标文件,其后辍为 _tdsa,前面的test_23.ac为我们仿真文件的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%。

点击确定,运行operationg point/transient仿真,end time设置为10ms,因为不做tdsa仿真(tdsa 器件已经删除,运放输出作为PWM比较器的正向输入,系统闭环),10ms的仿真周期就足够了,负载在5ms时发生突变。

仿真结果如下:

输出电压从一个稳态工作点到达下一个稳态工作点,需要大约0.6ms的时间,电压过冲幅度为0.3V,其后快速回落,并经轻微的震荡后达到稳态工作点2。

从仿真可以看出,动态响应速度很快,过冲小,振荡少,完全能够满足要求。

至此,关于buck电路在CCM模式下的电压控制方式环路补偿设计,通过计算和仿真获得了非常清晰的结果,通过这个案例,让大家明确环路补偿设计的方法和流程,让大家拨去心头的迷雾,明明白白的设计我们的产品。

文档

环路控制增益的基础

BUCK电路的环路计算,补偿和仿真XiaJun2010-8-14本示例从简单的BUCK电路入手,详细说明了如何进行电源环路的计算和补偿,并通过saber仿真验证环路补偿的合理性。一直以来,环路的计算和补偿都是开关电源领域的“难点”,很多做开关电源研发的工程师要么对环路一无所知,要么是朦朦胧胧,在产品的开发过程中,通过简单的调试来确定环路补偿参数。而这种在实验室里调试出来的参数真的能满足各种实际的使用情况吗?能保证电源产品在高低温的情况下,在各种负载条件下,环路都能够稳定吗?能保证在负载跳变的情
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top