4、功率级建模:Buck、Boost、Buck-Boost 的小信号模型
环路补偿设计,说白了就是跟功率级打交道。你补偿网络调得再好,功率级的特性没摸透,一切都是白搭。我个人习惯,拿到一个新项目,第一件事就是把功率级的小信号模型拉出来看看。这章我们就来聊聊三种基本拓扑的小信号模型——Buck、Boost、还有 Buck-Boost。
核心思想:小信号模型就是在直流工作点附近,把开关管、二极管、电感、电容这些非线性元件,用线性电路等效出来。这样我们才能用经典的自动控制理论去分析环路。
4.1 建模前的准备:状态空间平均法
你可能会问,开关电源一会儿导通一会儿关断,怎么用线性模型描述?其实,我们用的是状态空间平均法。简单说,就是把一个开关周期内的导通和关断状态,按占空比 D 做个加权平均。
我记得刚入行时,总觉得这方法太理想化。后来做了一款 48V 转 12V 的 Buck,实测频率响应跟模型预测几乎重合,才彻底信服。当然,前提是开关频率远高于环路带宽——一般建议至少差 5~10 倍。
建模的基本步骤就三步:
- 列写状态方程:分别写出开关管导通和关断时的电路方程。
- 求平均:按占空比 D 加权平均,得到大信号平均模型。
- 加小信号扰动:在直流工作点附近,给输入、占空比、输出都加上小信号扰动,然后忽略高阶小项,得到线性小信号模型。
我的小技巧:实际推导时,我习惯先写出导通和关断两个状态下的电感电压和电容电流表达式。这两个量是状态变量,它们的平均方程直接决定了传递函数的形式。
4.2 Buck 变换器的小信号模型
Buck 是降压拓扑,也是我们最常用的。它的功率级传递函数相对简单,但有几个关键点要注意。
4.2.1 控制到输出的传递函数 Gvd(s)
这是从占空比扰动到输出电压扰动的传递函数。对于 CCM 模式的 Buck,它的标准形式是:
Gvd(s) = V_in * (1 + s * R_c * C) / (1 + s / (Q * ω_0) + s² / ω_0²)
其中:
- ω0 = 1 / √(L * C) —— 双极点频率
- Q = R_load * √(C / L) —— 品质因数
- Rc —— 输出电容的 ESR
这里有个很有意思的现象:Buck 的功率级传递函数是一个二阶系统,但它的右半平面没有零点。这意味着它的相位滞后最多到 -180°,补偿起来相对容易。我做过一个 5V 输出的 Buck,带宽做到 50kHz,相位裕量还有 60°,就是因为没有 RHP 零点拖后腿。
避坑指南:我曾经在 Buck 的 ESR 零点上栽过跟头。输出电容用陶瓷电容时,ESR 很小,零点频率很高,几乎不影响环路。但换成电解电容,ESR 零点可能掉到几 kHz,如果不把这个零点考虑进去,补偿网络很容易把相位裕量吃掉。
4.2.2 输入到输出的传递函数 Gvg(s)
这个传递函数描述的是输入电压扰动对输出的影响,也就是音频抑制比。它的形式跟 Gvd(s) 很像,只是直流增益是 D(占空比)。
嗯,这里要注意:Buck 对输入扰动的抑制能力其实一般。如果输入源波动大,比如电池供电,你可能需要前馈补偿或者加一级 LC 滤波器。
4.3 Boost 变换器的小信号模型
Boost 是升压拓扑,它的模型比 Buck 复杂一些。最大的区别在于——它有一个右半平面零点(RHP 零点)。
4.3.1 控制到输出的传递函数
Boost 的 Gvd(s) 表达式:
Gvd(s) = (V_in / (1 - D)²) * (1 - s * L / (R_load * (1 - D)²)) / (1 + s / (Q * ω_0) + s² / ω_0²)
看到分子上的 (1 - s * L / (R_load * (1 - D)²)) 了吗?这就是那个让人头疼的RHP 零点。
为什么 RHP 零点麻烦?因为它贡献的是相位滞后,而不是普通零点的相位超前。你想想看,本来想用零点去补偿极点,结果它反而让相位更差。我在做一款 12V 升 24V 的 Boost 时,带宽怎么都提不上去,最后发现就是 RHP 零点在作怪。
关键结论:Boost 的 RHP 零点频率 frhp = R_load * (1 - D)² / (2π * L)。负载越轻、电感越大、占空比越接近 1,这个零点频率越低,环路带宽就越受限。一般建议环路带宽不要超过 RHP 零点频率的 1/5。
4.3.2 输入到输出的传递函数
Boost 的音频抑制比比 Buck 差。因为输入电压直接串联在电感上,输入扰动会通过电感直接耦合到输出。我做过一个测试,输入电压跳变 1V,输出能跳 0.3V 以上。所以 Boost 的前级滤波一定要做好。
4.4 Buck-Boost 变换器的小信号模型
Buck-Boost 既能升压又能降压,但代价是它的模型更复杂,而且同样有 RHP 零点。
4.4.1 控制到输出的传递函数
Buck-Boost 的 Gvd(s) 形式:
Gvd(s) = (-V_in / (1 - D)²) * (1 - s * D * L / (R_load * (1 - D)²)) / (1 + s / (Q * ω_0) + s² / ω_0²)
注意,这里有个负号!说明占空比增加时,输出电压是下降的。因为 Buck-Boost 的输出极性是反的。实际应用中,我们通常用反相拓扑,但控制环路要特别注意极性。
RHP 零点依然存在,而且它的位置跟占空比 D 有关。D 越大,RHP 零点频率越低。我在做一款 -5V 输出的 Buck-Boost 时,占空比跑到 0.7 以上,RHP 零点直接掉到 3kHz,环路带宽只能压到 600Hz,动态响应慢得让人抓狂。
我的经验:Buck-Boost 的补偿策略跟 Boost 类似,但要注意输出反相带来的极性反转。我习惯在反馈网络里加一级反相器,或者直接用差分放大器把输出反相回来,这样补偿网络的设计思路就跟 Buck 一致了。
4.5 三种拓扑的小信号模型对比
为了让你看得更清楚,我把三种拓扑的关键特性整理成了一张表:
| 特性 | Buck | Boost | Buck-Boost |
|---|---|---|---|
| 直流增益(Gvd0) | Vin | Vin / (1 - D)² | -Vin / (1 - D)² |
| 双极点频率 ω0 | 1 / √(LC) | (1 - D) / √(LC) | (1 - D) / √(LC) |
| RHP 零点 | 无 | 有 | 有 |
| 输出极性 | 正 | 正 | 负 |
| 带宽限制因素 | 开关频率、ESR 零点 | RHP 零点 | RHP 零点、极性反转 |
从表里能看出来,Buck 是最好补偿的,Boost 和 Buck-Boost 因为 RHP 零点的存在,带宽受限严重。这也是为什么很多高压升压应用会改用隔离拓扑或者两级结构。
4.6 功率级建模的完整流程
说了这么多理论,我们来梳理一下实际建模的步骤。我每次做新项目都按这个流程走:
- 确定工作点:输入电压、输出电压、负载电流,算出占空比 D。
- 计算关键参数:电感 L、电容 C、ESR、开关频率 fsw。
- 推导传递函数:根据拓扑选择对应的 Gvd(s) 和 Gvg(s) 公式。
- 代入数值:把实际参数代入,得到具体的传递函数表达式。
- 绘制波特图:用仿真工具或者手算,画出幅频和相频曲线。
- 验证模型:有条件的话,用网络分析仪扫一下实际电路的频率响应,跟模型对比。
注意:以上模型都假设变换器工作在 CCM(连续导通模式)。如果负载轻到进入 DCM(断续导通模式),传递函数会变成一阶系统,特性完全不同。我见过不少工程师直接用 CCM 模型去补偿轻载情况,结果环路振荡。所以,一定要确认你的工作范围。
4.7 知识体系总览
最后,我用一张 SVG 图把本章的核心逻辑串起来。你可以把它当作建模时的快速参考。