跳转到内容

变换器仿真器

选择拓扑(topology)或预设,选定负载,并以 SI 单位设置参数,可带或不带前缀(100u 与 0.0001 是同一电感量,200k 与 200000 是同一频率):输入数值,或拖动其滑块,滑块的范围为该数值上下各一个数量级,占空比(duty ratio)的滑块则为 0 到 1。内容不是数字的输入栏会变红。换用新的负载或启用电源时,新增的每个输入栏都会填入某个示例中的数值,之后可以修改。仿真器计算周期稳态(periodic steady state)的一个周期,并显示:

  • 波形:电感电流和电压、二极管电流、开关管电压和输出电压,有电池时还有电池电流;
  • 检测到的导通模式(conduction mode),以及 KK 和 KcritK_\mathrm{crit};
  • 同一工作点(operating point)下的仿真值,与公式目录中的公式并列对照;
  • 由波形计算的损耗和效率(efficiency),以及负载功率的去向。

电路没有周期稳态时,仿真器会说明原因,并改为显示从零初始状态开始的启动过程(start-up),见下文。

一切都在你的浏览器中运行,使用经测试套件验证的 pe-core 引擎。URL 包含全部状态,学习页面上的“动手试试”链接会以预设打开仿真器。

每个变换器都是一组线性电路,开关周期的每个区间对应其中一个:开关管导通;开关管关断、二极管导通(conduction);在 DCM 下还有空闲区间(idle interval)[Erickson & Maksimović 2020, Ch. 2]、[Erickson & Maksimović 2020, Ch. 5]。

  • 开关管与二极管。晶体管是理想开关,可设导通电阻(on-resistance),两端并联一个理想的体二极管(body diode)。二极管为恒定的正向压降(forward drop),理想地阻断(blocking),没有反向恢复(reverse recovery)。电感可以带绕组电阻(winding resistance)。电流不会反向流过二极管,而是就此停止:输出高于 nVgn V_g 减去二极管压降时,正激变换器的整流二极管(rectifier diode)阻断。流过开关管的负电流经其体二极管流动,体二极管在零电压下导通:关断后直到电流降到零为止;开关管导通期间也是如此,此时由体二极管代替导通电阻流过该电流。
  • 变压器。除励磁电感(magnetizing inductance)外均为理想变压器(1:n,nn 为二次绕组匝数除以一次绕组匝数)。不含漏感(leakage inductance)。
  • 开关过渡(transition)。开关管两端没有电容时,开关过渡是瞬时的。有电容时,关断后电感电流为该电容充电,直至二极管接过电流。二极管导通期间,该电容的电压跟随开关管电压,而开关管电压随输出纹波和输入纹波变化,因此该电容分担了输出电容和输入电容电流中的相应部分。二极管电流降到零后,电感与该电容发生振铃(ringing,振铃频率)。开关管的体二极管把振铃钳位在开关管电压为零处,电容中的能量在每次开通时损耗掉(容性开通损耗)。因此,有该电容时,输入能量同样等于输出能量加上损耗。
  • 电源驱动模式(source-driven mode)。输入可以不是固定电压,而是为母线电容充电的戴维南电源(Thevenin source)。输出和占空比固定时,这一模式再现了反激变换器的恒压负载(constant-voltage sink)特性(被锁定的输入电压)。

输出电容 CC 两端并接以下之一:

  • 电阻 RR;
  • 电池:开路电压(open-circuit voltage)VbV_b 串联内阻(internal resistance)RbR_b,即 Rint 模型 [He et al. 2011, Sec. 2.1];
  • 电池和电阻;
  • 什么也不接,电容从其初始电压 V0V_0 开始充电。

或者,输出为不带电容的理想固定电压 VV(内阻可忽略的电池或稳压母线)。电池电流为

Ib=V−VbRbI_b = \frac{V - V_b}{R_b}
IbI_b
电池电流(充电为正)
RbR_b
电池内阻(internal resistance)
VV
输出电压
VbV_b
电池开路电压(open-circuit voltage)
Rint 模型中的电池电流✓ 经 8 项测试验证
假设、约定与出处
假设
  • 电池建模为开路电压与内阻串联(Rint 模型)
备注
端电压高于开路电压时电池充电,低于时放电;开路电压和内阻随荷电状态、健康状态和温度变化,仿真器在其计算的各周期内将它们保持为常数
出处
He et al. 2011, Sec. 2.1 (The Rint Model)
公式 id
bat.rint · equations.yaml 条目

电池充电时该电流为正。实际电池的内阻和开路电压随荷电状态(state of charge)、健康状态(state of health)和温度而变 [He et al. 2011, Sec. 2.1];仿真器把二者都取为常数,相当于处于某一荷电状态的电池。在仿真器计算的周期内(寻找稳态需要几个周期,启动过程最多几百个周期),电池获得的电荷只占任何实际电池容量的极小一部分。图表下方的负载表把电池的功率分为开路电压吸收的部分(VbV_b 乘以电池平均电流)和内阻耗散的部分(RbR_b 乘以该电流的均方值)。

