Skip to content

9.5 调节器设计:从「稳得住」到「跟得紧」

上一节我们花了大篇幅去论证一个看起来很玄学的参数——相位裕度(Phase Margin)。

最终结论很残酷:相位裕度不仅仅关乎「炸不炸机」,它直接决定了你的系统在负载突变时是「稍微抖一下」还是「像跳水一样炸出一圈水花」。如果你想要那种临界阻尼的完美瞬态响应(Q=0.5),那你必须把相位裕度堆到 76

这就引出了一个很现实的问题:怎么才能拿到这 76

这就是本节的主题。我们不再分析系统的性质,我们要开始改造系统了。


9.5.1 超前补偿器(Lead / PD):给相位打个兴奋剂

通常,开环传递函数 T(s) 的相位在穿越频率附近会掉到 180 以下,导致系统不稳定。这时候我们需要一种能「把相位拉回来」的电路。

这就是 超前补偿器,也叫 PD 控制器

它是怎么工作的?

它的核心手段是引入一个零点

如果你在穿越频率 fc 之前放一个零点 fz,这个零点会产生 +90 的相位超前(贡献最大 90,但在 fc 处通常贡献 4560)。这就像在相位快要掉进悬崖的时候,有人在后面猛推了一把,把相位裕度拉回了安全区。

工程直觉:为什么叫 PD? 微分(D)意味着它对变化敏感。高频误差变化快,微分项反应就快。零点在频域上就是 +20dB/decade 的斜率,对应的时域行为就是微分。

但凡有得必有失

零点确实提升了相位,但它也附带了一个副作用:它会抬升高频增益。

回想一下,零点幅频特性的斜率是 +20dB/decade。这意味着频率越高,增益越大。这在模拟电路里是危险的,因为我们的输出电压里总是混杂着开关频率的纹波。如果补偿器在高频增益太大,就会把这些纹波当成误差信号放大,然后送到 PWM 调制器里去——这下好了,原本稳定的开关动作被噪声扰乱了。

所以,零点不能裸奔。我们必须在更高的频率处加几个极点,把增益压下来。

这些高频极点有两个任务:

  1. 降噪:把开关纹波衰减掉,别让它们影响控制。
  2. 物理限制:运算放大器的增益带宽积(GBW)是有限的,到了高频它自然就滚降了,这就是物理极点。

这就带来一个硬指标:穿越频率 fc 不能太高,必须给这些高频极点留出空间。通常我们要求 fc<110fsfs 是开关频率)。

数学模型与设计公式

一个最简化的 PD 补偿器传递函数包含一个零点和一个高频极点:

Gc(s)=Gc01+s/ωz1+s/ωp

这里的 ωz=2πfz, ωp=2πfp

为了最大化相位提升的效果,我们把零点和极点对称地放置在目标穿越频率 fc 的两侧。最大相位提升发生的频率 fϕmaxfzfp 的几何平均值:

fϕmax=fzfp

为了让效果最好,我们让这个 fϕmax 正好对准我们的穿越频率 fc

此时,在这个频率点上能获得的最大相位提升量 θ 取决于极点和零点的距离:

fpfz=1+sin(θ)1sin(θ)

这给了一个反直觉的结论:极点和零点离得越远,你能拉起来的相位就越多。当然,距离越远,中间那段增益抬升的斜坡就越长,副作用也越明显。

有了目标相位提升量 θ(比如你想补 45),我们就可以反推零极点的位置:

fz=fc1sin(θ)1+sin(θ)fp=fc1+sin(θ)1sin(θ)

最后,为了让穿越频率保持在 fc 不变(即 |T(fc)|=1),我们需要调整中频增益 Gc0。因为零点会抬升增益,所以 Gc0 通常要比 1 小(即衰减),来抵消零点的抬升作用:

Gc0=fzfp

看一眼图就明白了

PD 补偿器的幅频相频特性长这样:

  • fz 处,增益开始爬升(+20dB/dec),相位开始向 +90 冲刺。
  • fp 处,增益被压平,相位又落回 0
  • 中间那段平地而起的高原,就是我们借来的相位裕度。

一个典型的应用场景是这样:原系统 T(s) 有两个极点,相位在 fc 附近掉到了 180(相位裕度几乎为 0)。加上 PD 补偿器后,虽然穿越频率没变,但相位曲线被抬起来了,相位裕度从「几乎炸机」变成了「稳如老狗」。

⚠️ 注意 PD 补偿器的代价是牺牲了直流增益。你会发现加了 PD 后,低频段的 |T| 反而变小了(因为 Gc0<1)。这意味着我们虽然稳住了(动态响应好),但对低频扰动的抑制能力变差了。这是一个典型的工程 trade-off。

