Skip to content

18.5 仿真模型的构建与验证

上一节我们聊到了输入滤波器那个令人头疼的「负电阻」问题,还有那个能救命的 Middlebrook 准则。

但光纸上谈兵不够——工程总是要落地的。当理论公式变得像 (18.127) 那样又长又吓人的时候,哪怕是最老道的工程师也会想:「能不能直接跑个仿真看看?」

这不仅仅是想偷懒。在电流程序控制(CPM)这种系统里,占空比 d 并不是我们直接拧在「阀门」上的旋钮,它是电感电流、输入电压和控制输入 vc 相互掐架后的结果。这种非线性关系,用计算器硬算是很难看清全貌的。

本节我们要干一件事:把前面推导的那些大信号平均模型,封装成一个 SPICE 能跑的子电路

18.5.1 动手封装:从公式到模块

我们的目标是搭一个通用模块。

这个模块长得有点像个黑盒。它吃进去四种信号,吐出来一个占空比 d。只要把这个黑盒挂到任何一种拓扑(Buck, Boost 等)的开关模型上,你就能得到这个变换器在 CPM 模式下的平均行为。

先看看它的「胃口」——它的输入端口有哪些:

  1. 控制电流信号 ic(t)Ts:这是我们想达到的电感电流峰值(或者说控制指令)。
  2. 电感电流采样 iL(t)Ts:这是现在的实际电感电流。
  3. 开关管导通时的电感电压 v1(t)Ts:决定了电流上升的斜率。
  4. 二极管(或同步管)导通时的电感电压 v2(t)Ts:决定了电流下降的斜率。

除了这些动态信号,模块还需要几个静态参数,就像电阻值一样得提前设定好:

  • Rf:电流采样电阻(把电流变成电压)。
  • fs:开关频率。
  • L:电感量。
  • Va:人工斜坡的幅度。

这里我们要引入一个关键参数 Va,它是这样定义的:

Va=maTsRf

如果你还记得上一节那个用来稳定环路的人工斜坡 ma,那你应该能认出 Va 就是这个斜坡在一个周期内累积的电压高度(乘上了采样电阻)。

推导过程

模块的核心任务是计算占空比 d

在 CCM(连续导通模式)下,电感电流的平均值 iLTs 和控制输入 ic 之间的关系,我们在 18.3 节已经推导过了(见公式 18.67):

iLTs=icmadTs(m1+m2)2ddTs

这里要注意电感电流的斜率。

  • 当开关管导通时,电流以 m1 上升。根据电感公式 V=Ldi/dt,上升斜率取决于导通时的电感电压:m1=v1(t)TsL
  • 当开关管关断、二极管导通时,电流以 m2 下降。下降斜率取决于关断时的电感电压:m2=v2(t)TsL

我们的目标是求 d。我们可以把上面的平均电流公式变形,解出 d。经过一番代数骚操作,我们会得到一个关于 d 的方程。

但是,在 SPICE 里实现方程有很多种写法。虽然数学上它们是等价的,但对数值求解器来说,收敛性天差地别。有些写法会让仿真器跑得飞快,有些则会让它卡死在「Time Step Too Small」的报错里。

这里有一个比较稳健的写法:

d=ic(t)TsiL(t)Ts(m1+m2)2dTs+maTs

注意,这里右边分母里还藏着个 d(也就是 1d)。所以这是一个隐式方程。别担心,SPICE 的牛顿-拉夫逊求解器很擅长搞定这种隐式方程。

把斜率 m1,m2 和参数代进去,并且把电流项都乘上 Rf 变成电压量纲(这样在 SPICE 里处理更方便),我们就得到了最终版的大信号控制方程:

d=2(vc(t)TsRfiL(t)Ts)(v1(t)Ts+v2(t)Ts)dLfs+2Va

这就是我们要塞进那个黑盒里的核心逻辑。我们给它起个名字叫 CPM-CCM 子电路。


18.5.2 进阶封装:兼容 CCM 和 DCM

上面的模型假设电感电流永远不会降到零(CCM)。但现实中,负载变轻或者电压变高时,电感电流会放完电,进入 DCM(断续导通模式)。

在 DCM 下,电流波形会提前趴在零轴上歇着。这对我们的模型意味着什么?

想象一下波形的样子:

  • 在 CCM 下,第二个阶段(电流下降阶段)持续时间 d2Ts 其实就等于 (1d)Ts
  • 但在 DCM 下,电流在周期结束前就归零了。这时候 d2 不再是 1d,而是取决于峰值电流 ipk 和下降斜率 m2 的比例。

具体的 d2 算法是这样的:

