做开关电源设计这几年,环路补偿一直是我觉得最“玄学”的部分,尤其是平均电流控制模式的BUCK变换器。很多人画好了功率级原理图,PCB也回来了,结果一上电输出电压震荡,或者动态响应稀烂,最后全卡在环路调试上。我自己也在这个坑里爬过不少次,从最初靠“试凑法”反复换RC,到后来老老实实推导小信号模型、按步骤设计补偿网络,走了不少弯路。这篇就把我实际做平均电流控制模式BUCK环路设计的完整思路写出来,包括原理、计算过程、仿真验证和实测中踩过的坑,给同样在做这个的朋友一个参考。
1. 平均电流控制模式BUCK变换器:它到底是什么,凭什么选它
1.1 三种常见控制模式的基本对比
BUCK变换器的控制方式,工程上用得最多的就是电压模式、峰值电流模式和平均电流模式这三种。电压模式只有一条电压外环,结构最简单,但响应慢,而且输入电压变化时相位滞后明显;峰值电流模式加了电流内环,动态响应好,但有个天生的毛病——占空比超过50%时容易出现次谐波振荡,需要额外加斜坡补偿,而且峰值电流对噪声比较敏感,抗干扰能力弱一些。
平均电流控制模式则是在电流内环里对电感电流做“平均值”控制,而不是峰值。它的电流环增益带宽可以做得很高,输出电流纹波抑制能力强,抗噪声性能也远好于峰值电流模式。最关键的是,平均电流模式天然没有次谐波振荡问题,占空比可以平滑越过50%,非常适合宽输入电压范围、大动态响应的应用场景。我在做服务器电源、通信电源这类对动态响应要求高的模块时,更倾向于选平均电流控制模式。
1.2 平均电流控制的环路结构拆解
整体来看,平均电流控制BUCK变换器包含两个环路:内环是电流环,外环是电压环。电压外环采样输出电压,经过误差放大器后产生电流基准信号;电流内环采样电感电流,与电压环给出的电流基准作比较,经过电流误差放大器后生成PWM调制信号,再由PWM比较器控制功率管的开关。
从控制理论角度看,电流内环实际上把功率级的电感“变”成了一个受控电流源,这样电压外环面对的就不再是带有LC双极点特性的功率级,而是一个近似单极点的对象。这个特性非常重要,它直接降低了电压环补偿的难度,让带宽和相位裕量更容易兼顾。这是平均电流控制模式在环路设计上最大的优势——把二阶系统退化成一阶近似系统,补偿网络用简单的PI或Type II就能获得很好的稳定性。
2. 平均电流控制BUCK的小信号建模与传递函数推导
2.1 为什么必须花时间做小信号建模
很多人会问,做环路设计一定要建模吗?我直接扫环路不行吗?我的经验是:可以扫,但你必须先建模。因为网络分析仪只能告诉你“哪里不稳定”,没办法直接告诉你“该往哪个方向补偿”。只有建立小信号模型,你才能算出主功率级的零极点位置,才能有的放矢地设计补偿网络的零极点去对消它们。
平均电流控制BUCK的小信号建模,主流方法是开关平均法(State-Space Averaging)。它的核心思想是:在一个开关周期内,用状态变量的平均值去替代瞬时值,从而把非线性、时变的开关电路等效成一个连续、线性的时不变电路,再在直流工作点附近做小信号线性化,得到传递函数。
2.2 CCM模式下BUCK功率级的控制到输出传递函数
先明确前提,以下推导均针对电感电流连续模式(CCM)。如果负载极轻进入DCM,传递函数会变化,环路特性也会变,这个后面在问题排查部分再讨论。
BUCK变换器在CCM下的控制到输出传递函数,即占空比到输出电压的传递函数,表达式为:
Gvd(s) = VIN × (1 + s/(2π·fZ_ESR)) / (1 + s/(2π·fP_LC·Q) + s²/(2π·fP_LC)²)
其中:
- fP_LC = 1 / (2π·√(L·C)),是LC滤波器的双极点频率
- fZ_ESR = 1 / (2π·C·ESR),是输出电容ESR引入的零点频率
- Q = R·√(C/L),是LC双极点的品质因数
从这个表达式可以看出,功率级的低频增益由VIN决定,中频段以-40dB/dec斜率下降,直到ESR零点之后恢复为-20dB/dec。如果直接在这个对象上做电压环补偿,你就必须在LC双极点附近想方设法提高相位,用Type III补偿器配置两个零点一个极点去对消,难度和工作量都比较大。
2.3 平均电流控制下的电流环等效模型
平均电流控制的关键在于电流内环的建模。电流环的功率级对象是从占空比到电感电流的传递函数,即:
Gid(s) = iL(s) / d(s)
推导过程略去中间步骤,直接给出CCM下的简化结论:
Gid(s) ≈ VIN / (R·(1 + s/(2π·fP_LC·Q) + s²/(2π·fP_LC)²)) × (1 + s·R·C·(1 + ESR/R))
这个传递函数里有一个位于右半平面的零点,频率为:
fRHPZ = R·(1-D)² / (2π·L)
RHP零点会带来相位滞后,是升压和升降压拓扑的主要设计难点。但BUCK拓扑的优势在于它没有RHP零点,这就让BUCK的平均电流控制环路设计比升压要简单得多,电流环可以设计得很宽。
电流环的开环传递函数还包括PWM调制器和电流采样网络的增益。PWM调制器增益通常为:
FPWM(s) = 1 / Vramp
其中Vramp是PWM比较器锯齿波的峰峰值。电流采样网络的增益由采样电阻Rsense和电流放大器增益共同决定,记为Rs。综合下来,电流环开环传递函数可以写成:
Ti(s) = GMOD × Rs × GEA_i(s) × Gid(s) × Hc(s)
其中GMOD = 1/Vramp,GEA_i(s)是电流误差放大器的补偿网络,Hc(s)是电流采样滤波引入的高频衰减。设计时,我们先确定功率级和采样增益,再选择合适的电流补偿网络GEA_i(s),使Ti(s)的穿越频率落在合适位置,同时保证足够的相位裕量。
2.4 电流环补偿的目标
电流内环的设计目标是让电感电流快速、准确地跟踪电流基准。为实现这个目标,需要电流环的穿越频率足够高,一般取开关频率的1/10到1/5左右。对于开关频率为200kHz的BUCK,电流环穿越频率可以设计在20kHz到40kHz。
同时,电流环的直流增益要足够大,这样才能保证平均电流跟踪的精度——即稳态时电感电流平均值与基准之间的误差足够小。电流环的相位裕量一般也要求大于45°,避免动态过程中电流环自身发生振荡。
3. 平均电流控制BUCK环路设计的实操步骤与计算过程
3.1 明确设计规格和边界条件
环路设计不能拍脑袋,第一步是明确所有边界条件。我以一个实际做过的项目为例,规格如下:
- 输入电压范围:VIN = 36V~72V(典型48V)
- 输出电压:VOUT = 12V
- 最大输出电流:IOUT = 10A
- 开关频率:fSW = 200kHz
- 电感:L = 22µH,饱和电流大于15A
- 输出电容:C = 100µF,ESR = 5mΩ
- 采样电阻:Rsense = 10mΩ
- PWM锯齿波峰峰值:Vramp = 2V
在设计补偿网络前,先计算一些基准参数。最大占空比Dmax = VOUT/VIN_min = 12/36 = 0.333,最小占空比Dmin = VOUT/VIN_max = 12/72 = 0.167。LC双极点频率fP_LC = 1/(2π√(22µH × 100µF)) ≈ 3.4kHz。ESR零点频率fZ_ESR = 1/(2π × 100µF × 5mΩ) ≈ 318kHz,这个零点远远高于LC双极点频率,所以它对穿越频率附近的相位提升作用有限,在电流环设计时需要特别留意。
3.2 电流内环设计:补偿网络计算
电流环的开环传递函数已经给出,现在需要设计电流误差放大器的补偿网络。平均电流控制中,电流误差放大器通常采用高增益宽带放大器,配合一个PI或Type II补偿网络。
我先设计电流环穿越频率。取fci = fSW/10 = 20kHz。在20kHz处,功率级Gid(s)的增益可以从波特图读取或计算。在LC双极点之后,Gid(s)以约-40dB/dec斜率下降,在20kHz处的增益大约为-6dB左右(继续推)。此时需要电流补偿网络在20kHz处提供约+6dB增益,使环路增益为0dB,同时补偿LC双极点引入的相位滞后。
电流环采用Type II补偿,其传递函数为:
GEA_i(s) = GA_i × (1 + s/(2π·fZ_i)) / (s/(2π·fP_i))
其中GA_i是低频增益,fZ_i是补偿零点,fP_i是补偿极点。补偿零点放在LC双极点附近,用于对消其相位滞后,即fZ_i ≈ fP_LC ≈ 3.4kHz。补偿极点放在开关频率附近或稍低,用于抑制高频噪声,取fP_i = 60kHz。
代入计算后,电流环穿越频率约20kHz,相位裕量约55°,满足稳定性要求。电感电流波形实测能很好地跟踪电流基准,动态过程无振荡。
3.3 电压外环设计:从受控电流源到电压环
电流内环设计完成后,电压外环面对的对象就简单了。从电流内环的输入端(电流基准)到输出电压的传递函数,近似为:
Gvi(s) = VOUT / ILOAD × 1 / (1 + s/(2π·fP_out))
其中fP_out = 1/(2π·RLOAD·C),是一个由负载电阻和输出电容决定的极点。在满载10A、12V输出时,RLOAD = 1.2Ω,fP_out ≈ 1.3kHz。在轻载时这个极点会向低频移动,例如1A负载时RLOAD = 12Ω,fP_out ≈ 130Hz。所以电压环的对象特性随负载变化很大,补偿网络必须保证在整个负载范围内都稳定。
电压环的穿越频率fvc一般取电流环穿越频率的1/10到1/5,这里取fvc = 4kHz。电压误差放大器同样采用Type II补偿,补偿零点放在输出极点附近,用于对消它带来的相位滞后。考虑到轻载时输出极点会降低,我习惯把补偿零点放在最低输出极点附近,保证轻载下充足的相位裕量。
3.4 电压环补偿网络的元件参数计算
电压环补偿网络采用运放加RC的形式,传递函数为:
GEA_v(s) = (1 + s·R2·C1) / (s·R1·(C1 + C2)·(1 + s·R2·C2))
其中R1是上拉电阻,R2和C1构成零点,C2构成高频极点。取R1 = 10kΩ,设计穿越频率4kHz,相位裕量60°,经过计算得到R2 ≈ 45kΩ,C1 ≈ 1.1nF,C2 ≈ 47pF。
这里我特别强调一点:理论计算给出的R2、C1、C2值只是起点,最终必须通过实际环路扫频测试微调。因为PCB寄生参数、运放带宽限制、采样电阻误差都会影响实际环路增益,实测值和计算值通常会有10%~30%的偏差。我的习惯是先按计算值焊接,实测后根据增益裕量和相位裕量微调,一般调一两轮就能收敛。
3.5 电流采样滤波和斜坡补偿的必要性
平均电流控制模式下,电感电流采样信号需要有足够的幅值和信噪比,否则电流环在轻载或小电流纹波时会出现抖动。解决方法是适当调整采样电阻位置,或者在电流放大器和PWM比较器之间加入一个高频滤波RC,截止频率放在开关频率附近,典型值取100kHz~500kHz。我在200kHz开关频率的BUCK上通常取150kHz的采样滤波截止频率,实测对PWM调制噪声的抑制效果很明显。
另外,平均电流控制虽然不像峰值电流模式那样必须斜坡补偿才能稳定,但是如果电流环增益过高,PWM比较器附近的高频噪声被放大后,也可能在开关切换沿产生误触发。这种情况下可以稍微增加一点斜坡补偿或减小电流环带宽,优先减小带宽,副作用更小。
4. 仿真是怎么帮我省掉三轮打板的
4.1 环路仿真工具与建模要点
环路设计过程中,仿真验证是必不可少的一环。我用过的工具有PSIM、SIMPLIS和LTspice,各有侧重。PSIM和SIMPLIS对开关电源环路仿真支持非常好,能够直接用平均模型或周期平均模型跑环路波特图,速度快,精度也够工程使用。LTspice胜在免费且模型库丰富,但需要自己搭平均模型或进行复杂的AC扫描配置,门槛高一些。
做环路仿真时,最容易犯的错误是直接跑瞬态仿真看输出波形是否稳定,然后凭感觉判断好坏。正确做法是用AC分析跑环路增益Bode图,直接看穿越频率和相位裕量。PSIM里可以用“环路增益测量”功能,在环路中某一点注入小信号扰动,软件直接计算出开环传递函数。SIMPLIS也可以做类似操作,而且SIMPLIS的周期平均模型能模拟实际开关过程,精度更接近实测。
4.2 从仿真曲线读出的关键信息
我在仿真中看到的一条典型电流环开环增益曲线是这样的:低频段增益很高,大约60dB以上,保证电流跟踪精度;然后以-20dB/dec斜率下降,在20kHz处穿越0dB;穿越频率附近相位裕量约55°,整个曲线在穿越频率之后继续下降,高频没有尖峰。这样的电流环设计就是健康的。
电压环仿真中,我最关心的是不同负载条件下的相位裕量变化。满载时相位裕量约65°,半载约58°,轻载约50°,整体都在45°以上,说明环路在全负载范围内都能稳定。如果发现轻载裕量低于40°,我就会把电压环补偿零点往低频方向移动一些,牺牲一点满载带宽换取全范围的稳定性。
4.3 瞬态仿真验证动态响应
除了AC分析,我还会跑负载阶跃瞬态仿真,评估动态响应性能。具体做法是让负载在1A和10A之间以1A/µs的速率跳变,观察输出电压的过冲和下冲幅度以及恢复时间。实测下来,带宽4kHz的电压环对的负载阶跃响应恢复时间大约在50µs左右,过冲约200mV,符合设计要求。
如果过冲偏大,可以适当提高电压环带宽或增加输出电容;如果恢复时间偏长,说明补偿零点位置可能需要调整。但注意,盲目提高带宽会减少相位裕量,增加不稳定风险,要权衡着改。
5. 实测验证:用网络分析仪给真实环路“拍CT”
5.1 实测工具与接线方式
仿真做得再漂亮,也替代不了实测。环路实测的主流工具是频率响应分析仪(FRA),比如Venable、AP300、OMICRON等,国内也有不少性价比高的国产FRA。如果没有专用FRA,也可以用信号发生器和示波器做简易扫频,但精度和动态范围差一些,只作为定性参考。
实测时需要断开反馈环路,在环路中注入一个小幅度的正弦扰动信号。常见的注入点有两个:一个是在输出电压反馈电阻分压器的上端,另一个是在误差放大器的输出端。我在BUCK变换器上习惯从反馈分压网络处注入,即断开反馈电阻与输出电压的连接,串入一个5Ω~50Ω的注入电阻,FRA的CH1接注入前,CH2接注入后,通过两个通道的比值得到环路增益。
这里有一个关键细节:注入信号幅度不能太大,否则会使电路进入非线性区,测出来的增益曲线会失真;但也不能太小,否则信噪比不足。一般从10mV起步,根据实际情况调整,我通常用20mV~50mV的注入幅度。
5.2 实测中看到的现象与调试方向
实测得到的环路增益曲线,通常和仿真曲线有出入,主要差别在于高频段。仿真里理想的运放模型在高频段是平的,而实际运放带宽有限,高频增益会滚降,导致实测的高频相位比仿真更低。这就要求在设计时留够相位余量,不能卡着45°设计,我一般按60°左右做目标。
另外,PCB布局对实测影响非常大。功率地和信号地如果没分开,开关噪声会耦合进反馈环路,使扫频结果在高频段出现毛刺,严重时甚至使相位曲线出现异常凸起。遇到这种情况不要急着改补偿,先把布局优化好,再测一遍环路。
5.3 一个实测实例的调试全过程
我之前调试一个48V输入、12V输出的BUCK,第一版按计算值焊接完补偿网络后实测,发现电压环穿越频率只有2kHz,比设计的4kHz低不少,相位裕量也只剩38°,明显不够。排查下来发现是反馈分压电阻的取值偏大,导致引入的极点使环路相位提前衰减。我把R1从20kΩ改成10kΩ,重新计算补偿参数后,实测穿越频率回升到3.8kHz,相位裕量提升到58°,问题解决。
类似这种“理论计算偏差”在实际调试中非常常见,不必恐慌,关键掌握调试方向:增益不够就加大补偿网络增益,相位不够就移动补偿零点或降低穿越频率,高频噪声大就加强采样滤波或改善布局。
6. 常见问题排查与设计避坑技巧
6.1 问题速查表:现象、原因、对策
做环路设计最怕的不是犯错,而是犯错之后不知道往哪个方向排查。我把这些年遇到的高频问题整理成一个速查表,按“现象→可能原因→解决对策”的格式列出来,方便大家参照。
| 现象 | 可能原因 | 解决对策 |
|---|---|---|
| 输出电压低频振荡(示波器可见明显正弦波动) | 电压环相位裕量不足 | 降低电压环穿越频率,或把补偿零点往低频移动 |
| 轻载振荡、重载稳定 | 轻载时输出极点向低频移动,补偿零点不匹配 | 补偿零点按最低负载条件设置,或用Type III补偿器增加零点 |
| 负载阶跃时恢复时间过长 | 电压环带宽太低 | 提高穿越频率,但需保证相位裕量 |
| 开关频率附近出现高频抖振 | 电流环带宽过高或采样滤波不足 | 降低电流环带宽,增加采样滤波电容 |
| 输出纹波大,但环路扫频正常 | 输出电容ESR过大或采样回路受开关噪声干扰 | 改用低ESR电容,优化采样走线 |
| 启动时输出电压过冲 | 软启动时间过短,或电压误差放大器饱和 | 增加软启动电容,检查运放供电和输出范围 |
6.2 平均电流控制DCM模式下的特殊处理
当BUCK变换器进入DCM模式时,控制到输出的传递函数会发生变化。DCM下功率级不再有LC双极点,而是变成一个单极点系统,且增益随负载变化。如果设计时只考虑了CCM,DCM下可能出现环路不稳定或动态响应变差。
应对策略有两种:一种是让变换器在最低负载时仍然保持CCM,即保证电感电流纹波小于两倍最小负载电流,通过增大电感来实现;另一种是在轻载时切换控制策略,比如进入突发模式或跳周期模式。对于平均电流控制,我倾向于选择增大电感值来保证全负载范围CCM,因为这样环路设计只需要考虑CCM下的模型,大幅简化设计复杂度。
6.3 运放选型与补偿网络的实现细节
电流误差放大器和电压误差放大器的选型直接影响环路性能。电流误差放大器要求带宽高、压摆率大、失调电压小,推荐选用单位增益带宽在10MHz以上的运放。电压误差放大器因为工作带宽较低,选择低偏置电流、低噪声的精密运放即可。
补偿网络中电容的选取也需要注意。C1通常采用C0G或NPO材质电容,温漂小,容值稳定;C2一般很小,几十皮法量级,用C0G材质即可。电阻选择1%精度金属膜电阻即可满足要求,但不建议使用绕线电阻,其寄生电感在高频段会影响补偿网络特性。
PCB布局上,补偿网络应紧靠运放引脚,走线尽量短;采样电阻应采用开尔文接法,直接连到电流放大器输入;反馈分压电阻的接地点应在负载输出电容的接地点,避免功率地和信号地混淆引入干扰。
6.4 关于“理想运放”与“实际运放”差距的两个提醒
第一,运放的输出摆幅有限。误差放大器的输出在极端负载下可能接近电源轨,这时候环路增益会下降,甚至进入非线性区。设计时要注意运放输出电压范围与PWM比较器输入范围匹配,一般会让误差放大器输出工作范围的中间区域,留有余量。
第二,运放的带宽会影响高频相位。我在设计中使用的是理想运放模型,但实际运放高频段相移明显,尤其当穿越频率超过运放单位增益带宽的1/10时,相位衰减就很可观了。所以做平均电流控制BUCK时,开关频率在200kHz级别,运放带宽最好选10MHz以上。
7. 写在后面的几条个人心得
做平均电流控制BUCK环路设计这么久,我最大的体会是:环路设计不是一个“算完就完”的静态过程,而是一个“建模→计算→仿真→实测→修正”的迭代过程。理论计算给出的是起点和方向,仿真帮你排除明显错误,实测才是最终裁判。三者缺一不可,很多新人以为会算传递函数就会做环路了,结果一上实测全崩,就是因为缺少仿真和实测的迭代打磨。
另外一点,环路的稳定性和动态性能是一对天然矛盾。想要响应快,带宽就得高,但带宽高了相位裕量就降,抗噪声能力也变弱。工程上不是追求某一项指标极致,而是要在稳定性、动态、噪声之间找到平衡点。这些年我习惯的做法是:先按理论值设计,再在实测中留出充足的裕量,最后根据系统实际需求去微调带宽,这样最稳。
如果在做的过程中遇到具体问题,比如补偿参数计算拿不准、实测曲线看不懂,欢迎下来交流。我也打算后续把峰值电流模式BUCK和升压变换器的环路设计一并梳理出来,那两种拓扑各有各的坑,尤其升压的RHP零点问题,值得单独写一篇细聊。