周期稳态要求每个状态在周期结束时都回到其起始值。对电感而言,这就是伏秒平衡(伏秒平衡),对电容而言则是电荷平衡(电荷平衡)[Erickson & Maksimović 2020, Ch. 2]。有些电路无法满足这些条件,此时仿真器会指出哪个状态在持续变化、每个周期变化多少,并以从零初始状态(无电流,电容处于其初始电压或电池电压)开始的启动过程代替稳态周期显示出来:

  • 失控增长的电感电流。由固定输入在 CCM 下供电的固定输出,只在一个占空比下使电感的伏秒积平衡。占空比高于该值时,电感在一个周期内承受的平均电压为正,电流每个周期都增加相同的量(一个周期内的变化量)。占空比低于该值时,电流则在周期内降到零,变换器稳定在 DCM。提示信息给出每个周期的变化量、该平均电压,以及元件理想时能使伏秒积平衡的占空比:以固定输出与输入之比作为变换比(升降压变换器的输出反相,该比值为负),由公式目录中的 CCM 电压变换比解出 DD。例如,接固定输出的反激变换器,在每个导通区间获得的电流增量等于 DCM 下其励磁电流从零开始的上升量(导通区间的上升量),而在关断区间失去的,只是反射到一次侧的输出电压在剩余时间内带走的部分。占空比超过正激变换器的磁复位限制(最大占空比)时,其励磁电流也以同样的方式逐周期增大,此时提示信息会指出这一限制。元件理想且占空比恰好等于平衡占空比时,无论电流多大,伏秒积都平衡:凡是在周期开始和结束时取值相同的电流都是稳态,仿真器报告的是它从起始点出发所到达的那个稳态。占空比与平衡占空比极为接近、使电流每个周期的变化量小于其在周期内变动幅度的百万分之一时,能通过下文的收敛判据,视为平衡。
  • 无限制充电的电容。两端不接任何元件时,输出电容保留每个周期送来的电荷。接在开关管两端没有电容的升压、升降压或反激变换器之后时,每个周期都在电感中储存能量,并且无论输出电压多高都把能量传递出去,因此电容无限制地充电。提示信息给出已达到的电压和每个周期的增量。
  • 在周期数上限内未能稳定的其他任何情况,例如无阻尼的 L-C 振铃。

接在其他变换器之后时,单独的电容确实会稳定下来:

  • 在降压变换器之后,由于开关管可双向导通,电容无论从低于还是高于输入电压处出发,都稳定在输入电压。搜索即从该电压开始。
  • 在正激变换器之后,以及在开关管两端有电容的升压、升降压或反激变换器之后,电容在不再有电荷流入时停止充电:正激变换器的整流二极管不允许电流反向流回,因此电容停在约 nVgn V_g 减去二极管压降处(有 RonR_\mathrm{on} 时略低于该值)或更高的电压;其他变换器则停在这样一个电压:电感已无法再把节点电容抬升到该电压。高于该电压的每个电压也都是稳态,电容停在哪一个取决于其启动过程:L-C 充电可能过冲并保持其峰值,从零初始状态开始的最初几个周期携带的能量可能多于周期性振铃,先跌落后恢复的输入母线也会在此过程中改变该电压。因此,仿真器从 V0V_0 开始跟踪启动过程,并从电容停止充电之处开始搜索:连续 50 个周期没有电荷流入,或在其他所有状态都重复自身的情况下连续 3 个周期没有电荷流入。在这样的停顿之后又重新充电的启动过程,最终停在高于所报告电压之处。若每个周期的电荷反而稳定地减小并趋于某一极限,且其他所有状态都重复自身,仿真器就搜索这一极限,即不再有电荷流入的最低电压;以越来越小的步幅充电的启动过程停在略高于该电压处(在试算的算例中约高出该电压的一亿分之一)。仿真器最多跟踪 4000 个周期和两百万个子步(sub-step):有节点电容时,其振铃需要更多子步,这相当于 100 到 1000 个周期,随机试验经常达到这一上限。届时仍在充电的启动过程从其到达之处开始搜索;若该搜索失败,或找到的电压低于启动过程已达到的电压,则改为从上方寻找稳态:先使电容电压高到没有电荷流入,再把电压降到不再有电荷流入的最低电压。这样的启动过程,其报告值低于它本会停止的电压,随机试验中最多低约 0.07 %;从上方找到的稳态则可能比该电压高出百万分之几。跟踪过的周期计入结果所报告的周期数。

没有稳态时,就没有导通模式、与公式的对比,也没有负载表和损耗表:它们描述的都是周期稳态。

