Skip to content

21.3 控制电流波形

现在我们手里有了 Boost 和 Flyback 这两副骨架。它们本质上都是通过调节占空比 d(t) 来扮演一个电阻。

但光有「扮演」的意愿不行,还得有「导演」拿着剧本喊 action。这个导演就是控制系统。如果控制不到位,电流波形就会扭曲,谐波会爆炸,我们辛辛苦苦搭建的「模拟电阻」模型就会崩塌。

目前业内有哪些主流的「导演风格」?这一节我们过一遍。

这里先列个清单,心里有个数:

  • 平均电流控制:目前的主流,波形质量极高,适用性广。
  • 电流编程控制:经典的模拟控制,但在过零点容易有「交越失真」。
  • 临界导通模式与滞环控制:适合小功率,变频,简单粗暴。
  • 非线性载波控制 (NLC):不需要检测输入电压的黑科技,内在稳定性好。

21.3.1 平均电流控制 —— 最稳妥的方案

如果去翻现在的工业级 PFC 控制芯片的数据手册,你会发现大概率支持的是「平均电流控制」。

为什么它这么受欢迎? 它听话,无论变换器是工作在 CCM 还是 DCM,它都能把电流控制得服服帖帖;它稳,不会像某些控制方案那样在过零附近突然抽风(也就是我们马上要提到的交越失真)。

这种控制方法的本质非常直观:直接盯着电感电流的平均值 ig(t)Ts,强迫它去跟参考信号 vr(t)

核心机制:怎么算「平均」?

来看我们控制 Boost 变换器输入电流的方案。

输入电流 ig(t) 流过一个分流电阻。注意这里,我们要测的是平均电流,而不是那个包含尖峰的瞬时开关电流。 分流电阻上的电压被一个运放电路放大。这个运放电路内部藏着一个低通滤波器,它的任务是把高频开关纹波滤掉,只留下低频的平均值。

运放输出的电压 va(t) 正比于输入电流的低频平均值:

va(t)=Rsig(t)Ts......(21.45)

这个 va(t) 会被送去和参考电压 vr(t) 进行「比美」(比较)。 如果电流环设计得没问题,误差信号应该非常小,也就是说:

va(t)vr(t)......(21.46)

这意味着:只要我给出一个想要的参考波形 vr(t),电感电流的平均值 ig(t)Ts 就会死死地咬住它。

怎么造一个「模拟电阻」?

我们要让整流器在电网眼里像一个电阻。 根据欧姆定律,电阻里的电流必须和电压成正比。 既然我们要控制电流跟随电压,那就让参考电压 vr(t) 派生自输入电压 vg(t) 不就行了吗?

这就是乘法器干的事。

参考信号 vr(t) 来自检测到的输入电压 vg(t)(是正弦波)。 这里加了一个乘法器。为什么要加它? 因为我们要调节那个「模拟电阻」的阻值大小,从而控制输出功率。

乘法器的方程如下:

vr(t)=kxvg(t)vcontrol(t)......(21.47)

这里的 vcontrol(t) 就是我们调节功率的旋钮。 结合刚才的公式 (21.45) 和 (21.46),因为 va(t)vr(t),我们可以推导出系统呈现的等效电阻 Re

Re=vg(t)ig(t)=vg(t)va(t)/Rsvg(t)vr(t)/Rs=Rskxvcontrol(t)......(21.49)

看到了吗? Revcontrol(t) 成反比。 想增大输入功率?就把 vcontrol(t) 调小,等效电阻 Re 变小,吸入电流变大。 这个推导非常漂亮,它把复杂的控制电路抽象成了我们在 21.1 节里讲过的无损电阻 (LFR) 模型。

回扣 LFR 模型

回到我们在上一节建立的直觉:我们要造一个 LFR。 平均电流控制方案,本质上就是那个 LFR 模型的物理实现。 而且这个实现方法不局限于 Boost,Buck-boost、Ćuk、SEPIC 谁都可以用这套逻辑。

怎么稳住输出电压?

光模拟电阻还不够,我们最终目标是得到一个稳定的直流电压 v(t)。 这就需要一个外环。

外环的逻辑是:

  1. 采样输出电压 v(t)
  2. 和基准电压 Vref 比较,得到误差。
  3. 用误差去调整那个乘法器的 vcontrol(t)

这其实是在动态地调整 Re,让输入端的平均功率 Pav=Vg,rms2/Re 始终等于负载功率 Pload。 只有输入输出能量守恒,电容电压才能稳住。

进阶技巧:输入电压前馈

平均电流控制已经很棒了,但还有一个让人头疼的问题:电网波动。 如果电网电压突然抖了一下,内环电流反应可能还没那么快,输出电压就会跟着抖。

