Skip to content

14.3 平均电路模型的仿真

我们现在手握着三种基本开关网络的平均模型(Buck、Boost 和通用双开关网络)。理论上,你可以用纸笔推导出传递函数,或者算出稳态值。

但在实际工程里,还没等你算完,老板可能就已经在催要波形了;而且,当你面对一个包含几十个元件的复杂电路时,手算的出错概率会呈指数级上升。

这时候,我们需要把 SPICE 这种「计算暴君」请出来。但这里有个问题:直接拿开关电路去跑瞬态仿真,简直是噩梦——几纳秒的步长、几毫秒的调节时间,你的电脑可能会跑到冒烟,甚至因为仿真步长崩溃而报错。

本章前半部分建立的平均模型,这时候就要登场救场了。它不仅能用来推导公式,更是构造高效仿真模型的基石。

本节我们就来聊聊:如何把这些抽象的数学模型,翻译成 SPICE 能听懂的语言,并让它跑得飞快。


14.3.1 理想 CCM 平均开关网络的仿真模型

在上一节,我们做了一件核心的事:把开关网络「黑盒化」。

我们不再关心 MOSFET 在某个微秒是开是关,而是关心它在一个周期内的平均效果。这个思路在仿真里简直是降维打击。为什么?因为如果你能把开关网络变成一个固定的子电路,那么不管是 Buck、Boost 还是 SEPIC,你只需要「拔掉」开关,「插上」这个子电路,整个变换器就瞬间从「时变的非线性怪物」变成了「线性的直流+交流电路」。

这就是 SPICE 子电路的威力。

让我们看看怎么把这个想法落地。这里有一个通用的 CCM 平均开关子电路 CCM1。它是基于我们在 14.1 节推导出的通用双开关网络模型。

这其实只有四行核心代码。

别看这个子电路听着复杂,剥去外壳,它的本质就是两个受控源,忠实地执行着那两个核心平均方程:

  1. 端口 1(晶体管侧)的平均电压 v1(t)Ts: 这个受控电压源 Et 的值,直接对应我们之前推导的式 (14.7):

    v1(t)Ts=d(t)d(t)v2(t)Ts

    在网表里,v(3, 4) 就是端口 2 的电压 v2(t)Tsv(5) 是控制电压 d(t)(也就是占空比,范围 0~1V)。

  2. 端口 2(二极管侧)的平均电流 i2(t)Ts: 这个受控电流源 Gd 负责流出电流,对应式 (14.8):

    i2(t)Ts=d(t)d(t)i1(t)Ts

    在网表里,i(Et) 也就是流过那个电压源 Et 的电流,正好就是端口 1 的平均电流 i1(t)Ts

来看一下这四行核心代码:

.subckt CCM1 1  2  3  4  5
Et 1 2 value={(1-v(5))*v(3,4)/v(5)}
Gd 4 3 value={(1-v(5))*i(Et)/v(5)}
.ends

就这么简单。

  • 节点 12 接晶体管端口。
  • 节点 34 接二极管端口。
  • 节点 5 是控制端,给它加一个 0 到 1 之间的电压,就代表设定了占空比 D

⚠️ 注意 这里有个大坑。这组方程在 d(t)=0 的时候会发生除以零的奇异性。所以在用这个子电路时,千万别把占空比设为 0。如果要在 0 附近扫描,至少从 0.01 或者 0.05 开始,否则仿真器会直接给你报错。

有了这个 CCM1,你就可以像搭积木一样,把任何 CCM 变换器的开关部分替换成这个四端网络。它不含变压器,假设所有开关都是理想的。


14.3.2 导通损耗的平均开关建模与仿真

理想模型很美好,但现实很骨感。

在实验室里,如果你相信 CCM1 算出来的效率是 100%,那你大概率会被实验数据打脸。真实的 MOSFET 有导通电阻 Ron,真实的二极管有正向压降 VD

这些损耗怎么算?我们当然可以在瞬态仿真里用详细的器件模型(SPICE 里自带的 MOS 和 Diode 模型)去跑。但刚才说了,那样太慢,而且为了看损耗去跑纳秒级的开关动作有点杀鸡用牛刀。

