☰
Boost小信号建模与环路补偿:右半平面零点到相位裕度
2026/10/7 8:59:35 网站建设 项目流程

1. 一块Boost板子上的振荡波形,把我拉回了小信号建模

前阵子帮朋友看一块升压板,输入12V、输出24V、负载2A,芯片用的是固定频率电压模式控制器。上电带载没问题,效率也能看,但是一加负载阶跃,输出电压就开始以大约4kHz的频率来回荡,衰减很慢,像被人拽着弹簧不肯松手。换上更大容量的输出电容,振荡频率降下来一点,但相位裕度该不够还是不够;把补偿网络的电容调大,低频增益上去了,高频又开始顶。折腾了两天,最后逼着我老老实实回到纸面上,把Boost的小信号建模从头推了一遍,把控制到输出的传递函数画出来,才知道问题出在右半平面零点那个"反着来"的家伙身上。

这篇东西想聊的就是这件事。它不是什么理论炫技,而是每个做开关电源的人迟早会撞上的一堵墙:Buck的环路你能凭经验调,Boost的环路你要是不建模,几乎必然靠试凑。所谓小信号建模分析,说白了就是给"输入电压、占空比、负载"这些量在稳态工作点附近加一点点微小扰动,把开关变换器这个本质上非线性的、周期时变的东西,用一个线性的传递函数来近似描述。有了这个传函,你才能算相位裕度、才能选补偿网络、才能预测负载阶跃会怎么响。

适合谁来读?如果你正在画Boost、做LED驱动、做电池升压或者PFC后级,并且发现环路补偿怎么调都不对劲,那这篇基本就是为你写的。我会尽量把每一步"为什么这么干"说清楚:为什么可以平均、为什么可以扔掉二次项、那个让人头疼的右半平面零点到底从哪冒出来、以及模型算出来和实测对不上时该往哪儿找。中间会穿插我踩过的坑和几个能直接抄的参数处理方式。前提是你得接受一点点数学——但放心,都是加减乘除和初等微积分,没有玄学。

2. 开关周期平均:把跳变的开关过程"抹平"的前提和边界

2.1 为什么要先做平均,而不是直接算

开关变换器最让人难受的地方在于:一个周期内,电感一会儿接输入、一会儿接输出,拓扑在两个子电路之间来回切。你要是老老实实列微分方程,得到的是一个周期时变的系统,系数每开关周期变一次,直接求传函几乎没法下手。工程上绕开这个困难的办法,就是状态空间平均法:不去关心每个瞬间的拓扑,而是看"一个开关周期内的平均效果"。

这个思路的核心假设很朴素——如果开关频率远远高于我们要关心的信号频率,那么电感和电容上的电流、电压在一个周期内的纹波相对其平均值是小量,可以用周期平均值代替瞬时值来建立方程。用生活里的话讲,你在看一个快速眨眼的人,肉眼看不清每一次眨动,只能看到一张相对稳定的脸;只要信号的变化慢到相对于开关频率,平均模型就能描述这张"脸"的行为,而单个周期里的细节被平均掉了。

2.2 三个成立条件,缺一个就会失真

平均法不是万能药,它有明确的适用边界,这几点在建模之前必须心里有数:

  • 开关频率远高于信号带宽。一般来说环路穿越频率取开关频率的1/10到1/5,这既是为了控制精度,也是为了让平均模型成立。如果你把一个50kHz的Boost环路穿越频率做到20kHz,那模型从一开始就不该被信任。
  • 变换器工作在CCM(连续导通模式)。本文讨论的是CCM下的小信号模型。一旦进入DCM,电感电流在周期内会归零,状态方程结构都变了,传函形式完全不同,环路特性也会突变,这是后面会专门讲的一个坑。
  • 周期内纹波是小量。也就是说电感的纹波电流相对其直流分量不能太大。如果电感选得过小、纹波占比很大,平均模型给出的结果会偏离实测。

2.3 CCM Boost的直流工作点,先把地基坐实