为了解决这个问题,大多数高性能的控制器都会加一个「前馈」环节。 既然我知道输入电压在变,那我直接在控制信号里把它抵消掉不就好了?

我们要让功率 Pav 只受 vcontrol(t) 控制,而不受 Vg,rms 影响。 经过一番代数推导(把 21.47, 21.49, 21.50 联立),你会发现参考电压应该这样长:

vref1(t)vcontrol(t)vg(t)Vg,rms2......(21.51)

这就意味着我们需要除以 Vg,rms2。 算 RMS 积分很麻烦,但既然电网电压是正弦波,我们其实可以用它的峰值 VM 来代替 RMS(因为只差一个常数系数 2)。 峰值检测器就是干这个的。

最后得到的结果是:

Pav=常数×vcontrol(t)2......(21.53)

输入电压 vg(t) 被彻底消掉了。 这就是前馈的魅力:它让系统对电网波动「免疫」。

埋个雷:这玩意儿怎么建模设计?

这一节讲的都是控制思想。 但你要真去设计电流环的补偿器 Gc(s),你会遇到一个棘手的问题:小信号模型失效了。

为什么? 通常我们做小信号建模(第 7 章的内容),前提是扰动很小。 但在 PFC 里,d(t)vg(t)ig(t) 都是大幅度的正弦波。这根本不是小信号,这是一个非线性时变系统

难道我们就没法用波特图了吗? 也不全是。 对于 Boost 变换器,有一个微妙的性质:虽然输入侧是大信号,但输出电压 v(t) 如果稳得够好(纹波很小),我们可以利用这一点对输入侧进行线性化。

我们来推导一下 Boost 的输入方程(电感电压方程):

Ldig(t)Tsdt=vg(t)Tsd(t)v(t)Ts......(21.56)

这里有个非线性项:d(t)v(t)Ts。 我们把输出电压展开:v(t)Ts=V+v^(t)。 代入后得到:

Ldigdt=vgd(t)Vd(t)v^(t)......(21.57)

注意看最后一项 d(t)v^(t)v^(t) 是输出纹波(极小),d(t) 虽然大,但两者相乘相比于中间项 d(t)V(大信号乘以直流分量)来说,仍然是可以忽略的小量。 于是,非线性项没了!我们得到了一个线性微分方程:

Ldig(t)Tsdt=vg(t)Tsd(t)V......(21.58)

这意味着:即使输入电压和占空比在大范围波动,Boost 的输入动态特性依然可以近似看作线性的。 对应的等效电路就是一个电感串在输入回路里、受占空比互补项控制的简单线性模型。 这个结论非常宝贵,它允许我们用传递函数 Gid(s) 来设计电流环。

不过,这个好运只属于 Boost。 如果你用的是 Buck-boost、SEPIC 或 Ćuk,这个线性化 tricks 就不太好使了。那时候你只能面对残酷的非线性时变系统,或者用一种叫「准静态近似」的假设——假设响应速度远快于电网频率,但这不一定总是稳得住。


21.3.2 电流编程控制 —— 那个带坑的方案

这是另一种经典方案。 原理看起来更简单:让电感电流(或开关电流)的峰值去跟踪一个正弦波指令。 同样用乘法器生成指令信号 ic(t)vg(t)

但是,这里有个坑。

我们在第 18 章深入讲过电流编程控制。那个导致次谐波振荡的鬼魂——斜坡补偿,在这里也 haunting us。

如果不加人工斜坡,Boost 在 CCM 且 d>0.5 时会炸。 加了人工斜坡 ma,虽然稳住了,但它会让平均电感电流偏离指令电流 ic(t)。 这就叫「Crossover Distortion」(交越失真)。

直观地说: 在过零点附近,电感电流很小,这时候固定的斜坡补偿占比很大,导致平均电流根本跟不住指令,波形被「吃掉」了一块。

来看看数学描述。 静态输入特性变成了下面这个奇怪的分段函数:

