Boost升压电路在电源圈里算是个"入门容易、调好极难"的典型拓扑。很多人第一次搭Boost,开环跑一下波形挺漂亮,一上闭环就开始振荡、过冲、带载掉压,甚至炸管。问题往往不在功率级本身,而是出在控制环的设计上——尤其是电压环和电流环这两个环到底怎么分工、怎么配合、各自的带宽和相位裕度怎么留。这篇内容就是围绕"双环控制"这个核心,把Boost电路从功率级建模到双环参数整定的完整链路拆开讲一遍,适合已经能搭出基本Boost电路、但闭环总是调不稳的电源工程师,也适合正在做数字电源、想从单电压环升级到平均电流模式双环的开发者参考。
1. 为什么Boost电路单电压环总是调不好
1.1 右半平面零点:Boost绕不开的先天缺陷
Boost拓扑和Buck最大的区别,在于它有一个Buck没有的东西——右半平面零点(RHPZ)。这个零点不是设计失误带来的,而是拓扑本身决定的。当占空比增大、电感电流上升时,输出电容上的能量在开关管导通期间是被"切断"的,负载只能靠电容供电,所以输出电压在占空比突增的瞬间反而会先往下掉一下,然后才慢慢升上去。这个"先反后正"的响应,在频域上就表现为一个右半平面零点。
RHPZ带来的直接后果是:它给环路贡献的是相位滞后,而不是超前。普通左半平面零点能让相位往上抬,对稳定性有好处;但RHPZ只会让相位往下掉,而且幅度随频率增加而增大。这就意味着,Boost的环路带宽不能做得太高,必须把穿越频率压在RHPZ频率的1/3到1/5以下,否则相位裕度会被吃光,系统必然振荡。
RHPZ的频率估算公式是:
f_RHPZ = (1 - D)^2 * R_load / (2 * π * L)其中D是稳态占空比,R_load是负载等效电阻,L是电感值。举个例子,输入12V、输出24V,那么D≈0.5,如果L=10μH、负载2Ω,算下来f_RHPZ大约在(0.5)^2 × 2 / (2π × 10e-6) ≈ 7.96kHz。这个频率其实相当低,意味着你的电压环穿越频率可能只能做到2kHz左右。这就是为什么很多人用单电压环调Boost,一带载就振——带宽压不下去,RHPZ的相位滞后直接把裕度吃没了。
1.2 单电压环的补偿器设计困境
单电压环的结构很简单:采样输出电压,和基准比较,误差信号经过补偿器(通常是Type II或Type III),直接去控制占空比。问题在于,这个补偿器要同时承担两个任务:一是提供足够的低频增益保证稳态精度,二是把穿越频率压到RHPZ以下保证稳定。这两个需求本身是矛盾的——低频增益要高,意味着补偿器的积分作用要强,但强积分又会把相位往下拉。
更麻烦的是,Boost的功率级本身在低频段就有一个双极点(LC谐振),在CCM模式下这个双极点会带来180度的相位跌落。补偿器必须在这个双极点附近提供足够的相位超前把它补回来,同时还要应对RHPZ的滞后。一个补偿器要同时处理这两件事,设计余量非常紧张。
我实测过不少单电压环的Boost方案,在轻载和重载之间切换时,动态响应差异极大。轻载时RHPZ频率高,环路还算稳;重载时RHPZ频率骤降,相位裕度可能从45度掉到20度以下,输出就开始出现低频振荡。这种"负载相关的不稳定"是单电压环最头疼的地方。
1.3 电流环引入后到底改变了什么
双环控制的核心思路,是在电压环和占空比之间插入一个电流环。电压环不再直接控制占空比,而是输出一个电感电流的参考值;电流环则负责让实际电感电流快速跟踪这个参考值。这样一来,功率级的传递函数从"占空比到输出电压"变成了"电流参考到输出电压",而后者把电感这个储能元件"藏"进了内环里。
从控制理论角度看,电流内环把原本的二阶LC系统降阶成了一阶系统(近似),因为电感电流被内环强制跟踪参考,电感不再表现为一个独立的谐振元件。这就大大简化了外环补偿器的设计——外环面对的不再是双极点,而是一个单极点加一个RHPZ。相位裕度的压力小了很多,穿越频率也能做得更高。
另一个关键好处是逐周期限流。电流环天然知道电感电流的瞬时值,过流保护可以直接在电流环里做,响应速度是开关周期级别的,比电压环慢慢反应快得多。这对Boost这种输入输出没有直流通路、短路时电流会失控的拓扑来说,是保命的功能。
2. 双环控制的两种主流架构与选型逻辑
2.1 平均电流模式与峰值电流模式的本质差异
双环控制最常见的两种实现是平均电流模式(ACM)和峰值电流模式(PCM)。名字听起来接近,但工作机理差别很大。
峰值电流模式的做法是:每个开关周期,电感电流上升到电压环给出的参考值时,就关断开关管。它控制的是电流的"峰值包络",实现简单,只需要一个比较器。但它有个老问题——占空比大于50%时会产生次谐波振荡,必须加斜坡补偿。而且它采样的是峰值电流,不是平均电流,所以电流环的精度受纹波影响大,做PFC时输入电流波形会畸变。
平均电流模式则是:把电感电流采样回来,和电压环给出的参考做误差放大,误差信号再和三角波比较生成PWM。它控制的是电流的"平均值",需要电流误差放大器,电路复杂一些,但好处是电流跟踪精度高、抗噪能力强、不需要斜坡补偿,做PFC时输入电流THD可以压得很低。
| 对比项 | 峰值电流模式 | 平均电流模式 |
|---|---|---|
| 控制对象 | 电流峰值包络 | 电流平均值 |
| 是否需要斜坡补偿 | 需要(D>0.5) | 不需要 |
| 电流精度 | 受纹波影响大 | 高 |
| 抗噪能力 | 较弱 | 强 |
| 典型应用 | 中小功率DC-DC | PFC、高精度电源 |
| 实现复杂度 | 低 | 中高 |
选哪个,取决于你的应用。如果是几十瓦的普通升压,峰值电流模式够用,成本低;如果是要做PFC或者对电流波形质量要求高,平均电流模式是更稳的选择。我个人的经验是,只要功率超过100W或者有并网、PFC需求,直接上平均电流模式,后期调试省心得多。
2.2 电压外环的输出到底该是什么
很多人第一次做双环,搞不清电压环的输出应该是什么物理量。答案很明确:电压环的输出是电感电流的参考值。也就是说,电压环在"决定"电感电流应该有多大,才能把输出电压维持在目标值。
这个理解很关键,因为它决定了电压环的设计目标。电压环不需要快速响应,它的带宽通常做得很低(几十到几百Hz),主要任务是保证稳态精度和慢速调节。真正干"快活"的是电流环,电流环的带宽可以做到开关频率的1/10到1/6,响应速度是电压环的几十倍。
从传递函数角度看,电压环的补偿器设计时,被控对象是"电流参考到输出电压"的传递函数。在电流环带宽足够高的情况下,这个传递函数可以近似为一个单极点系统(由输出电容和负载电阻决定)加上RHPZ。所以电压环补偿器通常用Type II就够了,一个积分加一个零点,把穿越频率设在RHPZ的1/5以下,相位裕度留50度以上。
2.3 电流环带宽与开关频率的取舍
电流环的带宽不能无限高,它受限于开关频率。理论上,电流环的穿越频率最高可以做到开关频率的1/2(奈奎斯特极限),但实际工程中,为了抑制开关纹波和保证足够的相位裕度,通常取开关频率的1/10到1/6。
假设开关频率是100kHz,那么电流环穿越频率取10kHz到16kHz比较合适。这个带宽下,电流环对电压环来说"足够快",可以近似看成单位增益;同时又有足够的裕度,不会因为开关纹波和采样噪声而振荡。
这里有个容易被忽略的点:电流采样环节本身会引入相位滞后。如果是用采样电阻加运放,运放的带宽和采样电路的RC滤波都会贡献延迟;如果是用霍尔传感器,传感器的响应时间也要算进去。这些延迟在电流环带宽较高时会显著吃掉相位裕度。我一般会在设计时预留至少20度的额外裕度,专门应对采样链路的延迟。
3. 从功率级建模到补偿器参数计算
3.1 功率级小信号模型的推导要点
做双环设计,绕不开小信号建模。Boost在CCM模式下的小信号模型,核心是三个传递函数:占空比到电感电流的传递函数Gid(s)、占空比到输出电压的传递函数Gvd(s)、以及电感电流到输出电压的传递函数Gvi(s)。
以Gvd(s)为例,它的标准形式包含一个直流增益、一个LC双极点、一个RHPZ和一个ESR零点:
Gvd(s) = Vout/(1-D) * [1 - s*L/((1-D)^2*R)] / [1 + s/(Q*ω0) + (s/ω0)^2]其中ω0 = (1-D)/√(LC)是LC谐振角频率,Q是品质因数,RHPZ的位置就是分子里那个(1-D)^2*R/L对应的频率。这个模型是后续所有补偿器计算的基础,参数代入后就能画出波特图。
实际建模时,我建议直接用仿真工具(比如PLECS、PSIM或者Python的control库)把波特图画出来,比手算靠谱。手算容易在Q值和阻尼上出错,尤其是考虑电感DCR和电容ESR之后,手算的误差会比较大。
3.2 电流环补偿器的计算实例
假设一个具体案例:Vin=12V,Vout=24V,L=22μH,输出电容C=470μF,开关频率fs=100kHz,满载电流5A(负载电阻4.8Ω)。
先算稳态占空比:D = 1 - Vin/Vout = 1 - 12/24 = 0.5。
RHPZ频率:f_RHPZ = (1-D)^2 × R / (2πL) = 0.25 × 4.8 / (2π × 22e-6) ≈ 8.68kHz。
LC谐振频率:f0 = (1-D) / (2π√(LC)) = 0.5 / (2π√(22e-6 × 470e-6)) ≈ 1.1kHz。
电流环的被控对象Gid(s)在低频段近似为一个单极点系统,极点由电感决定。电流环补偿器通常用一个积分器加一个极点,把穿越频率设在10kHz左右。积分器的零点设在LC谐振频率附近(约1kHz),用来提供相位超前。
补偿器传递函数大致为:
Gc_i(s) = Ki * (1 + s/ωz) / (s * (1 + s/ωp))其中ωz = 2π × 1kHz,ωp设在开关频率的一半(50kHz)用来滤高频,Ki根据穿越频率10kHz处增益为1来定。具体计算时,先算出Gid在10kHz处的幅值,然后让补偿器在该频率的幅值等于它的倒数。
3.3 电压环补偿器的带宽压制策略
电压环的设计核心是"压带宽"。因为RHPZ在8.68kHz,电压环穿越频率必须压到它的1/5以下,也就是1.7kHz以内。我一般取1kHz左右,留足余量。
电压环的被控对象(在电流环闭环后)近似为:
Gv(s) = (电流环闭环增益) × Gvi(s)Gvi(s)是电感电流到输出电压的传递函数,低频时近似为R/(1+sRC),即一个单极点系统,极点由输出电容和负载决定。在满载4.8Ω、470μF下,这个极点频率是1/(2π×4.8×470e-6) ≈ 70Hz。
电压环补偿器用Type II:一个原点极点(积分)、一个零点、一个高频极点。零点设在70Hz附近抵消被控对象的极点,高频极点设在RHPZ附近(8kHz)用来衰减高频增益。穿越频率设在1kHz,相位裕度目标50度以上。
这里有个实操技巧:电压环的积分增益不要设太大。很多人为了让稳态误差小,把积分增益调得很高,结果穿越频率被推高,相位裕度不够。正确的做法是,先保证稳定性,稳态误差可以通过提高直流增益(但不推高穿越频率)来改善,比如在补偿器里加一个低频零点。
4. 数字实现中的采样、延时与限幅处理
4.1 电流采样时刻的选择与噪声抑制
数字双环和模拟双环最大的区别,是采样和计算都需要时间,会引入额外的延时。电流采样时刻的选择尤其关键。
在平均电流模式中,电感电流的采样应该在开关周期的中点进行,因为这时候电流正好等于平均值。如果在开关管导通或关断的瞬间采样,会采到纹波的峰值或谷值,引入误差。具体做法是:PWM周期计数器在周期中点触发ADC采样,采样完成后立即启动电流环计算。
采样噪声是另一个大问题。电感电流的纹波会在采样电阻上产生尖峰,尤其是开关管开关瞬间的di/dt噪声。我一般会在采样电阻两端加一个RC低通滤波,截止频率设在开关频率的1/2左右,既能滤掉尖峰,又不会引入太大相位滞后。如果噪声特别严重,还可以在ADC采样前加一个采样保持电路,或者用数字滤波(比如滑动平均)进一步处理。
注意:RC滤波的截止频率不能设太低,否则会吃掉电流环的相位裕度。经验值是截止频率不低于电流环穿越频率的5倍。
4.2 计算延时对相位裕度的影响
数字控制的计算延时,通常是一个开关周期(从采样到PWM更新)。这个延时在频域上表现为一个纯延迟环节e^(-sT),会贡献相位滞后。在电流环穿越频率10kHz、开关周期10μs的情况下,这个延时带来的相位滞后是:
φ_delay = -2π × f × T = -2π × 10e3 × 10e-6 = -0.628 rad ≈ -36度36度的相位滞后是相当可观的。如果电流环原本相位裕度是60度,加上这个延时只剩24度,接近不稳定边缘。所以数字实现时,电流环的穿越频率要比模拟实现时更低一些,或者用更快的采样和计算(比如用高优先级中断、DMA传输)来减小延时。
一个实用的做法是:用双采样双更新。也就是在一个开关周期内采样两次、更新两次PWM,这样等效延时减半,相位滞后也减半。很多现代MCU的PWM模块都支持这种模式,值得用上。
4.3 电流参考限幅与抗积分饱和
双环系统里,电压环的输出是电流参考,这个参考必须限幅。原因有两个:一是保护功率级,电感电流不能超过器件和电感的额定值;二是防止积分饱和。
当负载突变或者启动瞬间,电压环误差很大,积分器会快速累积,输出一个远超实际需要的电流参考。如果不限幅,电流环会试图跟踪这个不现实的参考,导致电感电流冲到极限,可能烧管。限幅之后,电流参考被钳在最大值,电流环稳定跟踪,系统进入"限流"状态,等输出电压慢慢爬升,误差减小,积分器退出饱和。
抗积分饱和的实现,通常是在限幅生效时,停止积分器的累积(或者把积分器往回拉)。具体做法是:当电流参考达到上限时,如果电压环误差仍然为正(说明还想增大电流),就冻结积分器;当误差反向时再恢复。这个逻辑在数字实现里就是几行代码的事,但不做的话,启动和突加负载时很容易出问题。
5. 实测调试:从波形异常反推环路问题
5.1 启动过冲与积分器初始状态
Boost启动时,输出电压从Vin开始上升,电压环误差一开始很大,积分器会快速累积。如果积分器初始状态没处理好,启动瞬间电流参考会直接冲到限幅值,电感电流猛增,输出过冲严重。
我的做法是:启动时先把积分器清零,并且让电流参考从一个较小的值开始爬升(软启动)。软启动的实现可以是在电压环参考上加一个斜坡,让参考电压从0慢慢升到目标值,这样误差始终不大,积分器不会饱和。软启动时间一般取几毫秒到几十毫秒,取决于输出电容和负载。
实测中如果看到启动时输出电压冲过目标值很多再回落,基本就是积分器饱和导致的。解决办法就是加软启动,或者用前面说的抗饱和逻辑。
5.2 负载阶跃下的振荡频率诊断
负载阶跃是检验双环稳定性的最好手段。突加负载时,输出电压会先掉一下,然后恢复;突卸负载时,会先冲一下再回落。恢复过程的振荡频率,能直接告诉你哪个环出了问题。
如果振荡频率在几百Hz到1kHz,通常是电压环的问题——穿越频率附近的相位裕度不够。这时候要检查电压环补偿器的零点和极点位置,看看是不是零点没抵消掉被控对象的极点,或者高频极点设得太低。
如果振荡频率在几kHz到十几kHz,那更可能是电流环的问题。检查电流环的穿越频率是不是太高,采样延时是不是没算进去,或者电流采样噪声太大导致电流环误动作。
如果振荡频率接近开关频率的一半,那基本是次谐波振荡,说明电流环的稳定性出了问题,可能是斜坡补偿不够(峰值电流模式)或者电流环带宽过高。
| 振荡频率范围 | 可能原因 | 排查方向 |
|---|---|---|
| 几百Hz~1kHz | 电压环相位裕度不足 | 检查电压环零点、高频极点 |
| 几kHz~十几kHz | 电流环带宽过高或延时过大 | 降低电流环穿越频率,检查采样延时 |
| 接近fs/2 | 次谐波振荡 | 检查斜坡补偿或电流环稳定性 |
| 低频大幅摆动 | 积分饱和 | 检查限幅和抗饱和逻辑 |
5.3 用频响分析仪验证设计
理论计算和仿真之后,最好用频响分析仪(比如Bode 100或者OMICRON的FRA)实测一下环路的开环波特图。实测能发现很多仿真发现不了的问题,比如采样延时、运放带宽限制、PCB寄生参数的影响。
实测时,在电压环的反馈路径里注入一个小信号(通常用变压器隔离注入),测量扰动和响应,就能得到开环增益和相位。重点看两个指标:穿越频率和相位裕度。穿越频率应该和设计值接近,相位裕度至少45度,最好60度以上。
如果实测相位裕度比仿真低很多,通常是延时或寄生参数导致的。这时候要么降低穿越频率,要么补偿延时。我遇到过好几次仿真裕度60度、实测只有30度的情况,最后查出来都是电流采样运放的带宽不够,换了个高带宽运放就好了。
6. 几个容易翻车的细节与个人经验
6.1 电感DCR和电容ESR对环路的影响
理论建模时,很多人把电感DCR和电容ESR当成理想值忽略掉,但实际电路中这两个寄生参数会显著影响环路。
电感DCR会在低频段引入一个零点,这个零点频率是DCR/(2πL)。如果DCR较大(比如几十毫欧),这个零点可能落在几百Hz,会改变低频增益和相位。电容ESR则会在高频段引入一个零点,频率是1/(2π×ESR×C),这个零点能提供相位超前,对稳定性有好处,但如果ESR太小(比如用陶瓷电容),这个零点跑到很高频,就起不到补偿作用了。
我的经验是:建模时一定要把DCR和ESR算进去,尤其是用电解电容做输出的场合。ESR零点如果落在穿越频率附近,能白送几十度相位裕度,设计时可以适当利用。
6.2 轻载DCM模式下的环路突变
Boost在轻载时会进入DCM(断续导通模式),这时候功率级的传递函数和CCM完全不同——LC双极点消失,变成一个单极点系统,RHPZ也消失了。这意味着轻载时环路其实更容易稳定,但如果补偿器是按CCM设计的,轻载时相位裕度会过大,响应变慢。
更麻烦的是CCM和DCM之间的切换点,环路特性会发生突变,可能导致切换瞬间的振荡。解决办法通常是让系统在轻载时也保持CCM(加假负载),或者设计一个在两种模式下都稳定的补偿器(牺牲一点动态性能)。
我一般会在调试时专门测一下10%负载和满载的阶跃响应,看看两种情况下有没有异常。如果轻载时响应明显变慢但稳定,那没问题;如果轻载时反而振荡,那就要检查是不是DCM下的模型和补偿器不匹配。
6.3 电流采样方案的选择与布局
电流采样方案直接决定电流环的性能。常见的有三种:采样电阻、霍尔传感器、电感DCR采样。
采样电阻精度高、成本低,但会带来额外损耗,而且采样的是开关管电流还是电感电流要分清楚。平均电流模式必须采电感电流,不能采开关管电流(因为开关管电流只有导通期间才有)。霍尔传感器隔离好、损耗低,但带宽有限、成本高。电感DCR采样无损,但精度受温度和DCR容差影响大,适合对精度要求不高的场合。
布局上,采样电阻的走线要尽量短,采用开尔文连接(四线制),把电流检测的两根线和功率走线分开,避免功率走线上的压降干扰采样。运放的输入要加RC滤波,但滤波电容要靠近运放引脚,不能放在采样电阻旁边,否则会引入额外电感。
提示:采样电阻的阻值选择要权衡。阻值大,信噪比好但损耗大;阻值小,损耗小但信号弱、易受噪声干扰。一般取使采样电压在满载时达到几十毫伏到一百毫伏的阻值。
6.4 数字控制中的定点与浮点取舍
如果用MCU做数字双环,定点还是浮点是个绕不开的选择。定点运算快、成本低,但需要仔细处理标幺化和溢出;浮点运算方便、精度高,但需要带FPU的MCU,成本高一些。
我的建议是:如果开关频率不高(比如50kHz以下),用带FPU的MCU做浮点,开发效率高,调试方便。如果开关频率很高(100kHz以上),计算时间紧张,那就用定点,但一定要做好标幺化,把所有变量归一化到[-1, 1]或者[0, 1]范围内,避免溢出。
定点实现里,积分器的累加是最容易溢出的地方。我的做法是给积分器加一个饱和限幅,累加值超过上限就钳住,同时配合前面说的抗积分饱和逻辑。这样即使参数整定得不太完美,也不会因为溢出导致系统崩溃。
7. 从双环到多环:这套思路还能怎么扩展
双环控制的这套方法论,其实可以扩展到更复杂的场景。比如三相PFC里,每个相都有独立的电流环,外面套一个统一的电压环,这就是典型的多环结构。再比如永磁同步电机的FOC控制,也是电流环(d轴和q轴各一个)加一个速度环,和Boost双环在控制思想上是一脉相承的——内环快速跟踪、外环慢速调节,内环把被控对象的非线性"藏"起来,让外环面对一个简化的线性模型。
理解了Boost双环的本质,再去看FOC的电流环、速度环、位置环三环结构,会发现底层逻辑是相通的。区别只在于被控对象的模型不同,补偿器的具体参数不同,但"内环降阶、外环压带宽"这个核心思路是不变的。
我在做多相Buck、双向Buck-Boost这些拓扑时,也是先把单相的电流环调好,再并联起来调均流环。均流环本质上也是一个慢速外环,带宽比电流环低一个数量级,思路和电压环完全一致。所以把Boost双环这一套吃透,后面遇到更复杂的多环系统,基本都能举一反三。
最后分享一个我调试时的小习惯:每次改完补偿器参数,不要只看稳态波形,一定要做负载阶跃和启动测试,并且用示波器抓电流环的参考和反馈波形。很多时候电压环看起来稳了,但电流环的跟踪其实有静差或者振荡,只是被输出电容滤掉了看不出来。把电流环的参考和反馈叠在一起看,跟踪好不好一目了然。这个习惯帮我提前发现过好几次潜在问题,比只看输出电压靠谱得多。