Buck 变换器的闭环回路设计之PID调节
已知Vin=20V,Vo=5V,R=1W~10W,fs=100kHz,根据这些参数设计一个ccm模式下的闭环buck变换器,使其纹波电压不超过输出电压的0.5%。
1.确定电容电感大小
根据张占松《开关电源原理与设计》上的公式计算所需电感和电容的大小。
Lc=(1-D)Rmax 2f代入数据可得Lc=37.5uH,为了保证buck工作在ccm模式下,选取电感大小为L=1.2L2=50uH。再根据以下公式
C³(1-D)Vo 8Lf2DVo可得电容大小为C³37.5uF,为了减小纹波电压,取C=500uF(电容的选取先通过这个公式确定一个初值,然后通过开环仿真确定其大小。根据开环仿真纹波电压大小,调整电容值。如果纹波电压过大,就加大电容,直到纹波电压在要求范围内。) 2. buck的开环仿真 假设电感dsr和电容esr分别为rl=0.25W和rc=0.01W。利用simplorer软件进行仿真,搭建如下电路。
图1 buck开环仿真电路图
设置pwm_switch的开关频率为100kHz,占空比D=0.25.最终得到电感电流和输出电压波形如下图所示。
Curve Infopk2pk0.7861avg0.43648.75TRL1.I7.506.255.00L1.I [A]3.752.501.250.000.005.0010.0015.0020.00Time [ms]25.0030.0035.0040.00 图2 开环buck电感电流波形图 6.00Curve InfoR1.VTRpk2pk0.0100avg4.36565.004.00R1.V [V]3.002.001.000.000.005.0010.0015.0020.00Time [ms]25.0030.0035.0040.00 图3 开环buck输出电压波形图
由图3知,当电路稳定时,输出电感电流的平均值为IL=0.4364A,电感电流的
1
峰峰值IPK=0.7861。显然有IPK 电感电流的波形图进行局部放大,可以发现 buck确实工作在ccm模式。纹波电压为0.01V,在要求的范围内。所以,对于仿真来说,所选取的电容和电感的大 小是合理的。 1.22Curve InfoL1.ITRpk2pk0.7861avg0.43641.000.75L1.I [A]0.500.250.00-0.2538.4538.4638.4838.5038.52Time [ms]38.5438.5638.5838.59 图4 开环buck电感电流局部放大图 3. buck闭环环路设计 参照TI的资料,可知开环buck的传递函数为 1+ G(s)=Vin1+1,w0=rcC1,Q=LCswz2ss+2Qw0w0 其中,wz=1,代入数据可得它们的值如下: L/C wz=2´105rad/s,w0=6.3246´103rad/s,Q=3.1623 开环Buck的开环传递函数粗略幅频特性曲线如下: 图5 buck开环传递函数粗略幅频特性曲线 利用在matlab下运行如下脚本: Vin=20;l=50e-6;c=500e-6;r=1;rc=0.01;rl=0.25; omeg0=1/(l*c)^0.5; omegz=1/rc/c; omegzl=rl/l; Q=r/(l/c)^0.5; G1=tf(Vin*[1/omegz 1],[1/omeg0^2 1/Q/omeg0 1]); margin(G1); 可得所设计的开环buck幅频相频特性曲线如下图所示: Bode DiagramGm = Inf , Pm = 12.4 deg (at 2.91e+004 rad/sec)4020Magnitude (dB)Phase (deg)0-20-40-60-800-45-90-135-180102103104105106107Frequency (rad/sec) 图6 开环buck幅频相频特性曲线 由上图可知,穿越频率为fc1=2.91´104/2/p=4.6kHz,开环buck的相位裕度为12.4°,小于45°,需要进行相位补偿。增益裕度为无穷大,不需要补偿了。 常用的补偿方式有比例补偿,PI补偿,PD补偿,PID补偿等等。我们只要选取一种补偿方式使其相位裕度大于等于45°,幅值裕度大于7db就可以了。 我们选取补偿后的穿越频率fc2= 1 fs=10kHz,对应的角频率为10 wc2=2pfc2=6.28´104rad/s,利用matlab的点捕捉功能,在图上捕捉出角频率 为wc2的点,如下图所示。 fc2= 1fs 10 Bode DiagramGm = Inf , Pm = 12.4 deg (at 2.91e+004 rad/sec)4020Magnitude (dB)0-20-40-60-800-45Phase (deg)-90-135-180102System: G1Frequency (rad/sec): 6.28e+004Magnitude (dB): -13.4System: G1345Frequency (rad/sec): 6.28e+004101010Phase (deg): -161Frequency (rad/sec)106107 图7 10kHz幅频相频点捕捉图 由上图可知,在频率为10kHZ处的相角为-161°。如果单单采用比例补偿,是不行的。因为采用比例补偿将开环buck的穿越频率由fc1增加到fc2后,此时的相位裕度为180°-161°=19°<45°,显然不行。频率为10kHZ处的相角为-161°,要是buck稳定,在此处的相角最小应该为-135°(此时对应的相位裕度刚好为45°),只有这样,最终的相位裕度才能大于等于45°。所以,应该找一个相频曲线有大于0的部分补偿网络对该buck进行补偿(这里采用PI补偿是不行的,有兴趣的可以自己尝试)。根据各类补偿网络的相频曲线可知,有PD、PID补偿网络的相频曲线存在大于0的部分。在这里,为了增大静态增益,我们选取PID 1 补偿网络对系统进行补偿(有部分)。 s 4.PID补偿网络的参数设计 采用PID补偿网络对我们的开环buck进行补偿,按照以下步骤就可以确定PID 补偿网络的各个参数。 1)首先将穿越频率调整到fc2= 1 fs处,具体计算方法如下: 10 还是使用点捕捉功能,在matlab画出的幅频相频曲线上捕捉角频率为wc2是的幅值,如图7所示,可得此时幅值为-13.4dB,所以补偿网络的应该在开环的幅频曲线基础上加上13.4dB(向上平移13.4个单位),使穿越频率额由fc1变成到fc2。平移多少个单位,也可以通过计算得来。计算很简单,如下: wc2=2pfc2=6.28´104rad/s Ac1-Ac2=-40dB/dec lgwc1-lgw2显然有Ac1=0(穿越频率过横轴),所以可得 wc12.91´104Ac2=-40lg=-40´lg=13.3(和13.4差不多) w26.28´104补偿网络的电路图如下: 图8 PID补偿网络电路图 由于取样电流一般为1mA左右,所以设置取样网络的两个电阻值 R1=4kW,R3=1kW 。取Vp=4V(Vp是三角波峰值,闭环网络传递函数里最终因 为三角波的比较环节会引入一个这里需要将它带上),则有: 1 的比例因子,也相当于一个比例环节,所以Vp 20lg R2 =13.3(or13.4)dB VpR1 所以R2=VpR1´1013.3/20=4´4´1013.3/20=74kW。将PID网络的比例系数P乘到开环buck传递函数里去得到的传递函数如下: R2 ´Vin R1´Vp1+1+swz 2 GP(s)= ss+2Qw0w0 在matlab中运行如下脚本 Vin=20;Vp=4;l=50e-6;c=500e-6;r=1;rc=0.01;rl=0.25; omeg0=1/(l*c)^0.5; omegz=1/rc/c; omegzl=rl/l; Q=r/(l/c)^0.5; R1=4e3; R2=74e3; Gp=tf(R2/R1/Vp*Vin*[1/omegz 1],[1/omeg0^2 1/Q/omeg0 1]); margin(Gp) 可以得到Gp的幅频相频曲线如下图所示: Bode DiagramGm = Inf , Pm = 19.2 deg (at 6.26e+004 rad/sec)60Magnitude (dB)40200-20-40-600Phase (deg)-45-90-135-180102103104105106107Frequency (rad/sec) 图9 传递函数Gp的幅频相频曲线 由上图可知,传递函数Gp穿越角频率为6.26´104rad/s,很接近10kHz,所以R2选择基本合理。此时相角裕度也增加到了19.2°,几乎与161°互补,说明计算正确。 2)提高静态增益 为了能够使用PID补偿网络提供开环buck的静态增益,又不影响到它的幅值裕度(为什么会影响到幅值裕度请观察PID补偿网络的相频曲线)。 因为PID补偿的相频曲线有个从-90°增加到0°的过程,而开环buck的相频曲初始有个从0°向180°减小的过程,如果把这个这两个过程叠加起来,可能为产生一个-180°的相角。这个-180°相角对应的频率所对应的幅值就是系统的幅值裕度的相反数。而在这两个过程中,PID补偿网络的幅值一直为正,开环buck的幅值也一直为正。这样一来,叠加后的幅值必然大于0,从而幅值裕度必然小于0,显然是不行的。因此,为了避免产生这种情况,我们应该选取合适的C2。根据PID补偿网络和Gp的相频曲线可知,如果我们使得下式成立,那么一定不会出现上文所说的那种情况。 10=w0 R2C2所以可得 C2= 1010 =F=21nF w0R26.3246´103´74´103 现在可将PID补偿网络的PI部分加入开环buck的传递函数中,得到的新传递函数如下: GPI= R2(1+R2C2s)1 ´´Vin R1R2C2sVp 1+1+ s wz 2 ss+2Qw0w0 根据这个传递函数的幅频相频曲线可以判断我们选取的R2,C2是否合理。 在matlab上运行如下脚本 Vin=20;Vp=4;l=50e-6;c=500e-6;r=1;rc=0.01;rl=0.25; omeg0=1/(l*c)^0.5; omegz=1/rc/c; omegzl=rl/l; Q=r/(l/c)^0.5; G1=tf(Vin*[1/omegz 1],[1/omeg0^2 1/Q/omeg0 1]); R1=4e3; R2=74e3; C2=21e-9; G2=tf(R2/R1*[R2*C2 1],[R2*C2 0]); GPI=series(1/Vp*G1,G2); margin(GPI) 可得传递函数GPI的幅频相频特性曲线如下图所示: Bode DiagramGm = Inf , Pm = 18.6 deg (at 6.26e+004 rad/sec)10050Magnitude (dB)Phase (deg)0-50-1000-45-90-135-180101102103104105106107Frequency (rad/sec) 由上图可得,GPI的穿越角频率为6.26´104rad/s,与GP的穿越角频率相同,接近10kHz。相位裕度为18.6°,相对于Gp的19.2°减小了0.6°,几乎可以忽略不计。这里没有出现我们上文说的幅值裕度为负的那种情况,说明我们的C2选择的基本合理。接下来,我们需要做的就是增大相位裕度,使其大于等于45°。 3)提高相位裕度 观察PID补偿网络的相频特性曲线可知,如果要提高开环buck的相位裕度,应该PID补偿网络的相频曲线上相角大于(45o-18.6o)=25.4o的部分加到fc2上,也就是有2pfc2³ 0.10.1。如果我们先取2pfc2=试试看,此时可确定C1的值如下: R1C1R1C1C1=0.10.10.1===0.4nF 2pfc2R1wc2R16.26´104´4´103 (注:这里取得wc2=6.26´104rad/s是因为GPI的穿越频率为6.26´104rad/s。当然,如果不喜欢这样取的话取6.28´104rad/s(10kHz)也无妨,应该不会相差太大)。经过PID补偿后,闭环网络的传递函数GPID如下: GPID= R2(1+R2C2s)(1+R1C1s)1 ´´Vin R1R2C2sVp 1+1+ s wz 2 ss+2Qw0w0 在matlab上运行如下脚本: Vin=20;Vp=4;l=50e-6;c=500e-6;r=1;rc=0.01;rl=0.25; omeg0=1/(l*c)^0.5; omegz=1/rc/c; omegzl=rl/l; Q=r/(l/c)^0.5; G1=tf(Vin*[1/omegz 1],[1/omeg0^2 1/Q/omeg0 1]); R1=4e3; R2=74e3; C1=2e-9; C2=21e-9; G2=tf(R2/R1*[R1*C1*R2*C2 (R1*C1+R2*C2) 1],[R2*C2 0]); GPID=series(1/Vp*G1,G2); margin(GPID) 运行完成后,可得GPID的幅频相频曲线如下图所示: Bode DiagramGm = Inf , Pm = 24.4 deg (at 6.27e+004 rad/sec)8060Magnitude (dB)Phase (deg)40200-20-400-45-90-135-180101102103104105106107108Frequency (rad/sec) GPID的穿越频角频率为6.27´104rad/s,接近10kHz,但是相角裕度为24.4°,偏小。我们在此基础上增大C1,相角裕度也会增加。调整C1的时候,最好在matlab下面建一个M文件,这样操作起来比较方便。建一个M文件格式如下(操作方法:点击matlab File/Script,M文件开头敲入 function BuckCompensatorPID (M文件中后面的逗号不要),换行,后面复制上面的代码。每增大一次C1值,点击一次运行,看相位裕度是否达到要求。 function BuckCompensatorPID Vin=20;Vp=4;l=50e-6;c=500e-6;r=1;rc=0.01;rl=0.25; omeg0=1/(l*c)^0.5; omegz=1/rc/c; omegzl=rl/l; Q=r/(l/c)^0.5; G1=tf(Vin*[1/omegz 1],[1/omeg0^2 1/Q/omeg0 1]); R1=4e3; R2=74e3; C1=2e-9; C2=21e-9; G2=tf(R2/R1*[R1*C1*R2*C2 (R1*C1+R2*C2) 1],[R2*C2 0]); GPID=series(1/Vp*G1,G2); margin(GPID) 最终取得C1=2nF,此时闭环buck的幅频相频曲线如下: Bode DiagramGm = Inf , Pm = 47.8 deg (at 6.68e+004 rad/sec)8060Magnitude (dB)Phase (deg)40200-200-45-90-135-180101102103104105106107Frequency (rad/sec) 由上图可知,闭环buck的穿越角频率为6.68´104rad/s,相位裕度为47.8°, 幅值裕度为无穷大,满足要求。至此PID补偿网络的参数全部计算完毕,下面我们开始进行闭环buck的仿真。 4. buck闭环仿真 闭环仿真电路仿真如下图所示: 电感电流波形如下图所示: 35.00Curve InfoL1.ITRpk2pk0.8864avg0.500830.0025.0020.00L1.I [A]15.0010.005.000.000.005.0010.0015.00Time [ms]20.0025.0030.00 电感电流峰峰值的0.5倍小于电感电流平均值,buck工作在ccm模式。将电感电流波形进行局部放大可得下图: Curve Infopk2pk0.8864avg0.50081.00TRL1.I0.80L1.I [A]0.600.400.200.0023.5923.6023.6223.64Time [ms]23.6623.6823.70 avg4.9992输出电压波形如下图所示: 8.75Curve InfoR7.VTRpk2pk0.01897.506.255.00R7.V [V]3.752.501.250.000.005.0010.0015.00Time [ms]20.0025.0030.00 纹波电压 DVo=0.0189V ,输出电压 Vo=4.9992V , DVo0.0189 ==0.0038=0.38%<0.5%,满足设计要求。 Vo4.9992 暴怒的小二(论坛ID:qiuseqian) 2013.11.6 因篇幅问题不能全部显示,请点此查看更多更全内容