💡 调试直觉:实际拿 PD 补偿器去调板子时,最容易踩的坑是「零点放得太靠近 fc」。理论上零点越靠近穿越频率,相位提升越明显;但零点一旦贴上去,幅频曲线那段 +20dB/dec 的斜坡也会把高频噪声一起抬起来,结果就是负载一跳、输出就抖出一串毛刺。我的经验是先按公式算出 fz,再往低频方向退半档,宁可少要几度相位、换一个干净点的输出。相位裕度从 45 退到 40 你大概率察觉不到,但输出多冒 20mV 的毛刺,客户立刻就打电话来了。


9.5.2 滞后补偿器(Lag / PI):我要稳准狠

如果你对「稳」的要求高于一切,那你需要的是 PI 控制器

PD 解决的是「跟得快不快」和「会不会炸」的问题,PI 解决的是「准不准」的问题。还记得上一节提到的直流稳态误差吗?开环增益 T(0) 越大,误差越小。PI 补偿器的作用就是把低频增益顶到天上去。

它是怎么工作的?

它的手段是引入一个反相零点(Inverted Zero),也叫「原点附近的极点」。传递函数长这样:

Gc(s)=Gc(1+ωLs)

注意这个 1s。在低频时,s 很小,这一项巨大无比。这就意味着积分作用:只要有一点误差,它就会不断积分,直到误差消除为止。

工程直觉:为什么叫 PI? 积分(I)意味着对历史误差求和。只要误差不为零,积分输出就一直变,直到把误差消掉。这就是为什么直流误差能被干掉——因为在直流时(s0),积分增益趋于无穷大。

它的副作用是什么?

既然叫「滞后」,意味着相位是滞后的(因为它其实主要是积分)。 但是,如果你把这个零点 fL 放得足够低(远低于穿越频率 fc),那么在 fc 处,它产生的相位滞后就很微弱(因为早就趋近于 0 了)。

所以 PI 的设计哲学是: 「我把零点放得很低,低到你在穿越频率处几乎感觉不到它的存在(不影响相位裕度),但在低频段,它的增益能把天花板顶破。」

设计流程

对于本身只有一个极点的简单系统,加 PI 是绝配。

原始开环增益 Tu(s) 是个典型的单极点低通滤波器:

Tu(s)=Tu01+s/ω0

加了 PI 后,环路增益变成 T(s)=Tu(s)Gc(s)。在高频段(ffL),PI 的那项 ωLs 消失了,增益变成常数 Gc。此时的环路增益近似为:

|T|Tu0Gcf0f

我们要穿越频率是 fc,且 |T(fc)|=1。代入上式,反解出 Gc

Gc=fcTu0f0

这就定下了高频增益。至于那个反相零点频率 fL,放多低?只要确保它别影响到 fc 处的相位裕度就行。通常选 fL110fc 甚至更低。

效果验证

来看 1/(1+T) 的幅频特性。

  • 在极低频段(<fL),PI 发威,环路增益 T 巨大,导致 1/(1+T) 趋近于 0。
  • 意味着什么? 意味着输入端的纹波、负载端的扰动,在传递到输出时,被除以了一个巨大的数。扰动被衰减了 40dB 甚至 60dB。这就是直流电源纹波极低的秘密。

9.5.3 结合体(PID):我全都要

你可能会想:「我既要低频稳得像石头(PI),又要高频快得像猎豹(PD),能不能行?」

这就是 PID 控制器

它的传递函数直接就是把 PI 和 PD 拼起来:

Gc(s)=Gcm(1+ωL/s1)(1+s/ωz1+s/ωp1)

它的结构可以拆成三段来看:

  1. 低频段:那个反相零点 ωL 负责把增益顶上去,解决稳态误差问题。
  2. 中频段(穿越频率附近):那个超前零点 ωz 负责拉相位,解决稳定性问题。
  3. 高频段:那俩极点 ωp1,ωp2 负责把增益压下来,滤除开关噪声。

设计 PID 就是在玩杂技:

  • fL 放低,为了 DC 精度。
  • fz,fp 放在 fc 两边,为了相位裕度。
  • fp1,fp2 放高点,为了降噪。
  • 大家得在频谱上排排坐,互不干扰。

9.5.4 实战演练:手撸一个 Buck 变换器的补偿器

光说不练假把式。我们现在来设计一个完整的系统。

目标

  • 输入:28V
  • 输出:15V
  • 负载:5A(3 Ω 电阻)
  • 开关频率:100 kHz

第一步:定调子(反馈分压比)

首先,我们要决定把输出电压分压成多少给误差放大器。 手头有一个精准的 5V 基准电压 Vref。 我们假定反馈系统很强,输出电压 v 会死死咬住 vref(误差 ve0),也就是 Hvvref

那么,反馈增益 H 就是:

H=VrefV=515=13

这意味着我们需要一个电阻分压器,把 15V 降到 5V。

