电压模式控制:电压环设计与补偿网络
电压模式控制,说白了就是最经典、最直观的一种控制方式。你采样输出电压,跟参考电压比一比,误差信号直接去调占空比。听起来简单,但实际调起来坑不少。我刚开始做数字电源那会儿,就因为在补偿器上偷了懒,结果板子一上电就啸叫,吓得我赶紧拔了电源线。
这一章,咱们就聊聊电压环怎么设计,Type II 和 Type III 补偿器到底怎么选、怎么算。
电压环的基本结构
先看整体框架。电压模式控制环路里,几个关键模块串在一起:
- 功率级:Buck、Boost 或 Buck-Boost,输出 LC 滤波器
- ADC 采样:把模拟输出电压变成数字量
- 数字补偿器:就是咱们要设计的 Type II 或 Type III
- 数字 PWM 模块:把补偿后的占空比变成开关信号
嗯,这里要注意。功率级的传递函数里,LC 滤波器会带来一个双极点,相位直接掉 180 度。如果不加补偿,环路稳定性基本没戏。
核心思路:补偿器的任务就是在穿越频率附近,把相位裕度拉到 45° 以上,同时保证足够的增益裕度(一般 > 10dB)。
Type II 补偿器
Type II 补偿器,也叫 PI 加一个极点。它有一个零点、两个极点(其中一个在原点)。适合用在功率级 LC 双极点频率比较低、而且你不需要太宽带宽的场景。
我个人习惯在下面这些情况用 Type II:
- 输出电容是电解电容,ESR 比较大,自带一个零点
- 穿越频率要求不高,比如开关频率的 1/10 以下
- 系统对动态响应要求一般
Type II 传递函数
Gc(s) = K * (1 + s/ωz) / [s * (1 + s/ωp)]
其中:
ωz = 1 / (R1 * C1) —— 零点
ωp = 1 / (R2 * C2) —— 高频极点
K = 1 / (R1 * (C1 + C2)) —— 增益系数
小技巧:数字实现时,用双线性变换(Tustin)把 s 域转到 z 域。采样频率至少是穿越频率的 10 倍,不然离散化误差会让你怀疑人生。
Type III 补偿器
Type III 补偿器,说白了就是两个零点、三个极点(一个在原点)。它能提供更大的相位提升,最高可以拉到 180°。适合功率级 LC 双极点需要被充分补偿、或者你要追求高带宽的场景。
我记得有一次做服务器电源,要求动态响应特别快,Type II 怎么调相位裕度都只有 30° 出头。换成 Type III 之后,直接拉到 55°,负载阶跃响应也漂亮多了。
Type III 传递函数
Gc(s) = K * (1 + s/ωz1) * (1 + s/ωz2) / [s * (1 + s/ωp1) * (1 + s/ωp2)]
典型配置:
ωz1 = ωz2 = ω_LC —— 两个零点放在 LC 双极点处
ωp1 = ω_ESR —— 第一个极点放在 ESR 零点处
ωp2 = 1/2 * ω_sw —— 第二个极点放在开关频率一半
避坑指南:我曾经把 Type III 的高频极点放得太低,结果高频增益衰减不够,开关噪声被放大,输出纹波反而变大了。高频极点建议放在开关频率的 1/2 到 1/3 之间。
Type II vs Type III 对比
| 特性 | Type II | Type III |
|---|---|---|
| 零点数量 | 1 个 | 2 个 |
| 极点数量(含原点) | 2 个 | 3 个 |
| 最大相位提升 | 约 90° | 约 180° |
| 适用场景 | 电解电容、低带宽 | 陶瓷电容、高带宽 |
| 设计复杂度 | 低 | 中 |
| 动态响应 | 一般 | 优秀 |
设计步骤实战
下面是我自己常用的设计流程,你照着走一遍基本不会翻车。
- 测量或计算功率级传递函数:得到 LC 双极点频率 f_LC 和 ESR 零点频率 f_ESR
- 确定穿越频率 f_c:一般取开关频率的 1/10 ~ 1/5
- 计算所需相位提升:目标相位裕度 45°~60°,减去功率级在 f_c 处的相位
- 选择补偿器类型:相位提升 < 90° 用 Type II,否则用 Type III
- 放置零极点:Type II 零点放 f_LC 附近,Type III 两个零点放 f_LC,极点放 f_ESR 和 f_sw/2
- 计算增益 K:使开环增益在 f_c 处为 0dB
- 离散化:用双线性变换转成差分方程
- 仿真验证:看波特图,确认相位裕度和增益裕度
经验之谈:我建议你在仿真时留点余量。相位裕度别卡在 45°,做到 50°~55° 更稳妥。因为实际电路里还有采样延迟、PWM 延迟、PCB 寄生参数,这些都会吃掉一些相位。
数字实现注意事项
把补偿器从 s 域搬到数字域,有几个坑你得小心。
- 采样延迟:ADC 采样到占空比更新之间,至少有一个开关周期的延迟。这会额外掉相位,你算补偿器时得把这部分算进去。
- 量化效应:系数位数不够,零极点位置会漂。我一般用 Q15 或 Q24 格式,具体看你的 DSP 或 MCU 位宽。
- 抗饱和(Anti-windup):占空比饱和时,积分项会一直累积,导致恢复超调。加个条件积分或者钳位逻辑,能省很多麻烦。
调试建议:先用仿真工具(比如 SIMPLIS 或 MATLAB)把补偿器调好,再烧到板子上。直接在板子上调,示波器看波形猜问题,效率太低了。