图表下方把稳态周期划分为若干模态(mode):每个模态是周期中由同一个线性电路描述的一段(开关管导通、二极管导通、DCM 的空闲区间 [Erickson & Maksimović 2020, Ch. 5]、节点电容的电压上升与振铃、正激变换器的复位)。用模态按钮选择一个模态,或点击图表;图表上以阴影标出该模态。对于所选模态,视图显示:

  • 电路图:该模态中流过电流的支路以彩色显示,其余支路为灰色;每条彩色支路上有一个箭头,指向其电流的方向(电流在模态内反向时画双箭头)。栅极信号为导通时,开关管画成闭合状态;与开关管并联的体二极管流过电流时以彩色显示。每个元件旁标有其名称和状态;
  • 工作过程:先说明该模态中哪些部分导通、如何连接;然后对每个流过电流的电感,给出该模态内其两端的平均电压,即表中的数值(有绕组电阻时,分为电阻上的压降和电感本身两端的电压),以及其电流如何变化;对正激变换器的励磁电感,说明其电流是已回到零(即磁芯复位),还是在开关管再次开通时仍未回到零;最后根据表中的状态,对输出电容、电池或固定输出、输入电源或电源及其母线电容各写一句;
  • 表格:列出每个元件的状态、其在模态开始和结束时的电流及其在模态内的平均值(与周期平均值一样,是在模态内的精确积分除以模态长度;电压的平均值也是如此),以及仿真器给出电压的元件的电压。各电流以电路图上该元件箭头的方向为正,即其在该模态内平均电流的方向;负值表示电流逆箭头方向流动。电感电压同样沿其箭头方向取值,因此电感两端电压为正时,沿箭头方向的电流增大;电感电压包含绕组电阻上的压降。其他电压均沿元件自身的方向。

状态从该模态的仿真波形中读取,从不预先假定:电感电流的绝对值增大时电感储存能量,减小时释放能量,在模态内先增大后减小(或先减小后增大)的电流也照此报告;电容或电池在电流流入其正端时充电;电源在电流从其正端流出时提供功率,电流在模态内改变方向的电源或固定输出则功率双向流动;只改变一次符号的电流,报告时附有其反向的时刻。模态也按导通的部分命名:正激变换器的开关管导通区间中,若整流二极管没有可计入的电流,该模态即为“整流二极管阻断”;开关管关断区间中,若二极管没有电流,该模态即为“空闲”,有节点电容时则为“振铃”。各状态在仿真器于该模态内记录的采样点上读取,即每个子步(周期的两千分之一)处以及每个事件(event)的前后两侧:比子步还短的模态,例如持续几纳秒的节点电容电压上升,由其两端读取。电感的状态还考虑其电流在模态内、采样点之间的精确极值:在节点电容电压上升之后的第一个子步内达到峰值的电流,读作先储存后释放。

小于其基准值(scale)千分之一的电流,在电路图、状态和表格中都按无电流处理。基准值是该模态期间与该电流同组流动的元件中的最大电流,各组为:开关单元(开关管、各二极管、各绕组、各电感、节点电容和直接相连的输入;变压器的一次侧与二次侧分开,因为匝比使两侧电流相互按比例缩放)、输出电容及负载、母线电容及电源。因此,二极管流过安培级电流时,节点电容经输入吸取的微安级电流不算作电流通路;而振铃使二极管重新导通几纳秒时流过的电流,无论与周期峰值相比多么小,都是该模态中发生的全部过程。电感的基准值不超过其自身在周期内的最大电流:正激变换器的励磁电流只有负载电流的千分之一,按其自身大小衡量。电容的基准值不小于负载或电源吸取的电流:单独为兆欧级电阻供电的电容,其电流计入;向吸取安培级电流的电池缓慢注入纳安级电流的电容,其电流不计入。电阻、电池、固定输出以及电源及其内阻本来就在每个模态中导通,它们以自身在周期内的最大电流为基准。然后,每个节点上计入的电流必须平衡:若不平衡(例如电池在其充电脉冲之间向电阻供电,而该电流远小于脉冲电流的千分之一),就把该节点上未计入的电流中最大的那个元件,改以该节点上计入的最大电流为基准来衡量,直到每个节点都平衡。一段导线在其两侧元件之间传递的电流,若相对于两侧元件中基准值最小者可以计入,该导线就以彩色显示,因此彩色通路绝不会止于某个节点。计入的电流是增大还是减小,则判断得更细,从其基准值的百万分之一起计。

舍入误差则在更低的层面上处理:小于电路自然电流(电路中最大的电压在一个周期内于其电感中建立的电流)十亿分之一的电流一律不计;短于周期十亿分之一的模态(例如残留的 10−2110^{-21} A 电流使开关管经其体二极管导通 10−2610^{-26} s)并入相邻的模态;所有电流都只是舍入误差的电路(例如处于稳态电压的单独电容)显示为静止,没有模态,图表上也没有模态阴影带。

电路图和表格使用相同的电流,这些电流来自模型对每个元件的输出:对于每种拓扑、负载、节点电容和电源,所绘电路的每个节点在周期内的每一时刻都满足基尔霍夫电流定律(sim-schematic.test.ts)。在二极管或电感电流结束的各模态边界附近,该电流最后一次向下穿过其周期平均值 5 % 的时刻,在下文 SPICE 对比的每个电路中都与 ngspice 相差不超过 3 ns(最坏情况下为 2.1 ns)。

