15.4 打通 CCM 和 DCM 的统一仿真模型
上一节我们算出来的那个漂亮的一阶模型,有一个前提:我们假设变换器老实呆在 DCM 模式里。但现实是残酷的——或者说是丰富多彩的。
只要负载电流足够低,任何带二极管整流器的变换器都会滑入 DCM 模式。而在实际工况中,负载是会变的,输入电压也会晃动。这就意味着,你的变换器很可能在某一时刻还在 CCM(连续导通模式)里优哉游哉,下一秒因为负载突然变轻,就掉进了 DCM 的坑里。
问题来了:如果我们要仿真这种「双面人」,难道还要手动切换模型吗?
15.4.1 统一之路:有效占空比 μ
回顾一下我们的武器库。 对于 CCM,我们在第 14 章推导出了理想变压器模型,其变比是
这两个模型长得完全不一样。能不能把它们揉成一个?
能。只要我们引入一个新的概念:有效开关转换比
类比 1:万能转接头 你可以把
想象成一个「万能转接头」。 在 CCM 模式下,这个转接头的设定是固定的,完全听命于控制信号 ,就像一根刚性连杆。 但在 DCM 模式下,转接头开始打滑,它的实际转速不仅取决于控制信号,还取决于外部的负载阻力(电压和电流)。
我们的目标是构建一个通用的平均开关模型,无论在 CCM 还是 DCM,它都长成同一个样子——一个变压器。 但是,这个变压器的变比是
规则一:CCM 区域(刚性连接)
如果在 CCM 下运行,事情很简单。开关网络的转换比完全由控制器决定。
没有任何商量余地。
规则二:DCM 区域(受控连接)
如果在 DCM 下运行,
来看看 DCM 的 LFR 模型是怎么规定的:
- 端口 1(输入):平均电压
- 端口 2(输出):平均功率等于输入功率,即
现在看看我们的通用模型,它本质上是一个变压器:
且功率守恒:
为了让它们在端口 1 看起来一样,我们令通用模型的
这里
现在我们可以解出 DCM 下的
你可以去验证一下,如果你匹配端口 2 的特性,得到的解也是这一模一样的公式。
回到那个万能转接头 这里就是「揭示距离」的时候了。 真实的 DCM 物理机制并不是真的有个变阻器。实际上,是因为电感电流回落到了零,导致二极管提前关断。 我们这里用
和 构造的这个代数关系,是对那个复杂物理过程的一个数学拟合。它抓住了本质:在 DCM 下,开关的有效转换比不再单纯是你按下的按钮( ),而是负载和电压的函数。
回到万能转接头:验证 如果负载完全开路,
,会发生什么? 公式告诉我们 。 变压器变成了 ,这意味着输入电压直接怼到了输出端(当然还要乘以变换器固有的拓扑增益)。 这和我们在第 5 章里分析的 DCM 极限情况完全一致:空载时,输出电压会飘到最高。
仲裁逻辑:怎么选?
现在我们有两个公式:
- CCM 公式:
- DCM 公式:
仿真器怎么知道该用哪一个? 如果在边界上,这两个公式算出来的
所以结论很简单:谁大听谁的。 正确有效的开关转换比
15.4.2 上号:SPICE 子电路实现 (CCM-DCM1)
理论讲完了,现在把它变成仿真器能跑的代码。我们把这个「万金油」模型写成原理图和 SPICE 网表。
这个子电路被命名为 CCM-DCM1。它有 5 个接口脚,和我们之前用过的 CCM1 之类的完全兼容:
- 漏极
- 源极
- 二极管阴极
- 二极管阳极
- 占空比控制输入 (
)
核心逻辑拆解
拆开这段网表代码,我们干了这几件事:
端口特性实现 (
): (压控电压源):实现了端口 1 的关系。它根据内部节点 的电压 ,生成 。 (流控电流源):实现了端口 2 的关系,保证了电流变比符合 。
大脑:计算
( ):- 节点
的电压值就代表 。 是一个查表源(Table),它的输入是一个MAX函数。- 这个
MAX函数正是我们在上一段推导的「仲裁逻辑」。它比较输入的 (节点 5 的电压)和根据 DCM 公式算出来的值,取大的那个。 - 公式里的
这里写成了2*L*fs*v(5)*v(5)的形式(注意代码里的对应关系)。
- 节点
防呆机制 (
):- 这是一个辅助电路。为了防止仿真器在数值求解时算出负电流(比如瞬态震荡),我们用
把电流限制在必须大于 0。这保证了物理意义正确: 必须是正的。
- 这是一个辅助电路。为了防止仿真器在数值求解时算出负电流(比如瞬态震荡),我们用
参数设定: 子电路需要知道电感
15.4.3 实战演练 1:SEPIC 的双面人生
光有模型不行,得验货。我们拿一个 SEPIC 变换器开刀。 参数如下:
CCM/DCM 边界判定: 根据 SEPIC 的特性,这个边界条件大约是
我们选两个负载电阻跑一下仿真:
- R = 40 Ω(小于 46Ω):应该工作在 CCM。
- R = 50 Ω(大于 46Ω):应该工作在 DCM。
搭一个仿真测试台来验证它。 注意那个 Xswitch,调用的就是我们刚才写的 CCM-DCM1。 其中参数
频率响应对比(AC 分析): 跑一下 AC 扫描,看看控制到输出的传递函数
实线 (DCM, R=50Ω): 你看这条曲线,非常「干净」。低频有个主极点,后面是一对高频极点和零点。 这就是 DCM 的典型特征:一阶主导,乖乖听话。
虚线 (CCM, R=40Ω): 这条线看起来就「暴躁」多了。这是四阶系统! 两对高
值的复数极点在低频段就开始震荡,甚至还有右半平面(RHP)零点在 50kHz 附近准备搞破坏。
这就是坑点: 如果你只按照 DCM 的模型去设计补偿器,结果负载一重,变换器突然切入 CCM,你的环路增益瞬间暴涨,相位裕度瞬间跌成负数,系统直接炸机。 这个仿真直观地告诉我们:设计控制器时,必须考虑到这种模式切换带来的剧烈变化。
15.4.4 实战演练 2:Buck 变换器的环路稳定性测试
再来个更贴近工程的例子。第 9 章我们设计过一个 Buck 变换器电压调节器。现在我们要把这个调节器完整地放在 SPICE 里跑瞬态和环路分析。
模型细节:
- 用
CCM-DCM1替代了 MOSFET 和二极管。 - 用压控源
模拟了 PWM 调制器(设 ,并把占空比限制在 0.1 到 0.9 之间)。 - 补偿器和采样网络是用运放 LM324 搭的实电路。
- 给定了一个
.nodeset命令。这玩意儿很重要,因为强反馈电路的直流工作点很难收敛,我们得「推」仿真器一把,告诉它大概的电压在哪里(比如 )。
环路增益测试(Middlebrook 注入法): 我们要测环路增益
我们测两组数据:
- 重载 (
):工作在 CCM。 - 轻载 (
):工作在 DCM。
结果分析:
- CCM (
):穿越频率 ,相位裕度 。这和我们在 9.5.4 节的设计预期(5kHz, 52度)几乎完美吻合。 - DCM (
):穿越频率暴跌到了 !相位裕度变成了 。 虽然相位裕度变大了(看似更稳),但带宽损失太大了。这意味着环路的响应速度变得非常慢。
音频敏感度(Line-to-Output): 再看看输入扰动抑制。 在 100Hz 处,闭环增益:
- CCM: -38dB(非常好)
- DCM: -34dB(变差了,约 20mV 输出波动) 这证实了我们的担忧:在轻载(DCM)下,调节器的性能显著下降。
瞬态响应: 上狠活——负载阶跃。负载电流从 1.5A 瞬间跳到 5A。
- 开环:输出电压惨不忍睹,跌了 2V 以上,还要在那儿震荡半天。
- 闭环:虽然有个 0.2V 的凹陷,但迅速拉回来了,纹波很小。
本章小结
我们这一章走了一段漫长的路,从 DCM 的物理直觉开始,建立了无损电阻模型,推导了有效电阻
回到开头那个困惑:为什么我们不能只用简单的平均模型? 因为 DCM 的本质变了。电感不再总是存储能量,它变成了一种「受控的能量传递媒介」。这种机制的改变,让我们在面对环路设计时,必须时刻警惕两种模式之间的鸿沟。
现在手里有了 CCM-DCM1 这个仿真器,你就有了一个可靠的「数字沙盘」。下次当你设计一个可能跨越 CCM/DCM 边界的变换器时,别光盯着稳态曲线,一定要在 SPICE 里跑一圈 AC 分析,看看那条相位曲线是不是在某个时刻突然给你来个九十度急转弯。
💡 为什么是
MAX()而不是判电流正负? 你可能会问:判断 DCM 不就是看电感电流有没有归零吗,仿真器为啥要用「两个公式取大」这种绕弯路的仲裁?答案藏在收敛性里。直接用「if则切 DCM」是一个硬切换,它在边界上不连续,牛顿迭代法碰到不连续点会原地打转、直接不收敛。而「 」把两段曲线缝成了一条处处连续且光滑的曲线——边界上两条公式本来就相等(都等于 ),往两边走才分叉。仿真器最喜欢的就是这种「软切换」。这也是为什么工程仿真里,能用平滑函数表达的,绝不用 if-else。
参考说明:参考自 geqianQWQ 同学阅读《Fundamentals of Power Electronics》的笔记,仅作理解线索;本文为结合自己理解重新整理的学习笔记,不涉及对原书的复制或翻译。