小信号建模是在某个稳定工作点上做的线性化,所以第一件事是把直流工作点算清楚。以CCM Boost为例,稳态下电感电压一个周期内的平均值为零,电容电流平均值也为零,由此得到两个基本关系:

  • 电压增益:$M = \dfrac{V_{out}}{V_{in}} = \dfrac{1}{1-D}$
  • 电感平均电流:$I_L = \dfrac{I_{out}}{1-D} = \dfrac{V_{out}}{(1-D)R}$

这里的 $D$ 是稳态占空比,$R$ 是等效负载电阻。举个数:输入12V、输出24V,那么 $1-D = 0.5$,$D=0.5$;负载2A时输出电流2A,电感平均电流就是4A。这两个数后面推导传函时要反复用到,宁可多算一遍也别记错。

注意:很多人建模时把 $I_L$ 直接写成输出电流,这是最常见的低级错误。Boost的电感电流是输出电流除以 $(1-D)$,占空比越大,这个倍数越夸张。输入输出压差大的升压场合,电感电流可能是输出电流的好几倍,选电感饱和电流时这也是个关键依据。

顺便说一下,这一步顺带帮你验证硬件:如果按公式算出来的电感电流和示波器实测的直流分量对不上,先别急着往下推模型,多半是负载、效率或采样点出了问题。

3. 小信号扰动线性化:为什么可以放心扔掉二次项

3.1 在方程里"掺"一个微小扰动

拿到平均方程之后,就在工作点上加扰动。设稳态量为大写字母,扰动量带小写:

  • $v_{in} = V_{in} + \hat{v}{in}$,视为常数输入时 $\hat{v}{in}=0$
  • $d = D + \hat{d}$
  • $i_L = I_L + \hat{i}_L$
  • $v_{out} = V_{out} + \hat{v}_{out}$

把它们代进电感电压方程和电容电流方程,会得到一堆项:有纯直流项、有一阶的扰动量乘积、还有扰动量相乘的二阶项。关键在于——我们把二阶项全部扔掉。

3.2 扔掉二次项的数学依据与工程含义

为什么敢扔?因为小信号的定义就是"扰动足够小"。当 $\hat{d}$ 和 $\hat{i}_L$ 都是小量时,它们的乘积 $\hat{d}\cdot\hat{i}_L$ 是二阶小量,相对于一阶项可以忽略。这背后的数学是泰勒展开/线性化,工程上它等价于"在稳态工作点附近用一条切线代替曲线"。

但这里有个隐藏前提值得说道:这个近似只在工作点附近成立。如果负载剧烈变化、或者输入电压大范围波动,系统离工作点很远,线性化模型就会失真。这也是为什么我们会发现"轻载时环路明明算得挺好,一重载就振"——不是模型错了,是你离开它成立的邻域了。真正严谨的做法是对不同工作点分别建模,取最恶劣的那个点来设计补偿,Boost的补偿通常要在最高输入电压、最轻负载这个组合下校验,因为这个点增益最高、最容易不稳。

3.3 线性化后的Boost小信号方程组

忽略二次项、整理之后,Boost的小信号模型可以写成一个清晰的线性系统。先看电感方程,扰动后为:

$$L\frac{d\hat{i}L}{dt} = \hat{v}{in} - (1-D)\hat{v}{out} + V{out}\hat{d}$$

电容方程为:

$$C\frac{d\hat{v}_{out}}{dt} = (1-D)\hat{i}L - I_L\hat{d} - \frac{\hat{v}{out}}{R}$$

这两个式子是整个分析的骨架,建议亲手推一遍。注意几个细节:

  • 电感方程里 $V_{out}\hat{d}$ 这一项,说明占空比扰动会通过"关断期间电感承受的电压"直接注入能量,这是Boost控制通路的重要来源。
  • 电容方程里 $-I_L\hat{d}$ 这一项,是Boost特有的"负号"来源。占空比一增大,二极管导通时间变短,输出电容得到的充电电流反而减少,这就是那个反着来的根源。
  • $(1-D)$ 在方程里反复出现,说明它不只是个常数,而是把各种增益按比例缩放。占空比越大,有效电感和有效电容在传递函数里的表现越"重"。