工作模态视图下方的全部模态一览绘出整个周期。首先是在同一时间轴上上下排列的主要波形:栅极信号、电感电流、开关管电流(包括其体二极管的电流,为负值)和二极管电流、开关管电压和电感电压;对于正激变换器,以励磁电流和两个输出二极管的电流代替电感电压。模态之间的边界 t0t_0、t1t_1……以虚线标出,每行的最大值标在其右侧,有空间时也标出最小值。然后是按顺序标为 (a)、(b)……的各模态电路,其颜色、箭头和说明与工作模态视图相同。与页面上的其他内容一样,它随表单中的数值变化。各拓扑页面都用各自的例题展示这一视图,降压变换器页面即为一例。

下述思路连同具体算例,见浏览器内仿真器的工作原理页面。

  • 在一个区间内,状态(电感电流、电容电压)服从线性微分方程。仿真器用该方程的精确解(矩阵指数)逐个子步计算状态,子步为开关周期的两千分之一,必要时更短,使电路中最快振铃的一个周期至少跨越二十个子步,最短可达周期的两万分之一。最快的振铃由各区间方程的特征值(eigenvalue)得出,其来源有开关管两端的电容、与电感一起振铃的小输出电容以及输入母线。若振铃快到即使子步取到最短,一个振铃周期仍不足三个子步,该电路就会被拒绝:二极管可能在两个子步之间导通又关断而不被察觉。无稳态时绘制的启动过程也遵循同一规则。矩阵指数用基于帕德近似(Padé approximant)的缩放与平方法(scaling and squaring)计算 [Higham 2005],并以减去单位矩阵的形式构造和平方。在此之前,先用 2 的幂对各状态重新缩放(这是精确的),直到每个状态与其他状态之间的耦合在两个方向上大小相近(平衡化,balancing [Parlett & Reinsch 1969]):否则,位于不小的源内阻之后的极小母线电容,会使矩阵的量级远大于其最快模态,而近似内部的线性方程组求解就会以这些大的耦合项为主元(pivot),使较慢的状态损失有效数字。因此,远短于子步的时间常数不会使它们损失有效数字。

  • 二极管电流降到零、钳位开始导通等事件,在同一精确解上于子步内定位,所用搜索像二分法(bisection)一样始终把事件夹在一个区间内,即试位法(regula falsi)的 Illinois 变体,所需步数少得多。一个事件使子步提前结束时,其他条件在该时刻重新检查。在子步中较早满足、但到子步结束时已不再成立的条件,视为先发生:例如节点电容的电压上升,在电流于电压峰值处降到零之前的瞬间越过二极管的开通电压。栅极信号的边沿恰好位于周期起点和占空比对应的时刻。

  • 平均值、功率与极值。在一个区间内,页面报告的每个物理量都是状态的一次(仿射,affine)函数,而在两个采样点之间,状态严格遵循该区间的方程。因此,平均值、功率以及有效值(rms)和导通损耗所依据的均方值,都是该解在每个子步上的精确积分,而不是按采样点之间的直线计算的结果。它们取自由该区间方程构造的一个更大矩阵的指数 [Van Loan 1978],与步进计算一样经过重新缩放并以减去单位矩阵的形式构造,计算时使用各状态相对于本周期在该区间内第一个状态的偏差,并以两倍精度对该处的变化率求和。这样,常数部分远大于变化部分的物理量,例如小电阻之后的电池电流,就能保留其采样点所给出的有效数字:分辨率为电池电压末位的一个单位除以其内阻,与电池并联的电容的电流也具有这一分辨率。比子步更快的瞬态过程,例如远短于子步的时间常数,与慢过程一样被精确积分。在相同采样点下,在所测试的电路中(包括时间常数比子步短几千亿倍的电路),结果与 60 位精度的积分相符到各物理量量级的万亿分之几;两种子步网格之间的结果相符到约百亿分之一。在数百个随机电路中,只要两种网格看到相同的事件,从同一起点出发的两种网格就以同样的精度相符(以电路的最大电流或电压为基准),直至电池电流的分辨率;在电流本身只是舍入误差的情况下,例如已稳定的单独电容,两者相符到该舍入误差。若一种网格看到二极管在某个子步内短暂导通,而另一种没有,两者之差就是这次导通所传输的量(见下文的“模型之外”)。每个物理量的最大值和最小值也包括两个采样点之间的峰值:斜率在一个子步内改变符号之处,以及斜率在一个子步内下穿零点又返回之处(叠加在更陡斜坡上的振铃)。在子步起点附近,即快速瞬态过程衰减之处,也会检查斜率。处于斜率自身舍入误差范围内的转折不作搜索;而几乎不动、只在其自身数值舍入误差量级上变化的物理量,仍在其斜率转折处搜索,这使少数电路的计算慢了几倍。每个斜率都是采样点处的变化率,以两倍精度求和,并像状态一样沿子步传递,因此,即使输入母线位于极小的源内阻和电容之后、其斜率是比它大许多个数量级的各项相消后剩下的部分,其峰值位置仍可精确到舍入误差。图中绘制的是采样点,因此比子步更窄的峰值可能出现在数值中,却不出现在图中。

  • 舍入误差。在一个周期内,仿真器跟踪每个状态相对于其周期起始值的偏差。这样,其舍入误差与状态的变动幅度成比例,而与状态本身的大小无关,因此即使对于非常大的电容,一个周期内的变化量也精确到舍入误差。

  • 周期稳态通过对映射(map)进行牛顿迭代(Newton iteration)求得,该映射把一个周期的初始状态映射到下一个周期的初始状态;迭代使用映射的精确导数,即各子步矩阵的乘积,并在每个发生时刻取决于状态的事件处加以修正。仿真器累积的是导数减去单位矩阵,因此子步矩阵舍入后为 1 的极慢状态仍能保留其衰减。在最多两千个周期内,每个状态都通过以下两项检验时,结果即被接受:

    • 一个周期内的变化量小于该状态在周期内变动幅度的百万分之一。以状态的峰值为基准衡量变化量是不行的:每个周期都增加相同量的电流,一旦增长到足够大,就会通过检验;
    • 剩余的牛顿步,即到稳态的估计距离,小于该状态大小的百万分之一。仅看变化量是不够的:非常大的电容即使离稳态还很远,每个周期的变化也很小。

    稳态不是单个点时,导数会表明这一点:恰好处于平衡占空比的固定输出,或不再有电荷流入的单独电容,都有一个状态既不影响其他状态、也不受其他状态影响,并且无论从什么值出发都回到该值。牛顿步保持该状态不变,只对其他状态求解;该状态是否仍在变化,只由第一项检验判断。

    停留在零的状态会拾取其周围电压的舍入误差(电路电压为几十伏时,为 10−2010^{-20} A 的电流),这一残余就成了它在周期内的全部变动。因此,每个状态在电路中都有一个自然大小:对电压而言,是电路给定的最大电压(输入电压或电源的开路电压、电池电压、固定输出电压、初始电压);对电流而言,是该电压在一个周期内于该状态的电感中建立的电流。处于该大小舍入误差范围内的变化或牛顿步按零处理,第二项检验则以状态的值、其在周期内的变动幅度和该自然大小三者中的最大者为基准,衡量每个状态的牛顿步。

  • 导通模式:电感电流在周期的一部分时间内保持为零时为 DCM,仅触及零时为 BCM,其他情况为 CCM,包括电流反向并经开关管的体二极管继续流动的情况。

