4、功率级建模:Buck、Boost、Buck-Boost 的小信号模型

环路补偿设计,说白了就是跟功率级打交道。你补偿网络调得再好,功率级的特性没摸透,一切都是白搭。我个人习惯,拿到一个新项目,第一件事就是把功率级的小信号模型拉出来看看。这章我们就来聊聊三种基本拓扑的小信号模型——Buck、Boost、还有 Buck-Boost。

核心思想:小信号模型就是在直流工作点附近,把开关管、二极管、电感、电容这些非线性元件,用线性电路等效出来。这样我们才能用经典的自动控制理论去分析环路。

4.1 建模前的准备:状态空间平均法

你可能会问,开关电源一会儿导通一会儿关断,怎么用线性模型描述?其实,我们用的是状态空间平均法。简单说,就是把一个开关周期内的导通和关断状态,按占空比 D 做个加权平均。

我记得刚入行时,总觉得这方法太理想化。后来做了一款 48V 转 12V 的 Buck,实测频率响应跟模型预测几乎重合,才彻底信服。当然,前提是开关频率远高于环路带宽——一般建议至少差 5~10 倍。

建模的基本步骤就三步:

  1. 列写状态方程:分别写出开关管导通和关断时的电路方程。
  2. 求平均:按占空比 D 加权平均,得到大信号平均模型。
  3. 加小信号扰动:在直流工作点附近,给输入、占空比、输出都加上小信号扰动,然后忽略高阶小项,得到线性小信号模型。

我的小技巧:实际推导时,我习惯先写出导通和关断两个状态下的电感电压和电容电流表达式。这两个量是状态变量,它们的平均方程直接决定了传递函数的形式。

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 功率级建模的完整流程

说了这么多理论,我们来梳理一下实际建模的步骤。我每次做新项目都按这个流程走:

  1. 确定工作点:输入电压、输出电压、负载电流,算出占空比 D。
  2. 计算关键参数:电感 L、电容 C、ESR、开关频率 fsw。
  3. 推导传递函数:根据拓扑选择对应的 Gvd(s) 和 Gvg(s) 公式。
  4. 代入数值:把实际参数代入,得到具体的传递函数表达式。
  5. 绘制波特图:用仿真工具或者手算,画出幅频和相频曲线。
  6. 验证模型:有条件的话,用网络分析仪扫一下实际电路的频率响应,跟模型对比。

注意:以上模型都假设变换器工作在 CCM(连续导通模式)。如果负载轻到进入 DCM(断续导通模式),传递函数会变成一阶系统,特性完全不同。我见过不少工程师直接用 CCM 模型去补偿轻载情况,结果环路振荡。所以,一定要确认你的工作范围。

4.7 知识体系总览

最后,我用一张 SVG 图把本章的核心逻辑串起来。你可以把它当作建模时的快速参考。

功率级小信号建模知识体系 状态空间平均法 Buck 变换器 Boost 变换器 Buck-Boost 变换器 关键特性 • 无 RHP 零点 • 双极点 + ESR 零点 • 补偿相对容易 关键特性 • 有 RHP 零点 • 带宽受限 • 音频抑制差 关键特性 • 有 RHP 零点 • 输出极性反转 • 补偿最复杂 建模目的:获取 Gvd(s) 和 Gvg(s),为环路补偿做准备