☰
Boost小信号建模:右半平面零点与环路补偿实战
2026/10/7 7:53:59 网站建设 项目流程

做升压电源的人大概都有过这么一段经历:Buck电路那套补偿参数用得挺顺手,换成Boost之后把同样的思路搬过去,结果一上电就在轻载下叫唤,或者带载切载时输出电压像荡秋千一样来回晃。问题不在你的焊接,也不在芯片选型,而是Boost这个拓扑从骨子里就带着几个Buck没有的"坏脾气"——右半平面零点、随占空比漂移的双重极点、轻载自动跳进DCM。想把环路真正调稳,绕不开的一件事就是Boost电路小信号建模分析。

这篇东西不打算写成教科书式的推导流水账。我会按自己实际做项目的顺序来:先讲清楚Boost小信号建模到底在解决什么问题,为什么不能照抄Buck;然后把状态空间平均那三步推导拆开揉碎;接着给一版可以对着抄的完整设计实例,从12V升到24V、48W,把电感、电容、极零点、补偿器全部算一遍;最后是平均模型仿真、开关模型时域对照、实测Bode图注入的具体做法,以及我这些年踩过的坑和排查清单。不管你是刚接触开关电源的新手,还是已经做过几版Buck想往Boost上走的工程师,这篇应该都能直接用。

1. 为什么Boost的小信号模型比Buck难啃

1.1 拓扑决定的"非最小相位"基因

先把结论摆在前面:Boost的控制到输出传递函数里天然带一个右半平面零点(RHP Zero),而Buck没有。这不是控制方式带来的,是拓扑结构决定的,你换芯片、换补偿方案、换控制模式都消灭不了它。

物理上怎么理解?想象Boost在稳态工作,占空比突然增大一点点。直觉上你会觉得"多导通一点,输送到输出的能量更多,输出电压应该升上去"。但实际发生的顺序是反的:占空比一增大,二极管导通的时间比例D' = 1 - D立刻变小,而电感电流是慢慢涨上去的,它不会瞬间响应。所以在占空比刚刚增大的那一小段时间里,二极管向输出端输送的平均电流D'·iL反而先变小了,输出电容只能靠放电来维持负载,输出电压先往下掉;等电感电流慢慢爬到新的平衡值之后,输出电压才掉头向上。

这个"先反向、后同向"的响应,在频域里就表现为一个位于右半平面的零点。它的危害不是幅度——RHP零点的幅度和普通左半平面零点一模一样,都是+20dB/dec——而是相位。它带来和普通零点同样大小的相位滞后,最大可以拖到90度。更麻烦的是,你没法用补偿器的极点去"抵消"它,因为一旦抵消,环路增益在那个频段就会变成无穷大,直接不稳定。

RHP零点的频率大致可以记成:

ω_z = D'² · R / L (R为等效负载电阻,L为电感) f_z = D'² · R / (2π · L)

这里有两个要点必须刻在脑子里。第一,f_z和开关频率没关系,你把开关频率从200kHz提到2MHz,RHP零点一点都不会往右跑。第二,f_z和负载电阻成正比,也就是说满载时RHP零点最低、最难搞,轻载时反而宽松。这和很多人的直觉是反的——不少人以为轻载才是最难调的工况,对Boost来说,轻载的麻烦主要来自DCM和高Q值,满载的麻烦来自RHP零点把带宽卡死。

1.2 一个把Buck补偿参数直接搬过来的翻车现场

说个我早期的真实案例。当时做一块车载用的12V升24V模块,输出2A,开关频率200kHz。因为之前在Buck上积累了一套Type III补偿的参数,零点放得很漂亮,相位裕度轻松做到60度以上,我就顺手把那套参数搬到了这块Boost上,心想都是电压模式控制,能差到哪去。

上电之后空载电压正常,加载到1A也稳,看起来一切正常。但做负载跳变测试的时候就露馅了——从0.5A切到2A的瞬间,输出电压直接冲到31V,然后又跌到19V,来回振荡了差不多六七个周期才稳定下来。当时第一反应是输出电容不够,把47µF加到220µF,结果更糟,振荡周期反而变长了。