测试套件(packages/pe-core/test/sim.test.ts)将仿真器与公式对照检查:

  • 验证网格(validation grid)。对降压、升压、升降压和反激变换器,在由占空比和位于 KcritK_\mathrm{crit} 两侧的 KK 值组成的网格上:

    • 仿真得到的电压变换比(conversion ratio)和电感纹波峰峰值与公式相差不超过 2 %;
    • 检测到的模式与 KK 和 KcritK_\mathrm{crit} 的比较结果一致。
  • 能量平衡。有损耗时,每个周期的输入能量等于输出能量加上计算所得的损耗,开关管两端有电容、纹波达几十伏时也是如此。

  • 牛顿法的导数。周期映射的精确导数减去单位矩阵,与一个周期内变化量的中心差分(central difference)相符,对极慢的状态也是如此。

  • 非常大的电容。时间常数长达数十亿个周期的母线电容,仍稳定在无损电阻(loss-free resistor)分压所得的电压上;很大的输出电容给出的输出电压与小得多的电容相同。

  • 振铃。DCM 振铃频率与 L-C 公式相符。

  • 电源驱动的反激变换器。电源在临界电压(critical voltage)下能提供的功率大于该电压下的 DCM 功率时,反激变换器把输入锁定在临界电压;电源做不到时,它在 DCM 下稳定于低于该电压之处。

  • 无稳态。占空比高于平衡占空比、接固定输出的降压变换器,会准确报告电流每个周期的变化量、电感电压平均值和平衡占空比;占空比低于或等于平衡占空比时,降压和升压变换器都会稳定;比平衡占空比高十亿分之一时,降压变换器按平衡处理,高十万分之一时电流失控增长;升降压变换器的平衡占空比由其反相的变换比求得;超过磁复位限制的正激变换器会报告其励磁电流逐周期增大,接固定输出或单独电容时也是如此。

  • 单独的电容。接在升压变换器之后时无限制地充电。接在降压变换器之后时,无论从下方还是上方出发都稳定在输入电压,开关管两端有电容、有损耗、有电源时也是如此。接在正激变换器之后时,它保持高于 nVgn V_g 的初始电压、过冲的 L-C 充电的峰值,以及在超过磁复位限制、励磁电流由开关管电阻限定时其启动过程停止的电压。开关管两端有电容时,升压或升降压变换器之后的电容停在其启动过程停止之处:开通时残留的电流仍逐周期交替变化时如此,启动过程越过一个周期性振铃也会停止的更低电压之后如此,输入母线仍在恢复时也如此。被中途截断的搜索会报告电容尚未稳定。

  • 零电流时的体二极管。二极管电流结束时若输出高于输入(L-C 过冲、位于电阻之后的电池),降压变换器的电流立即经开关管的体二极管变为负值,开关管电压从不低于零。

  • 模型之外。模型在各二极管导通的区间之外都使其保持关断,并把开关管的体二极管视为理想。在页面绘制的波形(含采样点之间极值的稳态周期,或整个启动过程)中,以下两种情况会被标记:

    • 保持关断、但正偏电压超过其压降的二极管:两开关变换器的二极管 D,或正激变换器的整流二极管 D1D_1、续流二极管 D2D_2 或复位二极管 D3D_3。例如:由过弱的电源供电、带重载的降压、升降压或反激变换器;由这种电源供电、超过磁复位限制的正激变换器;开关管导通期间,开关管压降(RonR_\mathrm{on} 乘以其电流)超过跌落中的母线电压、从而使 D2D_2 正偏(压降超过母线电压的 (1+1/nr)(1 + 1/n_r) 倍时还使 D3D_3 正偏)的正激变换器;输出降到输入以下(被固定输出或电池维持在那里,或被过重的负载拉到那里)的升压变换器,开关管导通期间流过 RonR_\mathrm{on} 的电流把开关节点抬高到输出之上;
    • 开关管电压降到零以下,此时理想体二极管本应导通。开关管两端没有电容时,开关管电压在 DCM 的空闲区间跟随输入母线,因此在该区间低于零的母线电压以这种方式被标记。有电容时,则改由模型的钳位区间经体二极管导通。

    具有模型压降的二极管在这些情况下会导通,而模型没有计入这一点,因此页面会提示这些结果可能不成立。结果变化的大小随超出量以及该二极管本应流过的电流而增大。在其他情况下,低于零的母线电压不会使任何二极管导通:两个升降压变换器和一个升压变换器的母线电压跌到零以下,而所有二极管仍然关断,它们不会被标记,保留全部二极管的 ngspice 与它们的结果在 SPICE 对比的容差内相符。测试对普通电路的扫描遍及每种变换器、负载、电源和节点电容,没有任何电路被标记。在随机电路中,大多数标记属于上述情况:弱电源使母线电压降到零以下,或升压变换器的输出低于输入。其余标记来自开关管两端的电容:其振铃在一个子步内使某个二极管正偏或使开关管电压降到零以下,并在子步结束前回转;事件搜索只在每个子步结束时检查条件,因而看不到这次开通。二极管超出其压降的量从电路最大电压的万分之一起计,开关管电压低于零的量也是如此:正偏程度更小的二极管所流过的电流,对结果的改变也同样小,低于页面显示的四位数字。