既然我们已经有了平均法的框架,能不能直接把损耗「塞」进那个四端网络里?

当然可以。让我们回到 SEPIC 的例子,这次我们给晶体管串联一个电阻 Ron,给二极管串联一个压降 VD。我们的目标是:推导一个包含这些损耗参数的、新的平均开关模型。

这部分的数学推导有点绕,但跟 14.1 节的逻辑是一模一样的:列出波形 → 取平均 → 消去内部变量

  1. 波形观察: 电压波形变了。当晶体管导通时,v1(t) 不再是 0,而是 Ron(iL1+iL2);当二极管导通时,v2(t) 里多了一个 VD

  2. 取平均: 写出端口电压 v1Tsv2Ts 的表达式。你会发现里面混杂了电感电流和电容电压的平均值。

  3. 消去内部变量(关键一步): 我们需要把模型里的 iL1,iL2,vC1,vC2 统统换掉,只保留端口变量 i1Tsv2Ts。 利用输入输出功率平衡的变种关系(式 14.43 和 14.44),经过一番代数操作(见文中式 14.41 到 14.46),我们得到了一个新的端口关系:

    v1(t)Ts=Roni1(t)Ts+d(t)d(t)(v1(t)Ts+v2(t)Ts+VD)

    这个式子看着有点吓人,但它画成电路就非常直观了:

    • 中间那个 d:d 的理想变压器还在——这是无损的能量传输部分。
    • 变压器前面多了一个电阻 Ron/d。注意,这个电阻是 除以 d 的!这意味着占空比越小,等效电阻越大,损耗越恐怖。
    • 还有一个电压源 VD,代表二极管的固定压降损耗。

这就是大信号非线性模型。你看,它并没有因为加了损耗就变成「黑盒」,所有的物理意义都保留在电路拓扑里。


14.3.3 在仿真中包含开关导通损耗

既然理论模型有了,我们来升级一下我们的 SPICE 子电路。

我们将 CCM1 升级为 CCM2。 这次,我们在子电路里引入了三个参数:

  • Ron:晶体管导通电阻。
  • VD:二极管正向压降。
  • RD:二极管导通电阻(为了通用性,把二极管也加个内阻)。

看一眼它的网表:

.subckt CCM2 1  2  3  4  5 params: Ron=0 VD=0 RD=0
Er 1 1x value={i(Et)*(Ron+(1-v(5))*RD/v(5))/v(5)}
Et 1x 2 value={(1-v(5))*(v(3,4)+VD)/v(5)}
Gd 4 3 value={(1-v(5))*i(Et)/v(5)}
.ends

注意这里有一个巧思:它用了两个电压源串联(ErEt)。

  • Et 还是负责那个理想变压器的功能,但把 VD 加进去了。
  • Er 负责处理电阻项。你会发现那个分母又是 v(5)(也就是 d),这正是我们推导出的 Ron/d 效应。

有了这个 CCM2,你就可以在仿真里干一件很酷的事:扫描 MOSFET 的导通电阻,看它对效率曲线的影响。

⚠️ 注意 这个模型假设 CCM(连续导通模式)。如果占空比太小,变换器进入了 DCM(断续模式),或者二极管压降 VD 比输出电压还大,这个模型的数学基础就崩了,会算出负电压这种荒唐结果。用的时候心里要有数。


14.4 示例:SEPIC 的直流变换比与效率

光说不练假把式。我们拿 SEPIC 电路开刀,看看怎么用 CCM2 提取关键指标。

我们的测试台是这样搭的。

  • 我们用 Xswitch 把那个复杂的开关网络换成了我们的 CCM2
  • 设定参数:VD=0.8VRD=0.05Ω。为了测试 Ron 的影响,我们定义一个参数 Ron,并在 .step 命令里让它从 0Ω 变到 1Ω

我们要做什么? 跑一个 DC 扫描.dc)。 我们让控制电压 Vc(也就是占空比 D)从 0.1 扫到 1.0。仿真器会迅速算出每一个占空比对应的稳态工作点,完全不需要等它慢慢过渡。