这一步推导出来,你就已经比大多数人深入了——网上大量教程止步于Buck,提到Boost就一句"注意有右半平面零点",却不告诉你它是怎么从这两个方程里长出来的。

4. 控制到输出传函的推导,以及那个绕不开的右半平面零点

4.1 用拉普拉斯变换把方程"翻译"成传函

有了线性化方程,对 $\hat{d}$ 求 $\hat{v}{out}$ 的传递函数就顺理成章了。对上面两个方程做拉普拉斯变换,令 $\hat{v}{in}=0$,把 $\hat{i}_L$ 消去,得到控制到输出的传递函数:

$$G_{vd}(s) = \frac{\hat{v}{out}(s)}{\hat{d}(s)}\bigg|{\hat{v}{in}=0} = \frac{V{in}}{(1-D)^2}\cdot\frac{1 - \dfrac{s}{\omega_z}}{1 + \dfrac{s}{Q\omega_0} + \left(\dfrac{s}{\omega_0}\right)^2}$$

其中三个关键参数是:

参数表达式物理含义
转折频率 $\omega_0$$\dfrac{1-D}{\sqrt{LC}}$由有效LC谐振决定,决定主极点位置
品质因数 $Q$$(1-D)R\sqrt{\dfrac{C}{L}}$谐振峰的尖锐程度
右半平面零点 $\omega_z$$\dfrac{(1-D)^2 R}{L}$相位滞后、且随负载移动

先把量级算出来感受一下。还是那组数:L=22µH、C=220µF、R=12Ω(24V/2A)、D=0.5:

  • $(1-D)=0.5$,$\omega_0 = 0.5/\sqrt{22\mu\times220\mu} \approx 0.5/6.96\times10^{-5} \approx 7.2\times10^3$ rad/s,即 $f_0\approx1.1$ kHz。
  • $Q = 0.5\times12\times\sqrt{220\mu/22\mu} = 6\times\sqrt{10}\approx19$,这是个很高的Q,意味着谐振峰又高又尖。
  • $\omega_z = 0.25\times12/22\mu \approx 1.36\times10^5$ rad/s,即 $f_z\approx21.7$ kHz。

看出来了没有?$Q$ 高达19,说明这个系统在1.1kHz附近有个巨大的谐振尖峰;而右半平面零点在21.7kHz,位置比主极点高了将近20倍。这个组合就是Boost环路的"地狱组合"。

4.2 右半平面零点到底从哪来

那个分子的 $(1 - s/\omega_z)$,零点在正实轴 s = ω_z 上,也就是所谓的右半平面零点(RHPZ)。它的来历其实就藏在电容方程那个负号里:占空比一增大,电感电流的上升斜率确实变大了,但二极管导通时间变短,于是向输出电容输送电流的路被切得更短,短期看输出反而先"掉"一下,等电感电流慢慢攒起来了才逆转。

用一句话总结它的行为特征:指令一给出,输出先往反方向走,过一会儿才跟上。这在频域上就表现为:幅度上开始"抬高"(+20dB/dec),相位上却往下掉90度。

4.3 相位被吃掉的后果,和为什么不能靠加电容解决

一个右半平面零点对相位的贡献,和左半平面极点是一样的——都是滞后90度,但增益变化方向相反。麻烦就在这:你为了压谐振峰、提相位裕度,常规做法是加一个低通补偿把增益提前降下来,可Boost的右半平面零点还远在二十几kHz,等你把穿越频率压到它以下,你的带宽也被压得很低、动态响应慢得像蜗牛。

更坑的是,$\omega_z = (1-D)^2 R/L$ 里带着负载 R。负载越重(R越小),右半平面零点越往低频跑,相位裕度越差。这就解释了为什么很多Boost方案轻载稳、重载振——模型里那个零点实实在在地往下挪了。想改善,要么加大电感 L(把零点推高),要么降低占空比需求(提高输入电压、减小升压比),要么接受更低的带宽。这不是补偿网络的锅,是Boost这个拓扑的固有属性。