后来老老实实做了一遍小信号推演才明白:我把交越频率定在了20kHz,而这个设计在满载下的RHP零点只有14.5kHz。交越频率跑到RHP零点右边去了,环路在那个频段被零点带来的额外相位滞后直接吃掉了裕度,负载电流一突变就进入大信号振荡。把交越频率压到3kHz以下、补偿器零点重新布置之后,同样的电容、同样的电感,负载跳变的过冲从12V降到了420mV,恢复时间不到1ms。

这里插一句实操心得:Boost的环路带宽是被RHP零点锁死的,不是被开关频率锁死的。通常的经验是交越频率取RHP零点的1/5到1/3。按这个算,一个D'=0.5、满载12Ω、电感33µH的设计,RHP零点14.5kHz,交越频率最多也就3~4kHz。想再快,只能从减小电感入手(但纹波会变大),或者干脆降低升压比。

1.3 建模之前先明确三件事

在动手推公式之前,有三件事必须先定下来,否则后面全是无用功。

第一件是导通模式。Boost在轻载下很容易进入DCM,判据是电感电流的平均值IL是否大于纹波峰值的一半。对Boost来说,输出电流和电感电流的关系是Iout = IL · D',所以临界输出电流是Iout_crit = ΔIL · D' / 2。在1.2节那个例子里,ΔIL = 1.2A,D' = 0.5,所以输出电流低于0.3A就进DCM了。DCM下小信号模型完全变了:双极点退化成单极点,RHP零点被推到很高频率基本可以忽略,但代价是直流增益和极点位置随负载剧烈漂移,环路设计反而更麻烦。所以做建模之前,务必先画出你所有工作点的导通模式边界。

第二件是控制模式。电压模式(VMC)和峰值电流模式(CMC)的小信号模型天差地别。CMC把电感那个双极点拆成了一个单极点,理论上带宽可以做高,但引入了采样效应极点(在fsw/2附近)和占空比大于0.5时的次谐波振荡问题,必须加斜坡补偿。而且注意——CMC并不会消灭RHP零点,它是拓扑带来的,换控制模式没用,只是控制到输出的传递函数形式变了。

第三件是建模精度需要到哪一级。如果只是为了验证环路稳定性,状态空间平均得到的理想模型就够了;如果要精确到实测相位误差在10度以内,就必须把电感DCR、MOSFET导通电阻、二极管正向压降、输出电容ESR、开关损耗全部塞进去。这些寄生成分对模型的低频增益几乎没影响,但对Q值和中高频相位的影响非常实在。

2. 平均化建模:把开关纹波"抹平"的三步

2.1 第一步:写出两个开关区间的分段方程

状态空间平均的核心思想特别朴素:开关电源在每个周期里其实是在两个(CCM下)线性电路之间来回切换,每个电路本身都是线性的、好分析的,难的是开关那个瞬间。既然开关动作的频率远远高于我们要关心的环路带宽(通常是几十倍以上),那就可以把两个区间按占空比加权平均,得到一个"连续"的等效模型。

先把Boost的电路符号和状态变量定清楚。主电路是:输入电压Vin接电感L,电感另一端记作开关节点,节点和地之间是MOSFET,节点和输出之间是二极管,输出端接电容C和负载R,输出电压记作vC(也就是Vout)。两个状态变量是电感电流iL和电容电压vC。

MOSFET导通区间,占空比d:

L · diL/dt = Vin C · dvC/dt = -vC / R

这个区间里,电感直接跨在输入电源上,电流线性上升;输出端和输入完全断开,电容独自给负载供电,所以电压往下掉。这里能看出Boost的一个特点:导通期间输出电容完全没有能量补充,这也是为什么Boost的输出纹波比Buck难压。

MOSFET关断区间,占空比d' = 1 - d:

L · diL/dt = Vin - vC C · dvC/dt = iL - vC / R