结果就是这样。

这两张图(增益比 V/Vg 和效率 η)非常有价值:

  1. 低压差区(D 很小时): 效率崩盘。为什么?因为此时输出电压很低,但二极管那个 0.8V 的压降是雷打不动的。就像你用一张 100 元的支票去买 5 块钱的糖果,手续费(VD)就把你吃穷了。

  2. 大占空比区(D 接近 1 时): 效率也崩盘,输出电压反而掉了。这时候是因为 Ron/d 这项随着 d 变大虽然分母变大,但电流本身急剧上升,I2R 损耗爆炸。

  3. 中间区域: 效率最高。这就是设计的甜点。

通过这种仿真,你可以很快决定:选一个 Ron=0.5Ω 的管子够不够?还是得咬牙买个贵的、Ron 更低的?


14.5 示例:Buck-Boost 变换器的瞬态响应

除了稳态(直流工作点),我们更关心瞬态:「如果负载突然跳变,输出电压会跌多少?」「启动的时候,会不会炸机?」

这里有两个流派:详细开关模型 vs 平均模型

我们用 Buck-Boost 电路来做一个死亡PK。

选手 A:详细开关模型 这是真实的玩法。用电压控制开关 S_q1,给个 10V 的脉冲源 vc 驱动它。MOSFET 有 50mΩ 的导通电阻,二极管有压降。 这种模型能让你看到每一个开关周期的纹波,甚至开关瞬间的尖峰。 但是,为了看 1.2ms 的启动过程,仿真器得忍受几纳秒的步长,计算成千上万次开关动作。慢,极其慢。

选手 B:平均电路模型 这是我们的 CCM2 登场了。 注意看这版网表:那个脉冲源 pulse 不见了,取而代之的是一个简单的直流电压源 Vc 5 0 0.8(直接设定占空比 D=0.8)。开关网络被黑盒 Xswitch 替代。

对决结果

  • 波形对比: 把两条曲线叠在一起。你会发现,开关模型的波形上叠加着高频锯齿(纹波),而平均模型的波形是光滑的包络线。 但是,它们的低频轮廓完全重合! 启动时的过冲、调节时间、稳态值,两者惊人地一致。

  • 启动过冲(吓人的地方): 电感电流在启动瞬间飙到了 50A!而稳态才只有 10A 左右。 如果你的 MOSFET 或者电感是按 10A 选型的,这一下启动脉冲可能直接让它们「光荣牺牲」。 这就是为什么工程上需要 软启动——让占空比慢慢从 0 涨到 0.8,而不是一上来就满油门。

胜负判词: 如果你想看微秒级的开关细节,用选手 A;但如果你只想看系统的动态响应、环路稳定性或者做大量的参数扫描,选手 B(平均模型)是绝对的王者。它跑得快,不容易发散,而且能直接帮你做 AC 小信号分析(这是下一章的内容,虽然这里没细讲,但这是平均模型的隐藏大招)。


本章小结与回响

回扣我们在本章开头提出的问题:为什么我们需要折腾这些「平均」的概念? 现在答案很清楚了。

我们在本章构建了一套通用的方法论:把时变的、非线性的开关网络,抽象为一个时不变的、受控源构成的黑盒子。

  • CCM1 让我们看到了无损世界的本质——那个 d:d 的理想变压器。
  • CCM2 让我们看到了现实世界的代价——Ron/d 带来的效率惩罚。

这不仅仅是为了算几个公式。这套方法论直接催生了高效的仿真手段(CCM2 子电路),让我们能在 SPICE 里以秒级为单位评估系统的性能,而不是以小时级去等待开关瞬态的收敛。

还记得 14.1.4 节提到的「直接功率」与「间接功率」吗?通过仿真模型,你可以直观地看到,当占空比变化时,功率是如何通过那个等效变压器被「间接」传递和损耗的。

下一章,我们将利用这个「时不变」的特性,做一件只有平均模型才能做的事——AC 小信号分析。我们将让变换器「唱歌」,听听它的频率响应,从而设计出让它稳如泰山反馈环路。


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

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