我自己的经验:设计Boost补偿时,穿越频率一般取右半平面零点的1/3甚至1/5以下,且要在最重负载下算这个零点。宁可带宽低一点,也不要为了响应快硬冲,否则负载阶跃时那个"先反后正"的过冲会非常难看。

5. 用峰值电流模式简化建模:实际工程里更常见的选择

5.1 峰值电流模式为什么能"化简"传函

电压模式要处理那个高Q的谐振峰,补偿器很难做,所以工程上大量Boost用的是峰值电流模式控制。它的思路是让内环直接控制电感电流的峰值,把电感这个储能元件"隐"进电流环里。直观理解:电压外环不再直接指挥占空比,而是给电流环下命令"给我多少电感电流",电流环快速执行。

这么一改,控制到输出的传函结构就变了,近似可以写成一阶形式:

$$G_{vc}(s) \approx G_{vc0}\cdot\frac{1 - \dfrac{s}{\omega_z}}{1 + \dfrac{s}{\omega_p}}$$

其中输出主极点近似移到 $\omega_p \approx 1/(RC)$ 附近,右半平面零点 $\omega_z$ 依然存在于 $(1-D)^2R/L$ 处——注意,电流模式并没有消灭右半平面零点,它只是把双极点变成单极点,让补偿变简单。这是很多人的误解,以为用了电流模式就万事大吉,结果重载时照样被零点坑。

5.2 峰值电流模式建模里绕不过的采样效应与斜率补偿

电流模式有个天然的麻烦:它是"采样"式控制,电流的峰值在每个开关周期被比较一次。这带来两个建模上的修正:

  • 采样导致的额外极点:电流环在开关频率一半附近会引入一对高频极点,建模时通常用一个 $\omega_s/2$ 附近的高频极点近似,或者干脆保证穿越频率远低于 $\omega_s/2$ 来规避。
  • 斜率补偿对增益的影响:当占空比大于0.5时,不加斜坡补偿会发生次谐波振荡。加了斜坡补偿 $S_e$ 之后,电流环的有效增益会被压低,传函里会多出一个与 $S_e$ 相关的修正因子。近似地,电流环增益正比于 $1/(1 + S_e/S_n)$,其中 $S_n$ 是电感电流上升斜率。

这就意味着:同一个电路,斜坡补偿量变了,整体环路增益和带宽都会变。调试时如果你改了斜坡补偿电阻,请重新核对相位裕度,别想当然。

5.3 电压模式还是电流模式,选之前先想清楚

简单对比一下两种控制下建模和调试的关注点:

维度电压模式峰值电流模式
主传函结构双极点 + RHPZ单极点 + RHPZ
补偿难度高,需处理高Q谐振较低,易做单极点补偿
右半平面零点存在依然存在
建模额外注意点Q值随负载变化采样极点、斜率补偿
抗输入扰动一般好(电流环快速响应)

对我个人而言,做升压比不大的场合倾向电流模式,补偿省心;做升压比大、又必须快的场合,两种模式都得老老实实建模,谁也别想蒙混过关。

6. 环路补偿设计:把传递函数变成能焊上去的元件值

6.1 先定目标,再算补偿

建模的终点不是那条曲线,而是补偿网络里那几个电阻电容的具体数值。开始之前先把目标钉死:

  • 穿越频率 $f_c$:取右半平面零点的1/5到1/3,且不超过开关频率的1/10。以前面那组数为例,$f_z\approx21.7$kHz,那 $f_c$ 定在 5kHz 左右比较稳妥。
  • 相位裕度:目标 45°到60°。低于45°阶跃响应会明显振铃,高于60°又偏慢。
  • 低频增益:越高越好,但和带宽、抗噪能力要折中。

6.2 一个电压模式补偿的实际算法

