ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

开关电源环路补偿:从零极点模型到PID参数实战

开关电源环路补偿:从零极点模型到PID参数实战 在电源工程师的圈子里环路补偿常年被归入“玄学”那一类。Bode图看不太懂就拿着示波器死磕负载瞬态看到一个波形漂亮就收工换个输入电压又啸叫再胡乱改补偿电容。我早期做同步Buck电源时也是这个状态直到后来把零极点、开关电源环路、PID补偿器这几个概念串成一条线才明白之前的很多尝试都是在瞎试。这篇文章想做的就是把这条线完整讲清楚从功率级的零极点模型开始到PID补偿器每个零极点该放哪里再到一个12V转3.3V Buck项目的完整设计过程最后是实测里那些书本上不会告诉你的坑。1. 控制环路在稳什么穿越频率、相位裕度与增益裕度1.1 为什么时域调试解决不了环路问题很多做电源的同行第一次接触环路补偿时的反应都是输出接一个电子负载来回切换电流看示波器上的输出电压波形。过冲大就加电容振铃就调电阻调到波形“看起来”对了就算完成。这种做法在固定输入、固定负载的实验桌上可能没问题但产品一旦面对不同批次电容、不同负载范围就开始出幺蛾子。原因在于反馈环路本身是一个频域系统。输出电压从采样、误差放大、到占空比调制再经过LC滤波器回到输出这个闭环回路里每个环节都带有频率相关的增益和相位。某个频点下如果环路的附加相移接近-180°负反馈就变成了正反馈系统自然就振荡。示波器只能看到振荡的结果看不到频域上“为什么会振荡”的原因。所以我做电源这些年最核心的转变就是不再问“这个电容该加多大”而是问“这个频率点上的相位还有多少余量”。有相位余量系统就是稳定的没有余量调再多元件也只是碰运气。1.2 穿越频率、相位裕度、增益裕度到底在说什么控制环路的稳定程度归根到底由三个参数决定穿越频率、相位裕度、增益裕度。这三个参数是评估任何反馈系统是否可靠的核心。穿越频率记为fc指环路增益幅度降到1也就是0dB时的频率。它决定了电源的动态响应速度。fc越高系统对负载突变的响应越快但太高会把开关噪声和寄生参数引入环路导致意想不到的不稳定。工程上模拟控制通常取开关频率的1/10到1/5数字控制因为有计算和PWM更新延迟一般更保守取1/20到1/10。相位裕度记为PM指在穿越频率fc处环路相位距离-180°还有多少余量。PM小于0°系统必然振荡0°到30°之间属于“脆弱的稳定”负载阶跃时会明显振铃45°到70°是工程上比较舒服的区域兼顾动态响应和稳定性超过80°系统虽然绝对稳定但响应很迟钝反而让人觉得“拉不动”。增益裕度记为GM指当环路相位达到-180°时增益幅度离0dB还有多远。它相当于系统失稳前的最后一道保险一般要求大于6到10dB。电压模式Buck的LC滤波器在谐振频率附近往往有一个高Q峰值这个峰值最容易吃掉增益裕度很多振荡问题其实发生在增益裕度上而不只是相位裕度。1.3 “试波形调参”最大的坑零极点会随工况移动回到开头说的问题——为什么在实验桌上调好的参数批量生产后就不行了因为功率级的零极点位置不是固定的。负载电流变化输出电阻就变化功率级极点位置跟着跑输入电压变化占空比和调制器增益也变化。那些“碰运气调出来”的参数可能只在某个特定工况下零极点恰好配平一旦工况偏移系统就跌出稳定区。所以我现在的习惯是设计阶段先把功率级的零极点算清楚再让补偿器的零极点去对消和重塑最后用频响仪验证全工况范围的Bode图。这篇文章后面讲的就是这条方法的完整落地过程。2. Buck功率级的零极点地图从LC双极点到电流模单极点2.1 电压模式CCM下Buck功率级其实是二阶系统很多工程师对Buck功率级的理解还停留在“输出滤波电容稳压”这种粗浅层面但如果要用环路补偿就必须把功率级小信号模型看明白。以最基础的电压模式控制、电感电流连续CCM为例从占空比到输出的传递函数是Gvd(s) Vin × (1 s / ω_ESR) / (1 s / (Q×ω0) s² / ω0²)这个式子看久了会晕拆开看只有三样东西ω0 1 / √(L×C)这是LC谐振双极点的自然角频率。在Buck电路里电感和输出电容构成一个二阶低通滤波频率高于f0后增益以-40dB/dec的速度滚降远高于f0后相位最多滞后180°。这是电压模式Buck最难补偿的原因。Q R_load × √(C / L)这是LC谐振的品质因数。负载越轻R_load越大Q越高谐振峰越尖相位在f0附近的变化也越剧烈补偿器要在很短频率跨度里把相位拉回来就越困难。ω_ESR 1 / (ESR × Cout)这是输出电容寄生电阻贡献的零点。它的作用是给功率级增益“踩一脚刹车”把-40dB/dec的滚降恢复成-20dB/dec同时提供最多90°的相位提升。这个零点很多人忽略但它恰恰是后面补偿网络设计的重要参考点。2.2 L和C都定了零极点位置究竟在哪儿拿一个常见组合来算L 4.7μHCout 2 × 47μF的MLCC并联总额94μFESR按10mΩ估算。f0 1 / (2π√(L×C)) ≈ 1 / (2π√(4.7e-6 × 94e-6)) ≈ 7.6kHzQ在满载3A时大约是4.9轻载时更大。这说明LC双极点附近会有一个明显的谐振峰相位在f0前后变化非常急剧。ESR零点频率按公式算f_ESR 1 / (2π × ESR × Cout) ≈ 1 / (2π × 0.01 × 94e-6) ≈ 169kHz也就是说ESR零点跑到169kHz去了。这个位置在大多数情况下比穿越频率高很多意味着它对低频段的补偿帮助有限。这也是为什么全陶瓷电容的Buck电路经常出现高频增益偏高的问题——人家电解电容自带一个低ESR零点在中频就能帮补偿器抬相位MLCC则把这个零点推得很远等于少了一张牌。2.3 峰值电流模式是“假单极点”系统大多数商用Buck控制IC都是峰值电流模式或谷值电流模式内部先闭环了电感电流再把输出电压当作慢变量来调节。这种结构最大的好处是电感不再直接参与主环路动态功率级从二阶系统降为一阶。电流模式Buck的功率级传递函数可以近似写成Gvc(s) G0 / (1 s / ωp)其中ωp 1 / (R_load × Cout)。以12V转3.3V、3A负载为例R_load1.1ΩCout94μFfp 1 / (2π × 1.1 × 94e-6) ≈ 1.54kHz。相比电压模式下7.6kHz的LC双极点电流模式把极点压到更低的1.5kHz附近而且只有一个极点相位只滞后90°。这就是为什么电流模式Buck用一个Type-II补偿器一个零点一个高频极点就能稳定工作电压模式却需要更复杂的Type-III。但要留意电流模式也有自己的坑电流内环的采样-保持效应会在开关频率一半附近引入一对高频双极点占空比超过50%后还容易发生次谐波振荡。工程上用斜坡补偿来压制这是在设计补偿网络之前必须先确认的事情。DCM模式下功率级更是退化成一个由负载决定的单极点系统表面上特别好补偿但DCM和CCM切换瞬间的极点跳变会让环路表现忽好忽坏边界工况一定要单独验证。反激电源也一样沿用这套“先找功率级零极点再用补偿器去配平”的思路只是它的功率级会有右半平面零点处理起来又是另一个话题。3. PID补偿器拆解积分极点、RC零点和高频极点的分工3.1 补偿器的传递函数骨架电源环路里的PID补偿器最通用的形式是Type-III也就是“三型补偿器”传递函数长这样C(s) K × (1 s/ωz1) × (1 s/ωz2) / [s × (1 s/ωp1) × (1 s/ωp2)]拆开看它包含一个积分器分母上的s、两个零点z1、z2和两个高频极点p1、p2。Type-II就是把第二个零点z2和第二个极点p2去掉留下一个零点、一个积分器、一个高频极点。很多人在面包板上看到运放周围一堆RC网络就头疼其实每个元件对应传递函数里的一个零极点搞清楚了就是一一对应的事。3.2 积分极点稳态精度的保证也是相位负担为什么补偿器一定要有积分器因为电源要求静态误差为零。积分器在直流频率的增益无穷大输出电压哪怕只偏离参考电压一点点误差放大器也会持续累积输出直到把占空比推到让输出回到参考电压为止。但积分器是一把双刃剑。它在整个频段都贡献-90°的相位滞后从0.01Hz开始就一直在拖累相位裕度。没有零点去对冲的话积分器加上功率级本身的滞后穿越频率处的相位早就跌破安全线了。所以补偿器的零点不是“可选的增强项”而是“必须的纠偏项”。3.3 RC串联零点为什么它既抬增益又抬相位先看一个最简单的RC串联支路传递函数是H(s) 1 sRC 1 s/ωzωz 1/RC把s换成jω幅度和相位分别是|H(jω)| √(1 (ω/ωz)²)∠H(jω) arctan(ω/ωz)频率远低于ωz时幅度约等于1相位接近0°频率远高于ωz时幅度以20dB/dec上升相位趋近90°。也就是说这个零点在频率越过ωz后既抬高了增益又把相位往前拉。放到补偿器里看效果就很有意思了。补偿器本身有积分器增益曲线从低频开始以-20dB/dec滚降相位恒为-90°。当你加入一个零点从零点频率开始滚降斜率从-20dB/dec变成0dB/dec相当于在目标频段把增益“止跌”这比不加零点时高出整整20dB/dec相位则从-90°向0°回升在零点频率处回升到-45°到10倍零点频率时基本回到0°。物理上也好理解RC串联网络在低频时以电容为主容抗大、相位滞后高频时电阻主导阻抗平坦、相位滞后消失。如果你把这个RC网络放在误差放大器的反馈支路里中高频的反馈电流不再继续衰减增益自然就被抬了出来相位滞后也相应减轻。工程上放置零点有一条经验零点要放在需要补相位的频率之前。如果你希望穿越频率处有50°以上的相位裕度零点频率至少要低于穿越频率一个十倍频程左右。实际做电流模式Buck时第一个零点通常就放在功率级主导极点的附近或略低也就是0.5到1倍fp处。3.4 高频极点和第二个零点一个压噪声一个救电压模式零点负责“抬”极点负责“压”。补偿器加高频极点的目的是限制高频段的增益避免开关纹波和带外噪声被误差放大器放大后打回控制环路。这个极点如果放太低在穿越频率附近就会引入额外相移吃掉好不容易拉回来的相位裕度放太高又压不住噪声。经验上取开关频率的一半到五分之一之间再根据实际噪声表现微调。第二个零点则是给电压模式Buck准备的。因为电压模式下LC双极点最多造成-180°相位滞后一个零点最多补90°不够用必须再加一个零点。简单说Type-II是电流模式Buck的“标准配置”Type-III是电压模式Buck的“保命配置”。下一章先用Type-II跑一个完整的电流模式Buck实战第五章再讲电压模式那两个零点怎么布。4. 12V转3.3V同步Buck实战Type-II补偿的参数计算与仿真验证4.1 设计规格和主要元件直接拿一个我实际做过的项目举例同步Buck输入12V输出3.3V/3A开关频率500kHz。核心参数如下参数取值输入电压12V输出电压3.3V最大负载3A开关频率500kHz功率电感4.7μH输出电容2×47μF MLCCESR约10mΩ控制模式峰值电流模式补偿器类型Type-II输出负载等效电阻3.3V/3A1.1Ω输出电容总额94μF。在峰值电流模式下功率级的主要极点来自输出电容和负载前面算过大约1.54kHz。ESR零点大约169kHz明显高于穿越频率中频段基本可以忽略它的影响但高频段要注意它会把增益抬起来所以补偿器需要高频极点压制。4.2 补偿器参数从哪里起步设计目标是穿越频率50kHz相位裕度争取做到55°到65°。峰值电流模式功率级在50kHz处的相位滞后大约85°到88°要让总相位裕度达标补偿器在穿越频率处的相位必须接近0°甚至为正。按这个思路定Type-II参数零点频率fz 1.5kHz。这个位置和功率级极点几乎重合既能抵消它在低中频段的相位滞后又留了一倍频程左右的缓冲让相位在50kHz处充分回升。高频极点fp2 250kHz。取开关频率的一半主要任务是压制开关纹波和ESR零点带来的高频增益峰在穿越频率处造成的相位滞后大约10°出头属于可以接受的代价。直流增益系数K先给一个估算值比如100到500之间。比如电流模式Buck功率级在穿越频率附近的增益很低补偿器必须提供足够的中频增益才能让总增益在50kHz穿越0dB。K的最终值要以频响仪实测为准因为不同电流采样系数、斜坡补偿斜率会直接影响功率级直流增益G0。4.3 用Python把Bode图跑出来这里给一个可以复现的仿真脚本。用control库搭简化模型看补偿后环路的趋势。需要先装control和matplotlib# 环境pip install control matplotlib import control as ct import numpy as np import matplotlib.pyplot as plt s ct.tf(s) # 功率级简化模型峰值电流模式CCM Vout 3.3 Iout 3.0 Rload Vout / Iout # 1.1 Ω Cout 94e-6 fp_ps 1 / (2 * np.pi * Rload * Cout) # 约1.5kHz G0 5.0 # 与IC电流采样系数有关实际需按数据手册校准 P G0 / (1 s / (2 * np.pi * fp_ps)) # Type-II补偿器零点1.5kHz高频极点250kHz中频增益系数K fz 1.5e3 fp2 250e3 K 200.0 C K * (1 s / (2 * np.pi * fz)) / (s * (1 s / (2 * np.pi * fp2))) # 开环环路增益 T P * C mag, phase, omega ct.bode(T, np.logspace(2, 6, 600), dBTrue, plotTrue) plt.show()跑出来之后重点看穿越频率是否落在50kHz附近、相位裕度是否在55°以上。如果fc偏高就减小K如果PM偏低就把零点往低频方向移动比如从1.5kHz降到1kHz如果高频增益过大把fp2从250kHz降到200kHz以下但要盯着它对穿越频率附近相位的影响。按这个顺序调远比随手换电容有效。4.4 调参顺序和选型提醒很多参考设计喜欢直接给你一组R、C数值但不告诉你为什么是这些值。我的经验是补偿网络调参严格遵守“先定fc再追PM最后压噪声”的顺序先用K把穿越频率拉到目标值附近再用零点移动来调节相位裕度最后用高频极点处理带外增益。顺序反了你会发现每次调整都互相打架。另外要注意不同控制IC的误差放大器结构不一样。有的IC内部是跨导型OTACOMP脚需要挂RC到地构成的是另一种补偿网络形式有的IC直接把误差放大器引出外部搭建有源补偿器。两者最终都能用零极点传函表达但元件计算方式有差异。设计前先看清数据手册里COMP脚的接法再套对应公式不要看到网上一个参考电路就照抄。5. 电压模式Buck为什么需要Type-III两个零点的配平艺术5.1 LC双极点带来的相位无底洞电压模式Buck在CCM下功率级是严格的二阶系统。LC双极点频率大约在5kHz到10kHz之间关键是相位曲线过了f0之后急剧下滑到2到3倍f0处已经接近-180°了。假设穿越频率定在30kHzf0只有7.6kHz那么穿越频率处的功率级相位已经非常难看。如果只用Type-II补偿器最多提供一个零点在穿越频率处能贡献的相位提升有限。极限情况下一个零点补上90°和功率级的接近-180°、积分器的-90°一加相位裕度往往还是负的。这就是电压模式Buck必须上Type-III的数学原因两个零点总共可以提升接近180°的相位才有足够余量把系统的相位裕度拉回50°以上。5.2 四个零极点怎么摆电压模式Buck的Type-III四个零极点各有各的任务。用一个典型例子说明假设L10μHCout100μFfs300kHzf0约5kHz。零点1放在0.5倍f0也就是2.5kHz左右。它的作用是在LC双极点还没发威之前先把相位提前拉起来等于给第二个零点做铺垫。零点2放在f0附近也就是5kHz左右。这个零点直接和LC双极点做零极点对消把功率级最凶的那段相位下滑给抵消掉。极点1要看ESR零点的脸色。如果输出电容是电解电容ESR零点可能落在10kHz到30kHz刚好在穿越频率附近这时候极点1放在ESR零点附近把增益抬高停止避免过度提升。如果输出电容是全MLCCESR零点远高于穿越频率极点1可以放在穿越频率的5到10倍也就是150kHz到300kHz之间主要用来压中高频增益。极点2放在开关频率的一半附近负责把开关纹波和噪声极度衰减。对300kHz开关频率极点2放在150kHz左右再配合一点点增益滚降整个高频段就能压得住。我试过用全MLCC做电压模式Buck的输出电容完全不主动加ESR零点结果中频增益总是偏高补偿器高频极点放低了相位又不稳。后来在输出端故意串了一个10mΩ左右的电阻相当于人为制造ESR零点整个环路的Bode图立刻好调很多。工程上这叫“给环路制造一个可以用的零点”非常实用。5.3 数字PID里的零极点又改了什么数字电源里PID补偿器的三个系数Kp、Ki、Kd本质上就是在实现零点和积分器。数字实现的零极点位置不像RC网络那样连续可调而是由采样周期和控制器的差分方程系数决定。而且数字控制有一个模拟域没有的大麻烦PWM更新通常有一个开关周期甚至多个周期的延迟这个延迟在频域上等效于一个附加相位滞后频率越高越明显。所以数字电源的穿越频率一般不敢定太高经常取开关频率的1/20甚至更低。设计时要在穿越频率处预留足够相位裕量来对冲PWM延迟。很多初次做数字电源的工程师拿模拟补偿的参数直接搬过去结果实测PM比理论值差一大截就是这个延迟在作怪。零极点分析框架没变但设计边界要更保守。6. 实测验证与翻车现场注入法、瞬态判断与隐藏相位6.1 环路测试仪怎么接才是对的仿真做得再漂亮最终都要上环路分析仪实测。常见仪器有Bode 100、Venable系列还有示波器厂商的频响分析模块。接线方法看起来简单但细节很关键断开反馈分压电阻上端与输出电压节点之间的连接。把注入变压器的次级线圈串进这个断口初级接环路分析仪的信号源输出。分析仪的两个输入通道分别接在注入变压器的两端测出“注入前”和“注入后”的电压差再算出环路增益。注入信号幅度要小一般10mV到50mV不能大到让误差放大器进入非线性区否则测出来的是大信号增益不是小信号环路特性。测试之前务必确保电源工作点稳定不要出现打嗝、限流之类的异常状态。有些集成了内部反馈网络的IC不太好注入这时候可以把注入点改到COMP引脚附近或者用输出阻抗扰动法间接测但换算关系比较复杂建议优先用官方推荐的测试点。6.2 负载瞬态波形可以告诉你什么没有环路分析仪的时候负载瞬态波形是判断稳定性的次优手段。看波形时不要只看“振没振铃”要看振铃衰减的速率。相位裕度充足的系统负载阶跃后输出电压会迅速恢复到额定值最多过冲一下不会出现连续的衰减振荡。相位裕度在30°到45°之间时恢复过程会拖出明显的一两个振荡周期像弹簧被拉了一下后还在小幅抖动。如果振铃超过三四次说明相位裕度已经非常危险这时候必须先降低环路增益或者移动零点再继续测试。一个容易误判的情况是负载阶跃时输入电压同步跌落导致输出瞬态变差。看起来像环路补偿不够其实问题在输入端的稳压能力。排查时要先确认输入电压在负载切换瞬间是否稳定排除输入源问题后再去怀疑补偿器。6.3 隐藏相位从哪里来实测Bode图和理论计算对不上最常遇到的三个“隐藏相位源”第一补偿器高频极点被寄生电容提前拉低。COMP引脚的走线、运算放大器输入电容甚至反馈电阻的寄生并联电容都会让原本设计在250kHz的极点掉到几十kHz。高端电源IC的COMP引脚附近尽量少打过孔、少走长线这是很多layout工程师容易忽略的相位“漏油点”。第二输出电容的ESR零点比理论值低。MLCC的直流ESR可能只有几mΩ但高频下因为介质损耗和电极寄生等效ESR会随频率上升。这会让实际ESR零点比计算值低反而在特定频段给你“额外”的相位提升看起来是好事但它同时也抬高了增益可能导致增益裕度不足。所以EMI电容、高频去耦电容不要盲目堆到输出端。第三数字控制的延迟。前面提过PWM更新延迟在fs/2处可以把相位拉到接近-180°如果数字控制里还叠加了ADC采样平均、滤波算法延迟会更大。数字电源调试时可以用实测的相位裕度反推延迟时间然后折算成等效极点再迭代设计。做到这一步我对环路补偿的最大感受是零极点不是考试题是翻译电路行为的一门语言。把功率级的每个极点、每个零点找到再用PID补偿器去点对点配平剩下的就是工程细节。最后分享一个小习惯我每改一次补偿网络都会在记录里贴一张Bode截图注明fc和PM以及当时的负载电流。几个项目下来这个数据库比任何公式都好用。
返回列表