同时,我们可以算出静态占空比 D(Buck 电路 V=DVg):

D=15280.536

为了维持这个占空比,控制电压 Vc 也得算出来(假设 PWM 调制器斜坡峰值 VM=4V):

Vc=DVM=0.536×4=2.14 V

这些是静态工作点,确保我们「起跑」的姿势是对的。

第二步:看看我们要控制的对象有多难搞

画出小信号模型,我们需要得到开环控制-输出传递函数 Gvd(s)。对于 Buck 电路,它是标准的二阶系统:

Gvd(s)=VD11+sLR+s2LC

代入数值(L=50μH,C=500μF),算出特征参数:

  • 谐振频率 f01 kHz
  • 品质因数 Q0:9.5 (非常高!这意味着在 1 kHz 处有个巨大的尖峰,相位会瞬间掉 180

看看 Gvd(s) 的波特图,那个高达 +19.5dB 的尖峰看着就让人手心出汗。如果不加补偿直接闭环,这个尖峰会让你这辈子的工程师生涯过得非常短暂。

第三步:看看裸奔的环路长啥样

假设我们先把 Gc(s) 设为 1,看看原始的环路增益 Tu(s) 是什么德行。

Tu(s)=HVMGvd(s)=Tu01+

在直流处,增益 Tu07.4 dB。 在 1.8 kHz 左右增益降到 1(穿越频率)。 问题来了:在这个频率,相位是多少? 因为 fc(1.8k)>f0(1k),我们早已经过了那个二阶极点的谐振点,相位已经跌到了接近 180结论:相位裕度几乎为 0。这系统如果能用,那是见了鬼了。

第四步:PD 补偿——先把命保住

目标:把穿越频率提上去,同时把相位补回来。

我们设定新目标穿越频率 fc=5 kHz(开关频率的 1/20)。 在原始环路上量一下,5 kHz 处的增益大概是 20.6 dB。 为了在这里穿越(0 dB),我们的补偿器需要提供 +20.6 dB 的增益。

同时,5 kHz 处的原始相位很差。我们需要补相位。假设我们想要 52 的相位裕度(对应 Q=1,响应会有点过冲但在可控范围内)。

查前面那个 fp/fz 的公式反推,我们需要:

fz=1.7 kHzfp=14.5 kHz

这样零点和极点就会在 5 kHz 两侧产生大约 52 的相位提升。

计算中频增益 Gc0,我们得到大约 11.3 dB。这个 Gc0 是用几何平均算出来的,目的是让穿越频率正好落在 fϕmax

这就是我们的 PD 补偿器曲线。 加上这个补偿器后,环路增益 T(s) 变成了理想的样子:

  • 5 kHz 附近,相位被抬高到了 128 左右(相位裕度 52)。
  • 系统稳了

但代价是啥?看 1/(1+T) 这条曲线。 在 100 Hz 处,衰减只有 18.7 dB。也就是说,如果输入端有 1V100 Hz 纹波,输出端大概会有 60 mV 的纹波。这对很多精密电源来说,太糙了。

第五步:PI 补偿——把精度磨上去

现在命保住了(PD搞定了),我们来治治那个直流误差。 我们在 PD 的基础上,再加一个反相零点 fL

fL=500 Hzfc 的 1/10)。这样它基本不会破坏我们在 5 kHz 辛辛苦苦攒下的相位裕度。

现在的 Gc(s) 变成了 PID。 来看最终效果: 在 100 Hz 处,环路增益 T 被大幅抬升(因为那个反相零点)。 结果 1/(1+T) 的幅值在 100 Hz 处跌到了 32.7dB

这意味着什么? 同样是输入端 1V100Hz 纹波,现在输出端只有 12mV。 从 60mV12mV,这就是 PI 的威力。

把开环和闭环的幅频曲线叠在一起看,就能完美看出这一点: 在低频段(< fc),闭环传递函数比开环传递函数低了一大截。这就是负反馈把扰动「吃掉」了。


总结

我们这一路走来:

  1. PD 补偿器解决了二阶极点带来的相位崩塌,把穿越频率推到了 5 kHz,确立了相位裕度。
  2. PI 补偿器(反相零点)把低频增益顶天,解决了直流误差和低频纹波抑制问题。
  3. 最后还要记得加高频极点,把开关纹波滤掉(虽然在图中没画太细,但在设计实例的 PID 结构里已经包含了)。

这就是电源设计的艺术:在波特图上画线。每一笔都对应着物理世界里的一个性能指标——稳不准、快不快、抖不抖。


参考说明:参考自 geqianQWQ 同学阅读《Fundamentals of Power Electronics》的笔记,仅作理解线索;本文为结合自己理解重新整理的学习笔记,不涉及对原书的复制或翻译。

面向嵌入式学习者的硬件学习笔记