其他测试套件用别的方法检验仿真器:

  • 与 SPICE 对比(packages/pe-core/test/sim-spice.test.ts)。34 个电路根据其原理图重新写成网表(netlist),在 ngspice [ngspice – open source SPICE simulator] 中从零初始状态开始运行,ngspice 是一个有自己积分器的独立求解器(scripts/spice_crosscheck.py)。这些电路涵盖:每种拓扑的 CCM 和 DCM;正激变换器的每个区间,复位绕组匝数分别取一次绕组匝数及其一半,还有使整流二极管保持关断的电池;节点电容的振铃,包括带电池的情况;戴维南电源;带电阻和不带电阻的电池,以及电压高于输入、电流经开关管体二极管倒流的电池;被 L-C 过冲抬高到输入之上的输出,此时二极管电流结束时电流经体二极管反向流动;固定输出;电流失控增长的启动过程;从零开始充电的电容,包括接在带节点电容的升压变换器之后的情况;以及接在带节点电容的升压和升降压变换器之后、停止充电的单独电容,其中一个的启动过程越过了一个周期性振铃也会停止的更低电压。在最后一个周期中,各物理量的平均值、最大值、最小值和终值,以及其在周期内 40 个时刻的值,在这些算例中相符到该物理量最大绝对值的 0.5 % 以内,再加上 SPICE 元件给理想元件整个周期保持为零的物理量所增加的量:电压 5 mV,电流 1 µA [ngspice – open source SPICE simulator]。有四个算例需要这一余量:导通的体二极管两端的开关管电压 3.9 mV,以及保持关断的二极管的漏电流,最大 0.5 nA [ngspice – open source SPICE simulator]。SPICE 元件接近理想:开关管采用算例的导通电阻(算例未给出时为一毫欧),开关过程历时一纳秒;二极管的压降比算例的 VFV_F 大几毫伏;由较小的 RbR_b 决定的电池电流对这几毫伏最为敏感。正激变换器的网表还在续流二极管两端加了一个小的 RC 缓冲电路(仿真器中没有),以便该二极管关断时 ngspice 的积分器保持稳定。比较中略去两项:仿真器事件前后 20 ns 以内的值(实际边沿与理想边沿相差几纳秒),以及有节点电容时二极管的最大电流和降压、反激变换器输入电流的极值,此处 ngspice 中特性陡峭的二极管在接过电流时会过冲几皮秒。电流在周期内结束时(DCM 下二极管或电感的电流,正激变换器复位结束时的励磁电流),从周期起点量起,该电流最后一次向下穿过其周期平均值 5 % 的时刻相差不超过 3 ns:最坏情况下为 2.1 ns,出现在 ngspice 的二极管压降略大、使 DCM 反激变换器的去磁提前结束时。这一时刻最多比电流降到零早约一百纳秒;有节点电容时,它是振铃各次穿越中的最后一次。CI 在每次改动时重新运行 ngspice,并与存储的结果比较。
  • 工作模态(sim-schematic.test.ts、sim-sequence.test.ts、sim-flow.test.ts、src/tools/SequenceView.test.ts、src/lib/seqlayout.test.ts)。对于每种拓扑配每种负载,有无节点电容和电源,所绘电路的每个节点在每个采样点都满足基尔霍夫电流定律;各模态覆盖周期的所有区间,状态与人工核对过的算例一致(CCM 和 DCM 下的降压变换器、DCM 下的升压变换器、振铃在开通时给体二极管留下负电流的反激变换器、正激变换器的复位、输出低于输入的升压变换器、在一个模态内先上升后下降的电感电流、被电池维持恒定的反向电流、在二极管关断的情况下以振铃结束的电压上升、双向流过反激变换器振铃电流的输入)。在每种变换器的固定电路和随机电路的每个模态中,模态说明所指出的导通部分都与表中的状态一致,而且无论状态如何读取,都与物理规律相符:沿电流方向取的电感两端平均电压,其符号与电流变化的符号相同;电容充电时其电压上升;电池只在输出高于其开路电压时充电。在每种变换器配每种负载(有无电源和节点电容)的每个模态中、在随机扫描找到的电路中以及在 50 个随机电路中,所绘路径都是闭合的,一个节点上的箭头绝不会全部指向该节点或全部背离该节点,彩色元件的电流在每个节点都平衡。在页面实际渲染的结果中,说明给出的每个电感电压都与表中的数值相同,并在正激变换器磁芯复位发生的模态中说明复位。静止的电路不显示模态。每个模态、元件和状态在本站的每种语言中都有文字,在任何语言下,对于任何电路,电路图的标签、符号、导线和箭头都不重叠:测试中用估计的文字宽度检查,CI 在构建好的站点上运行的 scripts/seq_check.mjs 则用浏览器实际绘制的文字检查;它还检查图例,以及在 1280、768 和 360 像素宽度下每个模态按钮的文字都在按钮之内。
  • 不变量(packages/pe-core/test/sim-invariants.test.ts)。对每种变换器,分别接电阻、电池、二者兼有、单独电容和固定输出,在理想和有损耗两种情况下:稳态下电感的伏秒积和输出电容的电荷都平衡,电容电流等于 CC 乘以仿真输出电压的斜率,电源功率等于电阻、电池的开路电压和内阻或固定输出所吸收的功率加上损耗;正激变换器的励磁电压等于 LML_M 乘以其电流的斜率,其伏秒积平衡。在从零初始状态开始的启动过程中,电源提供的能量等于电感和电容中储存的能量加上负载吸收的能量和损耗。前两项在周期稳态下按构造必然成立,因此检验的是计算的一致性;能量平衡检验的则是模型本身。