d2=min(1d,ipkm2Ts)

这里有个很妙的逻辑:取「理论剩余时间」和「实际放电时间」中的较小值

  • 如果是 CCM,电流放不完,1d 更小,取它。
  • 如果是 DCM,电流放完了,第二项更小,取第二项。

把这个 d2 的逻辑加进之前的公式里,我们就得到了一个通用的 CPM 模型(CCM/DCM 混合模型):

d=2(vc(t)Ts(d+d2)RfiL(t)Ts)(v1(t)Ts+v2(t)Ts)d2(d+d2)Lfs+2Va(d+d2)

这个公式看起来更吓人了,但它其实是同一个物理过程的更完整描述。在 SPICE 里实现这个,就得到了一个全功能的 CPM 子电路。


18.5.3 实战演练:Buck 变换器的频域特性

模型造好了,得拉出来溜溜。我们拿经典的 Buck 变换器做小白鼠。

搭建仿真电路就像搭积木:

  1. 把原本的开关管和二极管替换成 CCM-DCM1 平均开关模型。
  2. 把我们刚封装好的 CPM 子电路挂上去。
  3. CPM 的输入端需要接几个传感器:
    • Ei:测电感电流 iL
    • E1:测开关管导通时的电感电压(节点 1 和 3 的差)。
    • E2:测二极管导通时的电感电压(节点 3 对地)。
  4. 给定工况:Vg=12V,参考电压 Vc=1.4V
  5. 运行 AC 仿真,看看它在工作点(D0.676)附近的频域响应。

对比一:CPM vs 传统电压模式(控制-to-输出)

对比一下两者的波特图。

  • 虚线:传统的电压模式控制。那个大家熟悉的 LC 双极点高高耸立,相位在谐振频率处直接从 0 掉到 180。想把这个环路补稳,你得费尽心思去设计 PID 补偿器。
  • 实线:电流程序控制(CPM)。刚才那个让人头疼的 LC 谐振峰不见了!幅频曲线在低频像个单极点系统一样平缓下降。相位也 mostly 停留在 90 附近。

这就解释了为什么工程师喜欢 CPM:它把一个原本难搞的二阶系统,变成了一个容易伺候的一阶系统。外环电压补偿器的设计难度大大降低,甚至简单的 PI 补偿就能搞定。

对比二:谁抗扰能力强(线-to-输出)

再看线-输出这条曲线。这是输入电压 vg 波动对输出电压 v 的影响。

  • 电压模式:低频增益大概就是占空比 D(约 0.676,也就是 -3.4dB)。输入端的扰动几乎原封不动地传到了输出端。
  • CPM 模式:注意看那条低得多的曲线。在低频段,CPM 对输入扰动的抑制能力比电压模式强了 30dB

这其实就是那个「电压前馈」在干活。当 vg 升高,电感电流斜率变大,CPM 控制器会自动地、更早地关断开关,从而把平均电流拉回来。这种「自动调节」不需要电压环路介入,完全是由电流环的物理机制完成的。

顺便提一句,CPM 的那条线-输出曲线,如果你用 18.1 节那个「简单一阶模型」是算不出来的。你得用 18.3 节那个精确模型才行。这就是为什么要花精力去推导复杂公式的原因——它能预测出简单模型看不到的细节。

对比三:输出阻抗

最后看一眼输出阻抗。

  • 电压模式:在 LC 谐振频率处有个巨大的尖峰。这意味着负载电流如果刚好晃在这个频率,输出电压会剧烈波动。
  • CPM 模式:那个尖峰被抹平了。CPM 引入了一种「无损耗阻尼」(Lossless Damping)。电感在电流环眼里不再是纯电感,它的行为被改变了,从而抑制了谐振。

走到这里,你应该能感觉到 CPM 的魅力了:它不仅仅是一个控制方案,它在根本上改变了变换器的等效电路特性,把那个难伺候的 LC 滤波器驯服成了温顺的小绵羊。

踩坑提醒:那个隐式方程里的 d(分母里藏着 1d)是新手封装 SPICE 子电路时最容易翻车的地方。如果你直接写成显式形式硬解,数学上没错,但牛顿-拉夫逊迭代经常会在某个工作点附近来回横跳,仿真器报 Time step too small。窍门是保留隐式形式、或者用 gmin 之类的小电导给它垫一个收敛地板。另外那个 min(1-d, i_pk/(m_2 T_s)) 的 DCM/CCM 切换,在切换瞬间会有一个不可导的拐点,建议加一点点平滑过渡,否则 AC 扫描会给出带毛刺的相位曲线。


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

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