这个区间里,电感通过二极管把能量送给输出端,电感两端电压是Vin - vC(注意因为Boost的vc > Vin,这个值是负的,所以电流是下降的),同时二极管电流一部分给负载,一部分给电容充电。

把上面两组方程用占空比加权求和,就得到平均化之后的方程:

L · diL/dt = d · Vin + d' · (Vin - vC) = Vin - d' · vC C · dvC/dt = d · (-vC/R) + d' · (iL - vC/R) = d' · iL - vC/R

整理一下,这就是Boost在CCM下的大信号平均模型:

L · diL/dt = Vin - (1 - d) · vC C · dvC/dt = (1 - d) · iL - vC / R

相比原始的分段方程,这两个式子已经是连续的了。它丢掉了什么?丢掉了开关纹波本身(比如电感电流的三角波、输出电压的锯齿)。但对环路来说,你关心的本来就是低频包络的行为,纹波只是叠加在上面的高频噪声,不影响稳定性判断。这个取舍就是平均法的全部代价。

2.2 第二步:一个周期内做加权平均的隐含假设

上面那步加权平均看起来理所当然,实际上它偷偷用了三个假设,理解这三个假设的边界,比记住公式本身有用得多。

第一个假设是开关频率远高于模型关心的频率范围。严格的数学处理要用到傅里叶级数展开和"小纹波近似",结论是只有当关心的频率远低于fsw时,平均模型才准确。实践中一般认为模型的可靠上限在fsw/10附近,最多到fsw/5。所以如果你设计的是500kHz的Boost,模型给你算到50kHz是可信的,再往上的相位数据就不用太当真了。这一点在仿真对照的时候特别容易踩坑——很多人拿开关模型跑到100kHz去和平均模型比对,发现相位差了几十度,就以为模型错了,其实是超出了适用范围。

第二个假设是纹波足够小。严格来说占空比加权平均时,非线性项d·vC的平均值并不等于D·VC,中间会多出一个和纹波相关的修正项。当电感电流纹波和平均电流的比值在20%~40%这个常规范围内时,忽略这个修正项带来的误差通常在几个百分点以内,可以接受。但如果为了减小电感体积把纹波做到平均电流的80%以上,平均模型的低频增益就会开始明显偏离实测。

第三个假设是开关周期内占空比近似不变。这要求调制信号的频率远低于开关频率,也就是环路带宽要远低于fsw。这一点在正常设计里都满足。

注意:这三个假设是所有基于状态空间平均的模型共享的,不管你是自己做推导,还是用PLECS、Simulink里的现成平均模型模块,边界都一样。很多人抱怨"仿真和实测对不上",十有八九是拿模型去分析它本来就不该管的频段了。

2.3 第三步:解出静态工作点

推导小信号模型之前,必须先找到工作点。所谓工作点,就是让所有导数等于零的那个稳态解。把上面两个平均方程左边置零:

Vin - D' · VC = 0 → VC = Vin / D' (也就是 Vout = Vin / (1-D)) D' · IL - VC / R = 0 → IL = VC / (D' · R) = Vin / (D'² · R)

第一个式子就是你熟悉的Boost升压公式。第二个式子稍微变一下形,就是输出电流和电感电流的关系:Iout = VC / R = D' · IL,也就是说输出端拿到的电流只有电感电流的D'倍——剩下的那部分电流在MOSFET导通期间从开关管流走了。

把设计指标代进去验证一下。前面那个12V升24V的例子,Vin = 12V,Vout = 24V,解得D' = 0.5,也就是占空比D = 0.5。负载2A时R = 12Ω,代入第二个式子,IL = 24 / (0.5 × 12) = 4A。也就是说一个输出2A的Boost,电感上平均跑着4A的电流,MOSFET和二极管都要承受这个电流。这是Boost的另一个隐性成本:电感电流和开关管电流都比输出电流大,选器件的时候千万别按输出电流去算。

提示:实际电路里因为二极管有正向压降、MOSFET有导通电阻、电感有DCR,实际占空比会比理想值大一些。举例来说,如果MOSFET的Rds(on)是20mΩ、二极管压降0.5V、电感DCR是30mΩ,那么在4A电流下额外损失的电压大概在0.7~0.8V量级,占空比要从0.5涨到0.53左右。做补偿器设计时用理想值算问题不大,但如果要精确预测满载时的实占空比,这几个压降都得算进去。

3. 扰动与线性化:三个传递函数的完整推导

3.1 加扰动、分离大信号与小信号

有了大信号模型,接下来是把它在静态工作点附近线性化。这一步的操作在数学上叫"泰勒展开取一次项",在手算上就是一套固定套路。

先给每个变量加上一个小扰动:

d = D + d̂ (d̂ 是占空比的小扰动) iL = IL + î vC = VC + v̂C Vin = Vin + v̂in

注意大信号平均模型里有两个乘积项(1-d)·vC和(1-d)·iL,这两个是产生非线性的根源,也是小信号模型的全部信息来源。把扰动展开,以电感方程为例:

L · d(IL + î)/dt = Vin + v̂in - (1 - D - d̂) · (VC + v̂C)

右边展开:

(1 - D - d̂)(VC + v̂C) = D'·VC + D'·v̂C - d̂·VC - d̂·v̂C

其中d̂·v̂C是两个小量相乘,属于二阶项,直接丢掉。剩下的部分里,Vin - D'·VC = 0是直流平衡条件(工作点方程),自动消掉。只留下交流项,除以L:

dî/dt = (v̂in - D'·v̂C + VC·d̂) / L

同样的方法处理电容方程:

C · dv̂C/dt = D'·î - IL·d̂ - v̂C / R

到这里,你已经拿到了Boost小信号模型的完整方程组。把它画成电路的话,等效结构是这样的:电感左端接输入电压扰动,右端接一个受控电压源,这个受控电压源由两部分组成,一部分是D'·v̂C(相当于一个匝比D':1的理想变压器),另一部分是VC·d̂(控制信号经过一个增益为VC的压控源注入)。输出侧同理,D'·î是变压器副边电流,IL·d̂是控制信号产生的电流源。这套东西在教科书里叫PWM开关模型或者平均开关模型,和状态空间平均是等价的两条路。

3.2 控制-输出传递函数 Gvd 的推导

现在来求最关键的Gvd,也就是占空比扰动到输出电压的传递函数,条件是输入电压扰动为零(v̂in = 0)。把上一步的两个方程整理一下,去掉微分符号,直接用拉普拉斯算子:

sL·î = -D'·v̂C + VC·d̂ ... (1) sC·v̂C = D'·î - IL·d̂ - v̂C/R ... (2)

从(1)式解出 î:

î = (VC·d̂ - D'·v̂C) / (sL)

代入(2)式:

(sC + 1/R)·v̂C = D'·(VC·d̂ - D'·v̂C)/(sL) - IL·d̂

把含v̂C的项都挪到左边:

v̂C · [sC + 1/R + D'²/(sL)] = d̂ · [D'·VC/(sL) - IL]

两边同乘sL:

v̂C · [s²LC + sL/R + D'²] = d̂ · [D'·VC - sL·IL]

到这里就已经是Gvd了,把VC = Vin/D'、IL = VC/(D'R)代进去整理成标准二阶形式,得到:

Gvd(s) = (Vin / D'²) · (1 - s·L/(D'²·R)) / (1 + s/(Q·ω0) + (s/ω0)²)

其中三个关键参数是:

ω0 = D' / √(L·C) (双极点角频率) Q = D' · R · √(C/L) (品质因数) ωz = D'² · R / L (右半平面零点)

这个式子值得逐项拆开看,它把Boost的所有"坏脾气"都摆在明面上了。

先说直流增益Gvd(0) = Vin/D'² = Vout/D'。在12V升24V、D'=0.5的情况下,直流增益是48,也就是33.6dB。这个值挺大的,意味着在低频段环路的开环增益会很高,这对稳态精度是好事。