LTspice、ngspice 和 CircuitJS1 中的相同电路

Section titled “LTspice、ngspice 和 CircuitJS1 中的相同电路”

下表中的预设在仓库的 SPICE 库中也以数值相同的 LTspice 原理图(schematic)和 ngspice 网表(netlist)提供,还有可在 falstad.com 上打开的 CircuitJS1 电路(CircuitJS1 中的变换器)。每个文件夹的 README 说明应绘制哪些波形,并展示 ngspice 计算出的波形。对于其中列出的每个平均值和极值,本仿真器与 ngspice 相差不超过 1 %(packages/pe-core/test/sim-library.test.ts),ngspice 与公式相差不超过 1 %(scripts/sim_library.py)。对于其检查在最后两个周期内测得的平均值和极值,CircuitJS1 与公式的偏差同样不超过 1 %(scripts/falstad_check.mjs)。

预设LTspicengspiceCircuitJS1
降压变换器,CCMbuck-ccm.ascbuck-ccm.cir在 CircuitJS1 中打开
降压变换器,轻载(DCM)buck-dcm.ascbuck-dcm.cir在 CircuitJS1 中打开
升压变换器boost-ccm.ascboost-ccm.cir在 CircuitJS1 中打开
升降压变换器buckboost-ccm.ascbuckboost-ccm.cir在 CircuitJS1 中打开
反激变换器,CCMflyback-ccm.ascflyback-ccm.cir在 CircuitJS1 中打开
反激变换器,DCMflyback-dcm.ascflyback-dcm.cir在 CircuitJS1 中打开
正激变换器forward-ccm.ascforward-ccm.cir在 CircuitJS1 中打开

对于其他任何数值,只要是电阻负载且没有电源,图表下方的链接在 CircuitJS1 中打开这些数值就会根据表单搭建同一电路:采用库中的画法和元件,开关管的 RonR_\mathrm{on} 取自其输入栏,并从仿真稳态中开关管开通的时刻开始(src/lib/falstadgen.ts)。对于库中的七个算例,生成器逐字符写出与库中文件完全相同的内容(falstadgen.test.ts),因此与网表对照的连线检查对它同样成立。CircuitJS1 不包含绕组电阻、二极管压降和节点电容;设置了其中任何一项时,链接会注明这一点。