以最常见的Type III补偿为例,思路是"用两个零点去对消LC双极点,用两个极点去压高频"。步骤大致是:

  1. 在目标穿越频率处,读出未补偿系统 $G_{vd}(j2\pi f_c)$ 的幅值和相位。前面那组数里,由于Q很高、且RHPZ离得还不算太近,这个点的相位往往已经掉到-120°甚至更低。
  2. 计算需要的相位提升量,据此决定补偿零点放在LC谐振频率附近(通常取 $f_0$ 的0.5到1倍),把双极点造成的-180°相位拉回来。
  3. 在RHPZ附近或开关频率一半处放高频极点,压制高频噪声增益,防止把开关噪声放大进来。
  4. 用低频极点(或积分项)给足低频增益,保证稳态误差。

算完之后一定要把补偿后的开环波特图重新画出来核验穿越频率和相位裕度,纸上算完再动手改板。

6.3 参数落地与实测校准的差距处理

算出来的元件值通常是"漂亮"的数,比如 12.7kΩ,实际要选 12kΩ 或 13kΩ。这种四舍五入一般不影响大局,但要注意:

  • 补偿零点电容不要选得太小,否则PCB寄生电容、运放输入电容会明显影响实际零点位置。
  • 反馈分压电阻的取值会影响分压点阻抗,进而影响补偿网络,别一个劲地加大阻值省功耗。
  • 实测相位裕度建议用负载阶跃响应间接估算:看第一个过冲后是否能在两三个周期内收敛,振铃周期反推的阻尼比就能对应到相位裕度。

7. 模型对不上实测的三个高频原因

第一,工作点选错了。Boost的传函里 $D$、$R$ 全在工作点里,你在一个工作点建模,实测却在另一个点跑,对不上太正常。尤其要记得用"最高输入电压 + 最轻负载"和"最低输入电压 + 最重负载"这两个极端分别校验,取最差的来补偿。

第二,忽略了大信号下的DCM。轻载时电感电流可能断续,传函结构整个变了,原本的双极点变成单极点,增益也不同。轻载振荡很多时候是进了DCM,而不是右半平面零点。判断方法很简单:看电感电流波形有没有平台归零段。有,那就是DCM,这套CCM小信号模型直接失效。

第三,寄生参数没进模型。电感的直流电阻会在低频引入额外压降和相位,电容的等效串联电阻会在输出端制造一个零点,把高频相位往回抬。实测和仿真对不上时,建议把这些参数补进模型:把电容ESR当成与C串联的电阻、把电感DCR串进电感支路,重新推一遍(或者直接用仿真软件把寄生填进去),往往能解释大部分偏差。

8. 我自己在建模这条路上踩过的几个坑

先说个最实在的:别在没有工作点的情况下空谈传函。我早年做第一版Boost,兴冲冲画了波特图、选好补偿,结果上电就振。回头一查,稳态占空比根本不是我以为的0.5,而是因为效率损耗实际到了0.55,$1-D$ 变了,有效电感和有效电容全变,传函整个挪了位置。从那以后,我一定先量稳态占空比,再开始建模。

第二个坑是把右半平面零点当成普通零点去对消。有次我试图用一个左半平面零点去抵消它,仿真里看着相位挺好,一上电负载阶跃直接反向顶到过压。原因很朴素:右半平面零点相位是滞后的,你拿一个相位超前的零点去抵消,数学上"消"掉了,但物理上那个"先反后正"的瞬态行为还在,电流环再快也快不过能量守恒。记住,RHPZ只能远离、不能对消,正确做法是把带宽降到它以下。

第三个坑关于斜坡补偿改变环路。做电流模式Boost时我调了一次补偿电阻,负载阶跃变好看了,等同一批板子在另一个负载点测试时又开始振。后来才意识到,改了补偿量相当于改了电流环增益,整个外环的传函都变了,必须重新画波特图,不能只看一个点调。

最后分享一个我自己常用的小技巧:建模算完别急着相信,先用一个小信号仿真(把开关模型用平均模型或受控源搭出来)跑一遍扫频,再用实测阶跃响应反向验证。三者的结果互相印证,你对这套模型的信心才真正建立起来。模型的价值不在于它有多精确,而在于它让你在改补偿之前就知道会发生什么,而不是焊上去之后对着示波器猜。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询