再说双极点。注意它的角频率ω0 = D'/√(LC),比Buck的1/√(LC)整整多了一个D'因子。这意味着Boost的双极点会随着占空比变化而移动——输入电压从12V掉到9V时,D'从0.5降到0.375,双极点频率跟着往下掉25%。做环路设计不能只算一个工作点,要在输入电压范围的两端和负载范围的两端各算一遍,取最坏情况。这是Boost补偿器设计里最容易被忽略的一点。

然后是品质因数Q = D'·R·√(C/L)。这个值直接决定了双极点处的增益峰值有多高,峰值大约是Q倍,换算成分贝是20·log10(Q)。在12V升24V/2A的例子中,Q = 0.5 × 12 × √(47µF/33µH) ≈ 7.2,对应峰值17.2dB。这个峰有多麻烦?它意味着在双极点附近的频段,环路增益会被抬升17dB,相位会快速地从-90度滑向-180度。如果补偿器不在这里做点什么,负载跳变时输出就会振铃。

最后是右半平面零点ωz = D'²·R/L。前面已经讲过它的物理来源和对相位的破坏。这里补充一个数字感受:在这个设计里,ωz = 0.25 × 12 / 33µH = 90.9k rad/s,也就是14.5kHz。而双极点在f0 = ω0/(2π) = 0.5/(2π·√(33µH × 47µF)) ≈ 2.02kHz。RHP零点只有双极点的7倍频程左右,这就是Boost环路带宽被卡死的直接原因。

3.3 三个传递函数对照与RHP零点的物理来历

除了Gvd,实际设计里还会用到另外两个传递函数。用同样的方法把d̂ = 0,只保留v̂in,就能得到输入到输出的传递函数(音频敏感度)Gvg;把输入和占空比扰动都置零、在输出端注入电流扰动,就能得到开环输出阻抗 Zout。三个整理在一起比较清楚:

传递函数表达式直流增益用途
控制-输出 Gvd(Vin/D'²)·(1 - sL/(D'²R)) / (1 + s/(Qω0) + (s/ω0)²)Vout/D'环路补偿设计的主对象
输入-输出 Gvg(1/D') / (1 + s/(Qω0) + (s/ω0)²)1/D'评估输入扰动对输出的抑制能力
开环输出阻抗 Zout(sL/D'²) / (1 + s/(Qω0) + (s/ω0)²)0评估负载跳变响应、并联均流

有意思的是,Gvg里没有右半平面零点。原因很直接:输入电压上升时,电感电流的上升是"顺向"的,输出电流D'·iL也跟着涨,没有那个先反向的过程。所以Boost对输入扰动的抑制能力其实还不错(直流增益1/D'=2,也就是6dB衰减),真正难搞的是控制通道。

而Zout在直流下趋近于零,这也很符合直觉:Boost的输出端通过电感、开关管和输入电源连通,低频时电感近乎短路,输出阻抗被输入源"短路"掉了。往高频走,电感阻抗升高,Zout逐渐由输出电容主导,变成典型的容性阻抗1/(sC)。这个特性直接决定了负载跳变时的初始过冲幅度——过冲的尖峰主要取决于输出电容和负载电流的比值,跟环路带宽关系不大,环路只负责把电压拉回来。

再说回RHP零点,我想强调一个容易误解的点:RHP零点不是延迟环节。很多人第一次看到RHP零点带来相位滞后,就把它和传输延迟混为一谈,然后试图用减小开关周期、提高开关频率的办法去"补偿"它。这是徒劳的,因为延迟的相位是随频率线性增长的,而RHP零点的相位是反正切形式、最大到90度;两者在低频段的形状完全不同。正确的做法只有一个:承认它的存在,把环路带宽压到它左边,然后用足够的前馈或者大容量的输出电容去改善负载跳变的动态。

顺便说一句,有些资料会提到"用电流模式控制可以消除RHP零点",这个说法是不准确的。峰值电流模式控制改变了控制到输出的传递函数形式(电感双极点被拆成单极点),但RHP零点依然在原位。它只是让补偿器设计变简单了,并没有突破拓扑层面的带宽限制。真正的突破方向是做多相、做前馈、或者干脆换拓扑(比如用Buck-Boost的衍生结构),但那都是另一个话题了。

4. 一版可复现的设计实例:12V升24V/2A

4.1 主电路参数计算过程

光看公式容易飘,我们把它落到一组具体数字上。设计指标如下:

  • 输入电压:12V(工作范围9V~15V)
  • 输出电压:24V
  • 输出电流:0.3A~2A(满载48W)
  • 开关频率:200kHz
  • 导通模式:全范围CCM

第一步算占空比。理想情况下D = 1 - Vin/Vout = 1 - 12/24 = 0.5。考虑实际压降,按0.53来选器件余量。

第二步算电感电流。IL = Iout / D' = 2 / 0.5 = 4A。这是设计电感、MOSFET和二极管的核心电流值,不是2A。

第三步算电感量。按电感电流纹波取平均值的25%来设计(这个比例是个权衡:比例小则电感体积大、成本高;比例大则纹波电流大、开关损耗和EMI都变差,同时平均模型的准确度也会下降)。那么纹波电流ΔIL = 0.25 × 4A = 1A,电感量为:

L = Vin · D / (ΔIL · fsw) = 12 × 0.5 / (1 × 200k) = 30µH

取标称值33µH。回头验算一下实际纹波:ΔIL = 12 × 0.5 / (33µH × 200k) = 0.91A,占平均电流的22.7%,合理。峰值电流是4 + 0.91/2 = 4.45A,所以电感的饱和电流至少要选到6A以上,留出1.3倍以上的裕量。

第四步算输出电容。Boost的输出电容在一个开关周期里,只有在MOSFET关断期间才被充电,导通期间完全靠放电维持负载,所以纹波主要由导通期间决定:

ΔVout ≈ Iout · D / (fsw · C)

目标是输出纹波小于1%也就是240mV:

C ≥ Iout · D / (fsw · ΔVout) = 2 × 0.5 / (200k × 0.24) = 20.8µF

看起来20.8µF就够了,但这是理想值。实际选型要考虑三点:一是陶瓷电容的直流偏压下容量衰减,一颗标称47µF的X7R在24V偏置下有效容量可能只剩一半;二是负载跳变时电容要提供瞬态能量,这部分和环路带宽直接相关;三是电解电容的ESR会贡献额外的纹波分量。综合考虑,我选了47µF的有效容量,用两颗22µF/50V的X7R并联,再并一颗100µF的固态电解做低频支撑。核算下来有效容量约47µF,纹波约106mV,占0.44%。

实操心得:Boost的输出电容选型,我一般按"理论计算值的2~3倍"来留余量,多出来的部分主要不是为了压纹波,而是为了在环路带宽被RHP零点限制的情况下改善负载跳变响应。这个设计里交越频率只有不到3kHz,负载从0.5A跳到2A时,环路根本来不及反应,前100µs全靠电容硬扛。

4.2 极零点、增益与直流工作点核算

参数定下来之后,把三个关键频率算清楚。这里用满载2A、输入12V的工况,因为这是RHP零点最低的最坏情况:

D' = 0.5 R = 24V / 2A = 12Ω 双极点:f0 = D' / (2π·√(L·C)) = 0.5 / (2π·√(33µH × 47µF)) = 2.02kHz 品质因数:Q = D'·R·√(C/L) = 0.5 × 12 × √(47µF/33µH) = 7.16 (17.1dB峰值) RHP零点:fz = D'²·R / (2π·L) = 0.25 × 12 / (2π × 33µH) = 14.5kHz 直流增益:Gvd(0) = Vin/D'² = 12/0.25 = 48 (33.6dB)

这几个数字放一起看,问题就很清楚了:双极点在2.02kHz,RHP零点在14.5kHz,两者只差不到三个倍频程。如果按常规的"交越频率取开关频率的1/10"来设计,也就是20kHz,那直接踩到RHP零点右边去了,必然不稳定。正确做法是:

fc ≤ fz / 5 = 14.5kHz / 5 ≈ 2.9kHz

同时还要检查另一个约束:交越频率不能太靠近双极点。因为双极点处的增益峰值有17.1dB,如果交越频率刚好落在这个峰值附近,环路增益会在那里形成平台甚至隆起,造成增益裕度不足。实践中的经验是,交越频率一般取在双极点的1.5倍到3倍之间,让环路在双极点峰值之后、以-20dB/dec的斜率穿过0dB线。这个设计里双极点2.02kHz,交越2.9kHz,比值1.44,略偏紧,但配合后面要讲的补偿器零点布置可以接受。

另外还要检查一下输出电容ESR带来的零点。假设用X7R并联后等效ESR约20mΩ,那么:

f_esr = 1 / (2π · ESR · C) = 1 / (2π × 0.02 × 47µF) = 169kHz

这个零点远在14.5kHz的RHP零点之外,对环路没帮助也没害处,可以直接忽略。但如果用的是普通铝电解,ESR可能到200mΩ,零点就掉到17kHz了,虽然幅度上能抬一点高频增益,但相位上挽救不了,而且会和电容容差一起让环路特性变得不可预测,所以Boost的输出电容我还是推荐陶瓷或者固态电容打底。

4.3 补偿器设计与带宽取舍

交越频率定在2.9kHz,接下来要选补偿器。根据前面算的极零点分布,我们需要满足三个条件:一是在低频段有足够高的增益保证稳态精度;二是在双极点附近提供足够的相位提升,把那个17dB的隆峰压下去;三是在RHP零点之前让增益以-20dB/dec的斜率穿过0dB。

这三条要求指向的补偿器结构是Type III,也就是"一个积分器 + 两个零点 + 两个极点"。传递函数写成标准形式:

Gc(s) = (ωi / s) · (1 + s/ωz)² / (1 + s/ωp)²

零点极点怎么放,是有讲究的,不能随便。

零点放哪:零点的作用是提供相位提升。理论上把零点放在双极点频率2.02kHz上,可以对消掉那个隆峰,但实际计算下来相位裕度只能到13度,不够。原因是交越频率2.9kHz是双极点2.02kHz的1.44倍,在这个位置上双极点已经贡献了约-169度的相位滞后,补偿器零点能提升的相位被吃掉了大半。所以要把零点放在双极点下面,我最终放在1.0kHz,大约是双极点的一半。这样在2.9kHz处,两个零点各自贡献约71度的相位提升,合计约142度,减去积分器的90度和两个高频极点的3度,净贡献约49度。

极点放哪:高频极点的作用是压制开关纹波和高频噪声,位置一般取在开关频率的一半附近,这里取100kHz。两个极点放在一起,在2.9kHz处只贡献约3度的相位滞后,可以接受。如果把这俩极点放到20kHz,相位就会多损失20度左右,得不偿失。

积分器增益:这个要算。要求环路在2.9kHz处恰好穿过0dB,先算被控对象在那里有多大的增益:

|Plant(j2.9kHz)| = 48 × |1 - j(2.9/14.5)| / |1 - (2.9/2.02)² + j(2.9/2.02)/7.16| = 45.3 (33.1dB)

所以补偿器在2.9kHz处的增益必须是-33.1dB,也就是0.0221。把这个条件代进Gc的表达式反解出积分器参数,得到ωi = 42.8 rad/s,对应积分器的单位增益频率约6.8Hz。

最终补偿器参数汇总:

参数数值说明
integrals积分器单位增益频率6.8Hz决定低频增益和稳态精度
双零点 fz1.0kHz在双极点下方,提供相位提升
双极点 fp100kHz约等于fsw/2,抑制高频噪声
中频段增益(2.9kHz处)-33.1dB由交越频率条件决定

按这套参数跑一遍,理论计算的交越频率2.9kHz、相位裕度约48度、增益裕度约20dB。实际仿真扫出来是2.87kHz、相位裕度46度、增益裕度19.5dB,和手算基本吻合。

这里有个取舍要说清楚:48度的相位裕度不算宽裕,很多Buck设计能轻松做到60度以上。但对这个Boost来说,想再往上提就得牺牲带宽。我试过把零点半移到700Hz,相位裕度能到54度,但低频增益也跟着掉,电源调整率会变差,最后权衡下来还是选了1kHz。Boost的补偿设计本质上是一个"带宽换裕度"的连续取舍过程,不存在两全的方案。判断标准应该是:在你的最坏工况(最低输入电压、最大负载)下,相位裕度不低于45度,同时负载跳变的恢复时间能满足系统要求。

5. 仿真与实测:怎么确认模型算得对

5.1 用行为源搭平均模型做AC扫描

手算出来的东西,一定要用仿真和实测双验证。第一步是搭平均模型做AC扫描,这一步的目的是验证推导和手算数字,和实测无关——因为平均模型本身就对应着你推导出的那个数学对象。

平均模型用行为源搭最方便,任何支持行为源的仿真器都能做。核心就是把开关网络替换成两个受控源:

  • 开关节点对地的电压源:受d' × Vout控制
  • 注入输出节点的电流源:受d' × iL控制

这两个式子正好就是我前面推导里v_X = d'·vC和i_out = d'·iL的电路实现。用LTspice写出来大概是这样:

* Averaged CCM Boost model for AC analysis Vin in 0 12 Vsense in sw1 0 L1 sw1 sw 33u Bvx sw 0 V = (1-V(duty)) * V(out) Biout 0 out I = (1-V(duty)) * I(Vsense) Cout out 0 47u Rload out 0 12 Vduty duty 0 DC 0.5 AC 1 .ac dec 200 1 500k .backanno .end

跑.ac分析时,仿真器会自动在直流工作点处对所有行为源做线性化,duty上的AC源幅度设为1,那么V(out)的AC结果就直接是Gvd。想看Gvg,就把AC源从duty挪到Vin上,duty的AC分量置零。

把仿真结果和手算对一下:直流增益应该是33.6dB左右,峰值出现在2.02kHz附近、幅度约50.7dB(直流33.6dB + 峰值17.1dB),RHP零点在14.5kHz处相位开始加速下滑。如果对不上,先别怀疑推导,去检查你的d'定义和AC源的位置——最常见的错误是把1-V(duty)写成了V(duty),那样得到的是完全另一个东西。

注意:这个模型只适用于CCM。如果你把负载电阻改到40Ω以上(电流小于0.6A),模型就开始失真了,因为这个时候电路已经接近DCM边界。要分析轻载,得换用DCM的平均模型,那个模型的推导方式完全不同,直流增益和极点位置都会随负载大幅漂移。

5.2 开关模型时域对照与阶跃验证

平均模型验证完推导,还要用真正的开关模型做一次时域对照,确认平均模型没有丢掉关键动态。具体做法是在同一个电路里同时搭一个开关模型,加一个小幅度的占空比阶跃(比如从0.50跳到0.502),观察输出电压的时域响应,再和平均模型的阶跃响应比对。

开关模型里要注意几个容易出错的地方。一是仿真步长,开关频率200kHz,周期5µs,最大步长至少要设到周期的1/100,也就是50ns以内,否则波形会被抹平。二是初始条件,要让电路先在稳态跑够几百个周期再施加扰动,否则看到的全是启动过程。三是扰动幅度,必须在1%以内,否则就跑到大信号范围去了,非线性效应会掩盖小信号特性。

我一般会做三个对照实验。第一个是占空比小阶跃,验证直流增益和低频响应;第二个是输入电压小阶跃,验证输入到输出的传递关系;第三个是负载小阶跃(比如12.0Ω跳到12.12Ω),验证输出阻抗的建模。三个都

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

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

立即咨询