例题:锁定电源电压的反激变换器

Section titled “例题:锁定电源电压的反激变换器”

固定占空比的反激变换器由限流电源供电,为固定输出充电:

从限流电源向固定输出充电的固定占空比反激变换器示例
符号数值求法
VV 输出电压5 V已知
VDV_D 输出二极管正向压降(forward drop)500 mV已知
DD 占空比(duty ratio)0.2已知
nn 匝比(turns ratio),二次/一次0.1已知
fsf_s 开关频率10 kHz已知
LML_M 励磁电感(magnetizing inductance),折算到一次侧20 mH已知
VocV_\mathrm{oc} 电源开路电压(open-circuit voltage)1 kV已知
RsR_s 源内阻(source resistance)10 kΩ已知
Vg,critV_{g,\mathrm{crit}} CCM/DCM 临界处的输入电压220 V反激变换器:CCM/DCM 临界处的输入电压(固定 D,固定输出)
PmaxP_\mathrm{max} 最大可用功率25 W线性源的最大功率
ηext\eta_\mathrm{ext} 可用功率中被提取的比例0.686恒压负载的功率提取比
Pdcm{P}_{\mathrm{dcm}} 功率4.84 WDCM 升降压或反激变换器吸取的功率

输入稳定在 CCM 开始之处,即 220 V。在该电压下,电源能够提供其最大可用功率 25 W 的 0.686 倍。这大于变换器在 DCM 下会吸取的 4.84 W,因此励磁电流不断增大,直到 CCM 把输入保持在临界电压。打开该预设,将仿真得到的输入电压与公式比较(结果见下方的截图):

▶ 在仿真器中打开:反激
预设取自例题 flyback-source

例题:为电池充电的降压变换器

Section titled “例题:为电池充电的降压变换器”

固定占空比的降压变换器为电池充电。在 CCM 下,开关节点电压的平均值为 DVgD V_g,输出电压也是如此:电感电压的平均值为零。于是电池的平均电流可由 Rint 模型求得:

以固定占空比为电池充电的降压变换器示例
符号数值求法
VgV_g 输入电压24 V已知
DD 占空比(duty ratio)0.6已知
VbV_b 电池开路电压(open-circuit voltage)12 V已知
RbR_b 电池内阻(internal resistance)500 mΩ已知
MM 电压变换比(conversion ratio)0.6降压(buck)变换器的电压变换比,CCM
VV 输出电压14.4 V由电压变换比求输出电压
IbI_b 电池电流(充电为正)4.8 ARint 模型中的电池电流

仿真器给出相同的电池平均电流,其负载表把这 4.8 A 电流对应的功率分为储存的功率和 RbR_b 中损耗的功率。变换器中除 RbR_b 外没有任何东西限制该电流:DD 稍有变化,电流就会大幅改变。

▶ 在仿真器中打开:降压
预设取自例题 sim-buck-battery

  • 没有开关过渡波形。模型中没有漏感、反向恢复和开关过渡过程,因此仿真器不显示关断尖峰,也没有交叠损耗(overlap loss)。
  • 固定占空比。没有控制环路,也没有磁芯损耗(core loss)。
  • 无稳态则无表格。电路没有周期稳态时(见上文),仿真器只显示启动过程及其说明。若增长电流的路径中有电阻,这类电路也会稳定下来,但稳定时的电流只受该电阻限制,可能非常大。对于正激变换器的励磁电流,这一电阻只有导通电阻:绕组电阻属于输出电感。
  • 荷电状态固定的电池。仿真器把电池的开路电压和内阻取为常数,而且 Rint 模型没有极化(polarization):内阻是电池唯一的损耗。
  • 缓慢的启动过程。接在正激变换器之后、或接在开关管两端有电容的变换器之后的单独电容,在搜索之前最多跟踪 4000 个周期和两百万个子步(有节点电容时为 100 到 1000 个周期)。比这更慢的启动过程,例如缓慢的 L-C 充电,从其到达之处开始搜索。其报告的电压低于它本会停止的电压,随机试验中最多低约 0.07 %。从上方找到的稳态则可能比该电压高出百万分之几。节点电容振铃很快时,这样的电路可能需要几十秒才能求解。若随后搜索仍未稳定,可能需要约一分钟。
  • 二极管只出现在预期之处。每个二极管,包括开关管的体二极管,只在其导通的区间内属于模型的一部分。弱电源可能使母线电压跌落,流过 RonR_\mathrm{on} 的大电流可能抬高开关节点,或使其压降超过母线电压,直到模型保持关断的某个二极管正偏。这时仿真器会提示结果可能不成立。
用例题的预设打开的仿真器:结果栏显示 CCM,对比面板把仿真得到的母线电压与 V_g,crit 并列,图表显示一个周期内的各电流、电感电压、开关管电压、输出电压和母线电压;其下方是工作模态:第一个模态的电路及其电流路径、该模态的工作过程,以及每个元件的状态。
用例题的预设打开的仿真器。

本站例题、预设和练习中的数值均为合成值:为教学而凑整的数值,并非来自任何实际设计的数据。