14.3 平均电路模型的仿真
我们现在手握着三种基本开关网络的平均模型(Buck、Boost 和通用双开关网络)。理论上,你可以用纸笔推导出传递函数,或者算出稳态值。
但在实际工程里,还没等你算完,老板可能就已经在催要波形了;而且,当你面对一个包含几十个元件的复杂电路时,手算的出错概率会呈指数级上升。
这时候,我们需要把 SPICE 这种「计算暴君」请出来。但这里有个问题:直接拿开关电路去跑瞬态仿真,简直是噩梦——几纳秒的步长、几毫秒的调节时间,你的电脑可能会跑到冒烟,甚至因为仿真步长崩溃而报错。
本章前半部分建立的平均模型,这时候就要登场救场了。它不仅能用来推导公式,更是构造高效仿真模型的基石。
本节我们就来聊聊:如何把这些抽象的数学模型,翻译成 SPICE 能听懂的语言,并让它跑得飞快。
14.3.1 理想 CCM 平均开关网络的仿真模型
在上一节,我们做了一件核心的事:把开关网络「黑盒化」。
我们不再关心 MOSFET 在某个微秒是开是关,而是关心它在一个周期内的平均效果。这个思路在仿真里简直是降维打击。为什么?因为如果你能把开关网络变成一个固定的子电路,那么不管是 Buck、Boost 还是 SEPIC,你只需要「拔掉」开关,「插上」这个子电路,整个变换器就瞬间从「时变的非线性怪物」变成了「线性的直流+交流电路」。
这就是 SPICE 子电路的威力。
让我们看看怎么把这个想法落地。这里有一个通用的 CCM 平均开关子电路 CCM1。它是基于我们在 14.1 节推导出的通用双开关网络模型。
这其实只有四行核心代码。
别看这个子电路听着复杂,剥去外壳,它的本质就是两个受控源,忠实地执行着那两个核心平均方程:
端口 1(晶体管侧)的平均电压
: 这个受控电压源 的值,直接对应我们之前推导的式 (14.7):在网表里,
v(3, 4)就是端口 2 的电压 ,v(5)是控制电压 (也就是占空比,范围 0~1V)。端口 2(二极管侧)的平均电流
: 这个受控电流源 负责流出电流,对应式 (14.8):在网表里,
i(Et)也就是流过那个电压源 的电流,正好就是端口 1 的平均电流 。
来看一下这四行核心代码:
.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就这么简单。
- 节点
1和2接晶体管端口。 - 节点
3和4接二极管端口。 - 节点
5是控制端,给它加一个 0 到 1 之间的电压,就代表设定了占空比 。
⚠️ 注意 这里有个大坑。这组方程在
有了这个 CCM1,你就可以像搭积木一样,把任何 CCM 变换器的开关部分替换成这个四端网络。它不含变压器,假设所有开关都是理想的。
14.3.2 导通损耗的平均开关建模与仿真
理想模型很美好,但现实很骨感。
在实验室里,如果你相信 CCM1 算出来的效率是 100%,那你大概率会被实验数据打脸。真实的 MOSFET 有导通电阻
这些损耗怎么算?我们当然可以在瞬态仿真里用详细的器件模型(SPICE 里自带的 MOS 和 Diode 模型)去跑。但刚才说了,那样太慢,而且为了看损耗去跑纳秒级的开关动作有点杀鸡用牛刀。
既然我们已经有了平均法的框架,能不能直接把损耗「塞」进那个四端网络里?
当然可以。让我们回到 SEPIC 的例子,这次我们给晶体管串联一个电阻
这部分的数学推导有点绕,但跟 14.1 节的逻辑是一模一样的:列出波形 → 取平均 → 消去内部变量。
波形观察: 电压波形变了。当晶体管导通时,
不再是 0,而是 ;当二极管导通时, 里多了一个 。取平均: 写出端口电压
和 的表达式。你会发现里面混杂了电感电流和电容电压的平均值。消去内部变量(关键一步): 我们需要把模型里的
统统换掉,只保留端口变量 和 。 利用输入输出功率平衡的变种关系(式 14.43 和 14.44),经过一番代数操作(见文中式 14.41 到 14.46),我们得到了一个新的端口关系:这个式子看着有点吓人,但它画成电路就非常直观了:
- 中间那个
的理想变压器还在——这是无损的能量传输部分。 - 变压器前面多了一个电阻
。注意,这个电阻是 除以 的!这意味着占空比越小,等效电阻越大,损耗越恐怖。 - 还有一个电压源
,代表二极管的固定压降损耗。
- 中间那个
这就是大信号非线性模型。你看,它并没有因为加了损耗就变成「黑盒」,所有的物理意义都保留在电路拓扑里。
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注意这里有一个巧思:它用了两个电压源串联(
还是负责那个理想变压器的功能,但把 加进去了。 负责处理电阻项。你会发现那个分母又是 (也就是 ),这正是我们推导出的 效应。
有了这个 CCM2,你就可以在仿真里干一件很酷的事:扫描 MOSFET 的导通电阻,看它对效率曲线的影响。
⚠️ 注意 这个模型假设 CCM(连续导通模式)。如果占空比太小,变换器进入了 DCM(断续模式),或者二极管压降
14.4 示例:SEPIC 的直流变换比与效率
光说不练假把式。我们拿 SEPIC 电路开刀,看看怎么用 CCM2 提取关键指标。
我们的测试台是这样搭的。
- 我们用
Xswitch把那个复杂的开关网络换成了我们的CCM2。 - 设定参数:
, 。为了测试 的影响,我们定义一个参数Ron,并在.step命令里让它从 变到 。
我们要做什么? 跑一个 DC 扫描(.dc)。 我们让控制电压
结果就是这样。
这两张图(增益比
低压差区(
很小时): 效率崩盘。为什么?因为此时输出电压很低,但二极管那个 的压降是雷打不动的。就像你用一张 100 元的支票去买 5 块钱的糖果,手续费( )就把你吃穷了。大占空比区(
接近 1 时): 效率也崩盘,输出电压反而掉了。这时候是因为 这项随着 变大虽然分母变大,但电流本身急剧上升, 损耗爆炸。中间区域: 效率最高。这就是设计的甜点。
通过这种仿真,你可以很快决定:选一个
14.5 示例:Buck-Boost 变换器的瞬态响应
除了稳态(直流工作点),我们更关心瞬态:「如果负载突然跳变,输出电压会跌多少?」「启动的时候,会不会炸机?」
这里有两个流派:详细开关模型 vs 平均模型。
我们用 Buck-Boost 电路来做一个死亡PK。
选手 A:详细开关模型 这是真实的玩法。用电压控制开关 S_q1,给个 10V 的脉冲源
选手 B:平均电路模型 这是我们的 CCM2 登场了。 注意看这版网表:那个脉冲源 pulse 不见了,取而代之的是一个简单的直流电压源 Vc 5 0 0.8(直接设定占空比 Xswitch 替代。
对决结果:
波形对比: 把两条曲线叠在一起。你会发现,开关模型的波形上叠加着高频锯齿(纹波),而平均模型的波形是光滑的包络线。 但是,它们的低频轮廓完全重合! 启动时的过冲、调节时间、稳态值,两者惊人地一致。
启动过冲(吓人的地方): 电感电流在启动瞬间飙到了 50A!而稳态才只有 10A 左右。 如果你的 MOSFET 或者电感是按 10A 选型的,这一下启动脉冲可能直接让它们「光荣牺牲」。 这就是为什么工程上需要 软启动——让占空比慢慢从 0 涨到 0.8,而不是一上来就满油门。
胜负判词: 如果你想看微秒级的开关细节,用选手 A;但如果你只想看系统的动态响应、环路稳定性或者做大量的参数扫描,选手 B(平均模型)是绝对的王者。它跑得快,不容易发散,而且能直接帮你做 AC 小信号分析(这是下一章的内容,虽然这里没细讲,但这是平均模型的隐藏大招)。
本章小结与回响
回扣我们在本章开头提出的问题:为什么我们需要折腾这些「平均」的概念? 现在答案很清楚了。
我们在本章构建了一套通用的方法论:把时变的、非线性的开关网络,抽象为一个时不变的、受控源构成的黑盒子。
CCM1让我们看到了无损世界的本质——那个 的理想变压器。CCM2让我们看到了现实世界的代价—— 带来的效率惩罚。
这不仅仅是为了算几个公式。这套方法论直接催生了高效的仿真手段(CCM2 子电路),让我们能在 SPICE 里以秒级为单位评估系统的性能,而不是以小时级去等待开关瞬态的收敛。
还记得 14.1.4 节提到的「直接功率」与「间接功率」吗?通过仿真模型,你可以直观地看到,当占空比变化时,功率是如何通过那个等效变压器被「间接」传递和损耗的。
下一章,我们将利用这个「时不变」的特性,做一件只有平均模型才能做的事——AC 小信号分析。我们将让变换器「唱歌」,听听它的频率响应,从而设计出让它稳如泰山反馈环路。
参考说明:参考自 geqianQWQ 同学阅读《Fundamentals of Power Electronics》的笔记,仅作理解线索;本文为结合自己理解重新整理的学习笔记,不涉及对原书的复制或翻译。