ig(t)Ts={ic(t)1vg(t)Vmavg(t)/V+1Ts2Lvg(t)in CCMvg(t)ic2(t)fsV2(Vvg(t))(vg(t)+maL)2in DCM......(21.60)

别被这个公式吓晕,把它画出来看更直接。 你会发现,虽然指令是正弦波,但实际电流在过零附近(CCM/DCM 边界)变弯了。这就产生了谐波。

怎么破?

  1. 硬着头皮让电路尽量工作在深 CCM(用很小的 Re)。
  2. 或者给电流指令加个偏置。

这也就是为什么电流编程控制在 PFC 领域不如平均电流控制受欢迎——它太容易产生 THD(总谐波失真)了,尤其是在全电压输入范围(90V-264V)下,失真甚至会高达 50%。


21.3.3 临界导通模式与滞环控制 —— 变频的简单路子

如果你要设计几百瓦以下的小功率电源,比如廉价的手机充电器,上面的方案可能都太贵了。

这时候,你会用滞环控制,或者它的特化版:临界导通模式

它的思路非常「土法炼钢」: 不固定频率,也不管什么占空比。 我只设两条线:上限和下限。 电流撞到上限,关开关;电流跌到下限,开开关。

这就好比一个「滞环比较器」。

特例:临界导通模式

看临界导通模式(CRM)这个特例。 我们让下限是 0。 当电感电流归零的时候,开关立刻打开。 当电流升到参考值(正弦波)时,开关关断。 这意味着变换器永远工作在 CCM 和 DCM 的边界上。

这也是为什么叫「临界」。

有什么好处?

  • 不检测输入电压:这里有个神奇的性质。 对于 Boost 变换器,如果你固定了导通时间 ton,那么电感电流的峰值会正比于输入电压 vg(t)Ipk=vg(t)tonL又因为它是三角波,平均值是峰值的一半。 所以 ig(t)vg(t)。 居然天然实现了电阻仿真! 推导出来的等效电阻是:Re=2Lton......(21.65)

这就是为什么很多低功率 PFC 芯片(比如经典的 L6561)只需要一个简单的零电流检测器(ZCD)和一个恒定的 ton 定时器就能搞定 PFC。

代价是什么? 频率是变的。 看公式 (21.71)。 在电网电压过零(vg0)时,频率最高。 在电网电压峰值时,频率最低。 如果你的电感 L 选得太小,频率可能会飙到令人发指的 MHz,导致 EMI 滤波器很难做。

这也就是 CRM 控制电路的物理背景:用 ZCD 触发导通,用比较器在达到参考时关断。


21.3.4 非线性载波控制 (NLC) —— 省传感器的黑科技

最后介绍一个非常有意思的方案:NLC。

它的目标非常极客主义:既要 CCM 的好波形,又不想检测输入电压,甚至不想用复杂的误差放大器。

怎么做到的? 利用几何学上的巧合。

核心思想:利用开关电流

NLC 的原理是这样的。 它不测连续的 ig,只测开关电流 is(t)。 这很方便,用一个电流互感器套在 MOS 管上就行。

然后,把这个电流积分起来。 因为积分(或者叫电荷 q)和平均值是直接挂钩的(公式 21.74)。 我们在开关管导通期间 [0,dTs] 里对 is(t) 积分,得到电压 vi(t)

vi(dTs)is(t)Ts......(21.76)

现在的问题是:怎么控制 is(t) 才能让系统表现为电阻? 已知目标:

ig=vgRe......(21.77)

利用 Boost 的 CCM 关系式: is=dig (开关电流平均值 = 占空比 × 输入电流平均值) vg=dv (输入电压 = 占空比互补 × 输出电压)

把它们代入目标公式,经过一顿代数操作,我们会得到一个关于 is 的控制律:

is(t)Ts=d(t)(1d(t))v(t)TsRe......(21.80)

这个公式有点意思:右边有一个 d(1d) 的因子。

那个「抛物线」的魔术

再看那个载波 vc(t)。 它是一个抛物线

vc(t)=vcontroltTs(1tTs)......(21.81)

发现了没? 这个载波在时间 t 上的形状,和我们要的控制律在占空比 d 上的形状一模一样!

控制逻辑如下: 让积分器电压 vi(t) 一直上升。 当 vi(t) 碰到这个抛物线载波 vc(t) 的瞬间,关断开关。 因为是在 t=dTs 时相撞,所以此时 vc(dTs) 的值正是我们需要的那个 d(1d) 形状。

这一波操作下来,你会发现: 只要满足这个碰撞条件,系统就自动满足 igvg 的电阻特性。 而且不需要检测 vg,也不需要电流误差放大器。

这就是 NLC 的精妙之处:它用载波的非线性形状抵消了系统的非线性。

唯一的要求是:输出电压 v(t) 和控制电压 vcontrol 必须比较稳定(最好是直流),这样 Re 就是常数。 当然,如果掉进 DCM,这个几何模型就失效了,会出现波形失真,但在 CCM 下表现极佳。

至于怎么生成这个抛物线,诀窍是:把直线积分两次。先把 vcontrol 积分成锯齿波,去掉直流分量,再积分一次就是抛物线。

NLC 证明了一个道理:有时候,数学上的等效可以在硬件上用极简的结构实现。


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

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