数字电源环路补偿:用 Bode 图分析 Type III 补偿器零点极点 Placement
数字电源(DSP/MCU 控制 Buck、Boost、LLC)的环路补偿和模拟一样,核心是让穿越频率 fc 落在合适位置、相位裕度 PM > 45°。Type III 补偿器(两个零点、三个极点,其中一个在原点)是处理 LC 双极点谐振的利器——它能提供高达 180° 的超前相位,适合陶瓷输出电容(ESR 零点很高)或宽输入电压范围的场合。下面不讲传递函数推导,直接从 Bode 图看零极点怎么放。
一、Type III 补偿器的 Bode 图长什么样
Type III 的理想 Bode 图(幅频曲线)是一个“先平→上翘→再平→再下压”的形状:
• 低频段(< fz1):原点极点提供 -20 dB/dec 的斜率,保证直流增益高,稳态误差小。
• 第一个零点 fz1:斜率从 -20 转为 0 dB/dec,开始提升相位。
• 第二个零点 fz2:斜率从 0 转为 +20 dB/dec,继续推相位。
• 第一个极点 fp1:斜率从 +20 转回 0 dB/dec,限制高频增益。
• 第二个极点 fp2:斜率从 0 转回 -20 dB/dec,压制开关噪声。
相位曲线则在两个零点处各提升约 45°(总共最多 90°),在两个极点处各降低约 45°。合理布置后,在穿越频率 fc 处可获得 60–80° 的相位提升。
二、零极点放在哪?看功率级的 Bode 图
数字电源调试的第一步是用网络分析仪或扫频法画出功率级(PWM + LC + 负载)的开环 Bode 图。你会看到一个典型的 LC 双极点谐振峰(约 -40 dB/dec 斜率)和一个 ESR 零点(如果用了电解电容,零点在 10–50 kHz;陶瓷电容则很高或没有)。
Type III 的零极点 placement 口诀:
• 两个零点 fz1、fz2 放在 LC 双极点频率 flc 附近(flc = 1/(2π√LC))。如果 flc = 3 kHz,把 fz1 放在 2 kHz、fz2 放在 4 kHz,两个零点合力抵消 LC 的 -40 dB/dec 斜率,让幅频曲线在 fc 附近变成 -20 dB/dec 甚至 0 dB/dec。
• 第一个极点 fp1 放在 ESR 零点频率(如果有)或 1/3~1/2 开关频率处,用于抑制高频噪声。例如开关频率 500 kHz,fp1 放在 150–250 kHz。
• 第二个极点 fp2 放在开关频率 fs 的一半或更高,进一步衰减开关纹波。
• 原点极点由补偿器自身提供,无需设置。
三、代码示例:用 Python 快速验证零极点效果
以下脚本用 Python 的 control 库绘制 Type III 补偿器 Bode 图,观察零极点移动对相位的影响:
import control as ct
import matplotlib.pyplot as plt
import numpy as np
# 定义 Type III 补偿器参数(零极点频率,单位 rad/s)
fz1 = 2e3 * 2*np.pi # 第一个零点 2kHz
fz2 = 4e3 * 2*np.pi # 第二个零点 4kHz
fp1 = 150e3 * 2*np.pi # 第一个极点 150kHz
fp2 = 250e3 * 2*np.pi # 第二个极点 250kHz
K = 1e4 # 直流增益(可调)
# 构建传递函数:K * (s+fz1)(s+fz2) / [s*(s+fp1)(s+fp2)]
num = K * np.poly([-fz1, -fz2])
den = np.convolve([1, 0], np.poly([-fp1, -fp2])) # 原点极点 s
sys = ct.TransferFunction(num, den)
# 绘制 Bode 图
omega = np.logspace(1, 6, 1000) # 10Hz~1MHz
mag, phase, omega = ct.bode(sys, omega, plot=False)
plt.figure()
plt.subplot(2,1,1)
plt.semilogx(omega/(2*np.pi), 20*np.log10(mag))
plt.grid(True)
plt.ylabel('Magnitude (dB)')
plt.title('Type III Compensator Bode')
plt.subplot(2,1,2)
plt.semilogx(omega/(2*np.pi), phase*180/np.pi)
plt.grid(True)
plt.ylabel('Phase (°)')
plt.xlabel('Frequency (Hz)')
plt.show()
运行后会看到幅频曲线在 2–4 kHz 处上翘(零点作用),150 kHz 后开始下压(极点作用)。相位在零点处提升,极点处回落。你可以试着把 fz1/fz2 移动到 10 kHz,会发现相位提升区域右移,可能导致 fc 处的 PM 不足。
四、数字实现中的两个陷阱
1. 离散化带来的相位滞后:数字补偿器(IIR 滤波器)在采样频率 fs 下有约 0.5–1.5 个采样周期的延迟,相当于在 fc 处附加 -5°~-15° 的相位。因此模拟设计时 PM 要留足余量,比如目标 PM = 60°,实际数字实现后可能只剩 45°。
2. 系数量化误差:定点 DSP 中,零点极点频率很低时(如 2 kHz),系数需要很高的精度。建议用浮点 MCU 或至少 32-bit 定点,并在闭环前用仿真验证系数量化后的 Bode 图。
五、验证:闭环 Bode 图实测
板子调好后,用扫频法(注入 100 mV 正弦扰动到反馈点,测输出响应)画出环路增益 T(s) 的 Bode 图:
• 穿越频率 fc 应在 1/10~1/5 开关频率(如 500 kHz 开关,fc = 50–100 kHz)。
• 相位裕度 PM > 45°,最好 > 60°。
• 增益裕度 GM > 10 dB。
如果 PM 不足,优先移动零点向低频推(如 fz1 从 2 kHz 降到 1.5 kHz),或降低穿越频率。
Type III 补偿器的零极点 placement 本质上是用两个零点“托起”LC 双极点造成的相位坍塌,再用两个极点压制高频噪声。零点放在 LC 谐振峰附近,极点放在 ESR 零点或 1/3 开关频率处,配合 Bode 图验证,数字电源的环路稳定性就能收敛。记住:数字实现要多留 10° 相位余量给采样延迟,并且系数要小心量化。





