ARTICLE DETAIL

资讯详情

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

从谐振到相位裕度:LC滤波电源闭环稳定性解析

从谐振到相位裕度:LC滤波电源闭环稳定性解析 LC型滤波电源闭环系统稳定性解析从去年开始我一直在折腾带LC型滤波电源的闭环控制——不是那种实验室里搭个验证板跑通就完事的小玩意而是真正要面对负载突变、温漂、批次一致性让产品能在用户现场长期稳定运行的项目。空载电压纹丝不动带上负载或者动态加载就低频振荡这种问题我前前后后遇到了四回每回排查思路都不太一样但绕来绕去最后都落回到LC滤波器本身的谐振特性和闭环控制的相位关系上。这篇文章就是想把LC滤波电源闭环稳定性这点事彻底说透。如果你是做电源、电机驱动、音频功放、或者任何带功率级输出滤波的嵌入式系统这篇文章能帮你少走不少弯路。我会从振荡现象的物理根源讲起把LC滤波器的频率特性、闭环传递函数的稳定性判据拆开揉碎再附上我实际调试时用过的排查链路和参数整定经验。就算你控制理论基础一般按着这个思路一步步来也能找到振荡的根子在哪里。1. LC滤波电源为什么会静态稳定、动态就炸先说一个我最常被问到的现象某个Buck变换器或者推挽逆变器的输出端加了一级LC滤波空载测试时波形特别漂亮纹波只有几毫伏效率也正常。但只要把负载加上去或者更刺激一点用一个电子负载做0到满负载的阶跃跳变输出电压就开始像打摆子一样低频起伏严重的时候还能听到电感发出吱吱声。1.1 空载正常不等于闭环稳定很多工程师容易把静态输出电压准等同于系统稳定这完全是两码事。输出电压准说明闭环的直流增益很高稳态误差被压住了但振荡涉及的是系统在高频段的相位和增益关系跟直流增益没有直接关系。一个系统完全可以直流增益做得很高、空载输出很精确但相位裕度趋近于零——这时候任何扰动哪怕是一个极小的负载突变都会引发持续振荡。用生活里的例子来类比你开车跑直线方向盘稍微偏一点如果每次都等到车身明显歪了才开始修正那车就会左一下右一下画龙。修正得太晚就是相位滞后修正的动作一旦滞后于实际偏差系统天然倾向于振荡。LC滤波电源也是这个理LC在输出端引入了比单纯RC滤波更大的相位延迟反馈环路如果不能补偿这个延迟就会画龙。1.2 LC滤波器到底干了什么事从拓扑上看LC滤波电源的输出级就是一个二阶低通滤波器。它的职责是把开关器件产生的PWM波形中的高频分量滤掉让输出变成比较干净的直流。但代价是这个二阶系统在某一特定频率附近会出现增益峰值——这就是谐振峰。谐振峰的意思是在谐振频率附近LC网络本身就会把某个频率的小扰动放大这跟主动反馈控制无关是纯无源电路的特性。这个特性给闭环控制出了个大难题。反馈回路本来想通过补偿网络把相位裕度拉到一个安全区域但LC谐振峰在环路增益曲线上凭空多了一个幅度凸起和一个急剧的相位下降。如果补偿设计得不好谐振峰附近的环路增益会叠加得很高相位在某些频段会急剧掉头稳定性直接被破坏。1.3 振荡频率与LC谐振的关系我处理过的四起振荡问题振荡频率全部落在LC谐振频率附近无一例外。第一次是Buck输出端加了5uH电感和22uF陶瓷电容构成的LC滤波谐振频率大约15kHz振荡波形用示波器数周期频率正好在14.5kHz左右。第二次是开关频率50kHz的推挽电路LC滤波取10uH和47uF谐振频率约7.3kHz听起来完全是低频叫声比开关频率低得多。曾经我也天真地怀疑过是不是环路补偿参数算错了把积分系数降了又降结果只是把振荡从等幅变成衰减很慢的欠阻尼并没有根治。后来在频域里一测才发现问题根本不在补偿参数上而在于LC谐振峰的增益没有在环路设计阶段被充分抑制。你看这三个关键点——谐振频率、相位滞后、增益叠加——只要有一个没有处理好LC滤波电源就迟早给你表演振荡。2. LC谐振峰的定量分析先算清楚再动手既然谐振峰是LC滤波电源稳定性的第一嫌疑人那我建议每个动手调环路的人第一步都不是去调PID参数而是先把LC的谐振频率和Q值算明白。很多顺手写下的经验参数看起来差不多但算一下才知道离振荡有多近。2.1 谐振频率只有几分钱的成本却能省一周时间LC谐振频率的计算公式没有任何玄学f_res 1 / (2π√(LC))我习惯所有参数先按标准单位代进去算一次别偷懒。举个例子L 10µHC 47µFf_res 1 / (2 × 3.14159 × √(10×10⁻⁶ × 47×10⁻⁶)) ≈ 1 / (2 × 3.14159 × √(4.7×10⁻¹⁰)) ≈ 1 / (2 × 3.14159 × 2.168×10⁻⁵) ≈ 7339 Hz你看7.34kHz跟前面提到的推挽电路振荡频率完全对得上。所以当你察觉输出低频起伏时第一件事就应该按这个公式算一下当前LC参数的谐振频率然后去示波器上量振荡周期看两者是否吻合。吻合的话你已经锁定了问题的方向后面只需要按LC谐振来治理就可以了。2.2 Q值决定谐振峰的危险程度真实世界的电感有寄生电阻DCR电容有等效串联电阻ESR负载本身也会取电流。因此LC网络的品质因数Q并不是无穷大。对于串联RLC等效模型的电源输出级Q值可以近似用这个式子表达Q (1 / R_load) × √(L/C)或者从阻尼的角度看ζ (1 / 2R_load) × √(L/C)阻尼系数ζ是Q的倒数的一半ζ越小系统越欠阻尼谐振峰的幅度越高。实操中最常见的一个坑是为了降低输出纹波把电感和电容的取值都往大了选L取大C取大结果√(L/C)变得非常大。如果负载又轻R_load很大整个阻尼系数可能降到0.05甚至更低。这个Q值意味着谐振频率处可能产生20dB以上的增益峰值相当于环路在这个频率凭空多了一个小放大器你说它稳不稳在实际项目中我经常看到同行不计算直接套Matlab仿真里的典型值但仿真模型里电感的ESR设成了几十毫欧实际用的功率电感DCR可能只有几毫欧差别非常大。ESR越大阻尼越大谐振峰越矮环路越好稳定但你可能为了效率换了低DCR电感阻尼突然变小环路就频频出问题。所以每次换电感型号都必须重新审视谐振峰的幅度别默认电感差不多就行。3. 闭环稳定性从入门到实操相位裕度是怎么被吃掉的LC谐振峰只是问题的一半另一半是闭环反馈系统本身的相位管理。很多人的第一版环路参数是这么来的算出功率级传递函数然后拿补偿网络去配一个看起来够用的相位裕度。结果上实测台一跑振荡了。为什么因为模型里漏了太多实际存在的相位延迟。3.1 功率级传递函数二阶系统的本质电压模式的LC滤波电源控制量一般是PWM占空比输出量是电压。从占空比d到输出电压Vout的小信号传递函数可以写成一个带谐振峰的二阶低通形式Gvd(s) V_in / (L·C·s² (L/R_load R_d·C)·s 1)如果你是推挽或者全桥结构拓扑可能稍有不同但二阶特征方程的结构是一样的。这里面R_d是电感DCR和开关管导通电阻折算到输出侧的等效串联电阻。从这个传递函数能看出来的事情很多低频增益主要由输入电压V_in决定不受负载影响太多在谐振频率附近存在峰值峰值高度由R_d和R_load共同决定谐振之后幅频曲线以-40dB/dec的斜率下降相位一路跌向-180°所以你会发现如果不作任何补偿LC电源的原始相位在谐振点之后就非常接近-180°了。你必须靠补偿网络在穿越频率附近提供足够的相位提升才能把相位裕度拉回来。3.2 采样延时和开关调制延时的隐藏相位欠账数字电源里最容易被低估的相位损失来自三个地方ADC采样保持时钟带来的平均延迟约等于半个采样周期到1个采样周期、PWM寄存器更新的延迟、以及调制器本身对占空比指令的零阶保持特性。这三样每个在穿越频率处都会造成不容忽视的相位滞后。举个例子我的开关频率是100kHz数字控制器的采样频率也是100kHz即采样周期T_s 10µs。采样保持带来的平均延迟约0.5到1个T_s取1个T_s好了在穿越频率f_c 8kHz处这个延迟造成的相位滞后是Δφ -360° × f_c × T_s -360° × 8000 × 10×10⁻⁶ -28.8°再加上PWM零阶保持的等效延迟0.5个T_s又多-14.4°控制计算再占一点总共在8kHz这个点就吃掉了将近50°的相位。你以为补偿网络提供了60°相位提升实际到系统闭环只剩可怜的10来度稍微来点扰动就振荡了。这里有一个很多人没意识到的点模拟控制时代运算放大器的相位延迟在高频才明显在几十kHz范围内基本可以忽略而数字控制则把采样和调制延时实实在在摆上台面。所以同样的LC滤波器从模拟环路移植到数字环路不走运的话频谱测试很容易发现相位裕度锐减。针对这个问题我常用的实际对策有两个过采样。用FPGA或高采样率ADC把采样频率提到开关频率的4到8倍把平均延迟从1个T_s压到0.25个T_s以下。代价是MCU负载增加但相位预算直接省回来二十几度。调整PWM更新时机。让占空比采样刚好在一个周期内PWM计数器的波峰/波谷完成寄存器更新也在同一时刻生效把总延迟压缩到接近0.5个T_s。3.3 穿越频率和相位裕度的工程取值逻辑既然知道了相位会从各处被吃掉那设计阶段的判据就不能照搬课本。我一般用下面这张表作为起点设计变量推荐范围说明穿越频率f_c开关频率的1/20到1/10低于这个值动态响应拖沓高于这个值数字延迟占比过大难以稳定相位裕度PM实际调试至少45°目标60°实测低于30°基本必振荡45°只是底线60°才有工程余量增益裕度GM大于10dB对LC谐振峰增益裕度比相位裕度更容易被触犯采样频率f_s至少10倍f_c数字控制必须保证采样延迟占相位预算比例可接受相位裕度这个设计目标大部分是可以推出来的。你先把功率级的原始相位曲线画出来在计划的穿越频率处看是多少度再算采样和调制延迟吃掉多少度然后用补偿网络抬升多少度让总相位裕度落在45°以上。这套流程看着繁琐但比调参数试到不振荡不知道高效多少倍。4. 振荡排查完整链路我是怎么从现象定位到LC谐振的下面这段我想完全按时间顺序还原一次实际排查过程。这个项目用的是STM32G4做数字控制半桥LLC拓扑输出端LC滤波L 4.7µHC 66µF开关频率120kHz。现象是静态满载正常动态25%~75%负载阶跃时输出电压出现约5.2kHz的衰减振荡。4.1 第一步敲定振荡频率并和LC谐振频率对比示波器接输出电压时基打到10ms抓动态负载瞬间的波形。用光标量连续几个振荡波峰之间的时间算出频率约5.2kHz。拿出计算器f_res 1 / (2π√(4.7×10⁻⁶ × 66×10⁻⁶)) ≈ 1 / (2 × 3.14159 × √(3.102×10⁻¹⁰)) ≈ 1 / (2 × 3.14159 × 1.761×10⁻⁵) ≈ 9041 Hz算出来9.04kHz跟5.2kHz差距不小。这时候千万别急着下结论说跟LC无关。因为数字控制下的振荡频率未必等于纯LC谐振频率环路增益重新塑造了主导极点振荡频率会落在LC谐振峰和穿越频率之间的某个位置具体取决于额外的相位延迟。但9k和5.2k这么一比至少能确认振荡频率处于LC谐振频段附近问题大概率与LC谐振有关而不是某个随机的高频噪声或地弹问题。4.2 第二步用环路分析仪或者频域测量确认相位裕度有环路分析仪比如Venable或AP300就直接测环路增益的伯德图。没有的话我用的替代方案是注入小信号扫频在反馈节点串入一个几十欧姆的注入电阻用信号发生器加正弦扰动然后对比扰动前后电压的基本波幅度和相位逐点绘制开环增益曲线。实测那组数据非常典型穿越频率约9kHz相位裕度只有11°。这个数字已经低到了随时可能振荡的程度动态负载引爆它只是时间问题。同时注意幅频曲线上在8.5kHz附近明显有个小凸起——LC谐振峰的残影。它虽然没有冲破0dB线但让相位曲线在穿越频率附近快速下滑直接拉低了相位裕度。4.3 第三步判断是补偿不足还是阻尼不足这一步是整个排查链路的分水岭。我根据测量结果把问题分成两个方向如果LC谐振峰的增益凸起远远高于0dB线而且穿越频率被迫落在谐振峰右侧那就是阻尼不足。这时候光调PID没用得先给LC回路降Q。方法包括加大电感DCR、加RC阻尼支路、或者用数字有源阻尼。如果谐振峰不高但相位裕度依然很小那就是相位预算不够。需要调整穿越频率位置或者增加相位提升。我这个项目属于第二种。LC谐振峰本身幅度受到了负载的抑制但采样延迟加上补偿网络的高频衰减让穿越频率附近相位很难看。最后我没有大改硬件直接把电压环的穿越频率从9kHz压到5kHz同时把零点位置往前移给穿越频率处多腾出十几度相位问题当场解决。动态负载下的衰减振荡幅度缩小了80%以上5.2kHz的低频抖动基本消失。5. 阻尼治理的两个流派硬件降Q和数字有源阻尼如果你遇到的振荡属于明确的第一种方向——LC谐振峰太高增益凸起已经把0dB线捅穿了——那就必须正面解决谐振峰的幅度问题单纯改环路补偿等于隔靴搔痒。下面是我试过并且验证有效的两种思路各有利弊按项目条件取用。5.1 无源阻尼的思维惯性需要打破教科书上最经典的做法是在LC路上串联或并联一个阻尼电阻。我最早也这么干选了串联型RC阻尼支路在输出电容旁边并联一个电阻R_damp和一个电容C_damp串联的支路。取法经验是R_damp按R_load的一半到1/5来选C_damp取输出电容的5到20倍让阻尼支路在谐振频率附近呈现近似纯阻性。这样的确能把谐振峰摁下去效率损失却必须在设计之前就算清楚。我实际测过一个项目输出5V/10A为了把谐振峰从14dB压到3dB以内阻尼电阻最终取了0.3Ω。满载时这个RC支路的损耗大约是P I_damp² × R实测光这一路就多耗了2W多电源效率掉了将近两个百分点。对于追求效率的电源设计来说这个代价非常肉疼。所以无源阻尼适合那些对效率不太敏感、但对可靠性要求极高的场合比如某些工业控制板内部辅助电源。效率敏感型产品请往下看。5.2 数字有源阻尼效率不打折但算法要谨慎有源阻尼的核心思路是不靠真实电阻消耗能量而是在控制回路里虚拟构造一个电阻的行为。最常见的实现方法是在电流内环里加入一个与电容电压的微分项成正比的阻尼项相当于给电容并联了一个虚拟的导纳让LC谐振在控制层面被看见并被抑制。以电压外环、电流内环的架构为例我一般把电容电流观测出来乘一个虚拟阻尼系数k_d叠加到电流指令上。这样LC谐振频率附近的峰值被抑制而且不消耗任何额外能量。不过这里有个容易翻车的点如果电容电流观测不准或者微分项放大噪声高频端反而会被推高甚至诱发新的不稳定。更稳健的替代方案是陷波器Notch Filter。把LC谐振频率处的增益单独压掉其他频段尽量不影响。我实测过一个二阶IIR陷波器中心频率设在LC谐振点Q值取下10对效率零损耗相位在远离谐振点的频段基本不动。缺点是陷波器参数必须跟随LC的实际值如果电感因饱和或者温度漂了陷波器反而会变成传声筒——它压制的频率和实际谐振频率错开了谐振峰照样冒出来。所以数字有源阻尼适合工况稳定、LC参数一致性好的场景。5.3 阻尼系数怎么定先仿一遍再上台不管你选哪个流派我建议在仿真环境里先把开环增益曲线和目标阻尼情况跑一遍。用Matlab/Simulink或者PLECS都行。我给自己的流程是这样设定初始阻尼系数k_d或者阻尼电阻值观察LC谐振峰的幅度调整k_d让谐振峰的增益凸起低于0dB线至少6dB再检查穿越频率处相位看是否还有足够的相位裕度最后做一遍满载到空载的阶跃仿真看输出电压的恢复波形是否有振铃、振铃频率落在哪个范围。仿真永远不能替代实测但能帮你把振荡范围提前圈出来。实测时用电子负载做阶跃把示波器余晖打开观察振荡是否收敛。收敛速度和振铃次数直接反映阻尼是否到位。我个人的接受标准是动态阶跃后的振荡不超过两个完整周期就要明显衰减振幅衰减到峰值的20%以下否则还是欠阻尼。6. 参数整定实操从传递函数到具体补偿网络的落地换算前面讲了那么多理论最终还是要落到一个实际的补偿网络上。下面我给一套我自己常用的步骤顺带说明每一步的用意方便你复制粘贴到自己的项目里。6.1 确认功率级参数并计算关键频率先列一张参数表把电感的DCR、电容的ESR、满载等效电阻R_load、输入电压、开关频率都写清楚。然后算LC谐振频率 f_res 1/(2π√(LC))ESR零点频率 f_esr 1/(2π × ESR × C)这两个频率决定了功率级的幅频特性骨架。接下来画伯德图不需要特别精确手绘草图也行关键是标出谐振峰的幅度和相位在-180°附近的位置。6.2 选择穿越频率与目标相位裕度按前面说的穿越频率定在开关频率的1/10附近但还要检查一个约束穿越频率必须低于任何右半平面零点对某些拓扑而言和LC谐振频率。如果LC谐振频率太低而你要的穿越频率又很高在谐振点附近穿越几乎不可能稳定那要么改LC参数把谐振频率往上推要么接受更低的穿越频率。确定了f_c之后折算相位预算功率级在f_c处的相位 ≈ -180° 谐振修正采样延迟相位 ≈ -360° × f_c × T_s × 1.5留0.5到1.5个周期的余量。目标相位裕度PM ≥ 45°所以补偿网络需要在f_c处提供的相位提升 ≥ PM - 当前总相位 180°。举例功率级在f_c处相位-150°采样延迟吃掉-30°则当前总相位-180°系统相位裕度为0°。要获得50°的相位裕度补偿网络在f_c处至少要提供50°的提升。II型补偿网络一个零点一个极点最大能提供约90°提升在f_c处配到50°完全可行。6.3 设计补偿网络的零极点位置II型补偿网络的传递函数可以写成G_c(s) K × (1 s/ω_z) / (s × (1 s/ω_p))把零点放在f_c的1/2到1/5频率处用来提供相位提升极点放在f_c的2到5倍频率处用来衰减高频噪声。注意极点不能太低否则会拖慢增益穿越的斜率把相位又吃回去。单靠记忆这些零极点比例第一次往往都会翻车。我建议直接借助思博伦或韦恩凯尔一类的环路仿真工具或者哪怕用Scilab写一段脚本把功率级和补偿网络级联起来画出完整的开环伯德图看一下相位裕度和增益裕度。我自己的经验是仿真里看到60°的相位裕度实测定出来往往只有35~45°因为电路板的寄生参数会进一步偷相位。所以仿真目标建议往上留20°有余量才好收敛。6.4 调试时的黄金习惯每改一次参数记录一次实测伯德图最终上台调试我强烈建议每改一组补偿参数就用环路分析仪测一次伯德图。没有分析仪就用动态负载响应的振铃特征来评估负载阶跃瞬间输出电压的振铃频率大致等于穿越频率附近的主极点频率振铃衰减快慢对应相位裕度大小。振铃超过两个周期就一直压不下去说明相位裕度不够回去调零点位置或整体压低增益。这里分享一个我踩过很多次的坑想把动态响应调快盲目把补偿网络的零点提高结果零点高过穿越频率相位提升没吃到反而让宽带噪声全进来了输出波形毛刺明显变多。零点必须始终放在穿越频率的1/5到1/2区间内提升的才是穿越频率处的相位而不是高频噪声的增益。7. 几个被反复验证的工程经验关于电感饱和、电容老化和批次差异前五节聊完了理论和调试套路最后说几个日常工作中不太容易在教科书里看到、但真实掉坑概率极高的工程细节。这些经验来自我个人的多个项目你可以当成避雷针来用。7.1 电感饱和会让谐振频率漂移你算的参数全废功率电感的感值会随电流增大而下降尤其铁硅铝和铁粉芯材质偏置电流一大有效电感可能只剩标称值的50%甚至更低。这意味着满载时LC谐振频率可能上移——你按空载电感值算出来补偿网络满载时谐振峰跑到另一个位置原先的陷波器或者极点位置全部对不上号。我的处理习惯是选电感时直接看厂商的DC Bias曲线保证满载电流下的有效电感不低于标称值的70%。调试时用满载条件做最终的稳定性验证因为满载往往是最恶劣的阻尼条件。千万别只在轻载下调参否则满载必然给你颜色看。7.2 陶瓷电容的DC Bias特性同样致命输出滤波电容如果是MLCCDC Bias特性会让实际电容值随电压升高大幅下降。10µF的1210封装X5R电容在20V偏压下可能只剩下不到5µF直接导致实际谐振频率比设计值高一倍。我在一个项目里就吃过这个亏按10µF算好的陷波器中心频率实测振荡频率完全不在抑制范围内白白浪费了两天排查时间。解决思路有两个一是用C0G或者薄膜电容做关键的滤波位置二是把DC Bias降额曲线纳入计算。最省事的办法是实测用LCR表在目标偏压下量电容值拿这个实际值去算谐振频率别信规格书首页的标称值。7.3 芯片批次带来的环路差异比你想象的大数字电源的好处是环路参数可以在软件里调整坏处是如果硬件批次差异太大一套参数不可能通吃所有设备。特别是电感DCR、电容ESR的批次波动都能直接改变LC谐振峰的Q值和位置。我做过统计同一型号电感两批DCR分别标称8mΩ和14mΩ结果满载时的阻尼系数差异超过30%。一套相位裕度只有45°的参数在DCR偏小的批次上实测可能掉到25°稳定性风险立刻上去了。所以如果产品要批量出货我会在设计阶段就留足够余量目标相位裕度尽量做到60°以上同时从三个批次的物料里各抽几片做稳定性抽检。花在测试台上的时间远少于用户现场出问题的代价。7.4 测试设备寄生参数对调试结果的干扰我在早期调试时犯过一个愚蠢的错误示波器探头的地线夹一长在LC输出端测出的波形上叠加了一个高频振铃看起来像系统振荡其实是探头地线电感与探头电容谐振。后来换上短弹簧地线振铃就消失了。所以判断系统是否振荡千万不要只看输出电压波形还得多确认一下示波器的测量链是不是干净。正确的验证方法包括在负载端用差分探头测量或者用Bode分析仪直接观察环路的频域指标。频域判断永远比时域波形更可靠因为你的眼睛很容易被设备寄生效应骗到。8. 总结之外关于稳定的进一步思考这里我不打算写什么总结只想分享一个最近在工作中反复想到的点LC滤波电源的闭环稳定性本质上不是调一个参数就能根除的病而是一个贯穿硬件选型、控制设计、数字实现、量产一致性的系统工程。LC谐振峰是物理世界给的硬约束采样延时和相位管理是数字控制器绕不开的责任两者的交集就是你必须守护的稳定边界。如果你正在被LC滤波电源的振荡问题折磨我建议你先放下仿真软件拿起计算器把LC谐振频率算一遍再去示波器上量一下振荡频率然后老老实实画一张开环伯德图。这三个动作做完80%的问题原因自己就浮出水面了。剩下的20%可能就是换个好点的电容或者给探头加个弹簧地线的事——调试这行细节里藏着的都是魔鬼。
返回列表