跳转到内容

推导

下面每一节都由 python/pe_core/derive/ 中的一个脚本生成。同一脚本也在 pytest 下运行:除非推导结果(derived result)与 equations.yaml 中存储的表达式之差(symbolic difference)经符号化简后为零,否则测试不通过。文字说明和标题由人工撰写;本页的每个公式都由 sympy 从这些脚本中输出。

基础复习:元件特性方程(element laws)、阻抗、傅里叶级数、磁学(magnetics)、理想变压器

Section titled “基础复习:元件特性方程(element laws)、阻抗、傅里叶级数、磁学(magnetics)、理想变压器”

在恒定激励下对元件的伏安关系积分;由这些关系的相量形式得到阻抗;在一个周期内计算脉冲序列的傅里叶系数和有效值;理想变压器则在磁芯无损、磁阻为零的条件下由法拉第定律和安培环路定律导出。

  1. 电感的伏安关系:v=L di/dtv = L\,\mathrm{d}i/\mathrm{d}t。电压 VLV_L 恒定时,电流的斜率恒定;在区间 tt 上对其积分。

    ∫0tVLL dτ\int\limits_{0}^{t} \frac{V_L}{L}\, d\tau
  2. 计算该积分。

    Δi=VLtL\Delta i = \frac{V_L t}{L}

    ✓ 复现的公式 ind.di(pytest 用 sympy 验证两者相等)

  3. 与之对偶的电容伏安关系:i=C dv/dti = C\,\mathrm{d}v/\mathrm{d}t,在电流 ICI_C 恒定时积分。

    ∫0tICC dτ\int\limits_{0}^{t} \frac{I_C}{C}\, d\tau
  4. 计算该积分。

    ΔvC=ICtC\Delta v_C = \frac{I_C t}{C}

    ✓ 复现的公式 cap.dv(pytest 用 sympy 验证两者相等)

  5. 送入电感的能量:∫v i dt=∫L i di\int v\,i\,\mathrm{d}t = \int L\,i\,\mathrm{d}i,从电流为零积分到 ILI_L。

    ∫0ILLi di\int\limits_{0}^{I_L} L i\, di
  6. 计算该积分。

    EL=LIL22E_L = \frac{L I_L^{2}}{2}

    ✓ 复现的公式 ind.E(pytest 用 sympy 验证两者相等)

  7. 送入电容的能量:∫v i dt=∫C v dv\int v\,i\,\mathrm{d}t = \int C\,v\,\mathrm{d}v,从电压为零积分到 VCV_C。

    ∫0VCCv dv\int\limits_{0}^{V_C} C v\, dv
  8. 计算该积分。

    EC=CVC22E_C = \frac{C V_C^{2}}{2}

    ✓ 复现的公式 cap.E(pytest 用 sympy 验证两者相等)

  9. 在正弦稳态下,d/dt\mathrm{d}/\mathrm{d}t 变为乘以 jωj\omega,其中 ω=2πf\omega = 2\pi f。由电感的伏安关系得到电感的阻抗。

    ZL=2πiLfZ_L = 2 \pi i L f
  10. 其模值。

    ∣ZL∣=2πfL|Z_L| = 2 \pi f L

    ✓ 复现的公式 imp.ZL(pytest 用 sympy 验证两者相等)

  11. 由电容的伏安关系得到电容的阻抗。

    ZC=−i2πCfZ_C = - \frac{i}{2 \pi C f}
  12. 其模值。

    ∣ZC∣=12πfC|Z_C| = \frac{1}{2 \pi f C}

    ✓ 复现的公式 imp.ZC(pytest 用 sympy 验证两者相等)

  13. 空载 R-C 低通滤波器:输出为 RfR_f 与电容阻抗构成的分压器中电容上分得的电压。

    G(jω)=−i2πCfRff−iG(j\omega) = - \frac{i}{2 \pi C_f R_f f - i}
  14. 模值的平方。

    ∣G(jω)∣2=11+4π2Cf2Rf2f2\left|{G(j\omega)}\right|^{2} = \frac{1}{1 + 4 \pi^{2} C_f^{2} R_f^{2} f^{2}}
  15. 转折(-3 dB)频率是模值平方降为一半时的频率。

    fc=12πRfCff_c = \frac{1}{2 \pi R_f C_f}

    ✓ 复现的公式 rc.fc(pytest 用 sympy 验证两者相等)

  16. 用 fcf_c 代替 RfCfR_f C_f 表示模值。

    ∣G∣=fcf2+fc2=11+(ffc)2|G| = \frac{f_c}{\sqrt{f^{2} + f_c^{2}}} = \frac{1}{\sqrt{1 + \left(\frac{f}{f_c}\right)^{2}}}

    ✓ 复现的公式 rc.gain(pytest 用 sympy 验证两者相等)

  17. 并联寄生电容的电感:导纳相加。

    Y=2πiCpf−i2πLfY = 2 \pi i C_p f - \frac{i}{2 \pi L f}
  18. 谐振时导纳为零(对无损模型,阻抗为无穷大)。

    fsrf=12πLCpf_\mathrm{srf} = \frac{1}{2 \pi \sqrt{L C_p}}

    ✓ 复现的公式 passive.f_srf(pytest 用 sympy 验证两者相等)

  19. 高度为 VpkV_\mathrm{pk}、宽度为 DTD T、每个周期 TT 出现一次的脉冲序列。其第 hh 次谐波的余弦系数:

    ah,cos⁡=Vpksin⁡(2πDh)πha_{h,\cos} = \frac{V_\mathrm{pk} \sin{\left(2 \pi D h \right)}}{\pi h}
  20. 以及正弦系数:

    ah,sin⁡=2Vpksin⁡2(πDh)πha_{h,\sin} = \frac{2 V_\mathrm{pk} \sin^{2}{\left(\pi D h \right)}}{\pi h}
  21. 谐波幅值的平方等于两系数的平方和;利用 1−cos⁡2x=2sin⁡2x1 - \cos 2x = 2\sin^2 x,可化为完全平方式。

    ah2=4Vpk2sin⁡2(πDh)π2h2a_h^{2} = \frac{4 V_\mathrm{pk}^{2} \sin^{2}{\left(\pi D h \right)}}{\pi^{2} h^{2}}
  22. 取非负的平方根。

    ah=2Vpk∣sin⁡(πhD)∣πha_h = \frac{2 V_\mathrm{pk} \left|{\sin{\left(\pi h D \right)}}\right|}{\pi h}

    ✓ 复现的公式 fourier.pulse.harm(pytest 用 sympy 验证两者相等)

  23. 一个周期内的均方值:脉冲贡献 Vpk2V_\mathrm{pk}^2,持续 DTD T。

    Vrms2=DVpk2V_\mathrm{rms}^{2} = D V_\mathrm{pk}^{2}
  24. 有效值为其平方根。

    Vrms=VpkDV_\mathrm{rms} = V_\mathrm{pk} \sqrt{D}

    ✓ 复现的公式 fourier.pulse.rms(pytest 用 sympy 验证两者相等)

  25. 纹波电流流过电容的串联电阻,该电阻上的电压每一时刻都随电流变化。其最大值与最小值之差:

    ΔvESR=iC,maxRESR−iC,minRESR\Delta v_\mathrm{ESR} = i_{C,\mathrm{max}} R_\mathrm{ESR} - i_{C,\mathrm{min}} R_\mathrm{ESR}
  26. 电流的峰峰值等于其最大值减去最小值。

    ΔvESR=RESRΔiL,pp\Delta v_\mathrm{ESR} = R_\mathrm{ESR} \Delta i_{L,\mathrm{pp}}

    ✓ 复现的公式 cap.esr.ripple(pytest 用 sympy 验证两者相等)

  27. 绕磁芯一周应用安培环路定律:HH 的线积分等于所包围的电流,即 NN 匝、每匝流过 IwI_w。在磁场均匀的无气隙磁芯中,该线积分等于 HH 乘以磁路长度。

    Hle=IwNH l_e = I_w N
  28. 解出 HH。

    H=NIwleH = \frac{N I_w}{l_e}

    ✓ 复现的公式 mag.H_ampere(pytest 用 sympy 验证两者相等)

  29. 对同一磁芯上的两个绕组应用法拉第定律:每个绕组的电压等于其匝数乘以公共磁通的变化率。一次绕组:

    V1=NpdΦ/dtV_1 = N_p \mathrm{d}\Phi/\mathrm{d}t
  30. 以及二次绕组:

    V2=NsdΦ/dtV_2 = N_s \mathrm{d}\Phi/\mathrm{d}t
  31. 两式相除:磁通项消去,匝数之比为 nn(1:n 约定)。

    V2=nV1V_2 = n V_1

    ✓ 复现的公式 xfmr.V2(pytest 用 sympy 验证两者相等)

  32. 磁芯磁阻为零(理想)时的安培环路定律:净磁动势为零。

    I1Np−I2Ns=0I_1 N_p - I_2 N_s = 0
  33. 代入 Ns=nNpN_s = n N_p,解出二次侧电流。

    I2=I1nI_2 = \frac{I_1}{n}

    ✓ 复现的公式 xfmr.I2(pytest 用 sympy 验证两者相等)

推导脚本:python/pe_core/derive/foundations.py

平均化(averaging)、平衡条件(balance)与平均模型中的损耗

Section titled “平均化(averaging)、平衡条件(balance)与平均模型中的损耗”

开关变换器将直流输入斩波为脉冲序列,低通滤波器保留其平均值。将每个电路方程在一个周期内取平均,开关电路即变为直流模型,其中电感绕组电阻 RLR_L 等损耗表现为普通电阻。

  1. 降压变换器的开关节点电压为 VgV_g(0<t<DTs0 < t < D T_s)或 00(DTs<t<TsD T_s < t < T_s);在一个周期内对其取平均。

    ⟨vs⟩=∫0Tsvs dtTs\langle v_s \rangle = \frac{\int\limits_{0}^{T_s} v_s\, dt}{T_s}
  2. 计算两段积分。

    ⟨vs⟩=DVg\langle v_s \rangle = D V_g

    ✓ 复现的公式 sw.v_avg(pytest 用 sympy 验证两者相等)

  3. 电感满足 vL=L di/dtv_L = L \, di/dt。在一个周期内积分,电流的变化量等于电压的积分除以 LL。

    Δi=∫0TsvL dtL\Delta i = \frac{\int\limits_{0}^{T_s} v_L\, dt}{L}
  4. 若电压为 vL,onv_{L,\mathrm{on}},持续 DTsD T_s,其余时间为 vL,offv_{L,\mathrm{off}},则该积分等于 TsT_s 乘以一个周期内的平均值。

    ⟨vL⟩=vL,off+vL,onD−vL,offD\langle v_L \rangle = v_{L,\mathrm{off}} + v_{L,\mathrm{on}} D - v_{L,\mathrm{off}} D
  5. 因此一个周期内的变化量等于平均电压乘以 TsT_s 再除以 LL;只有平均电压为零时,变化量才为零(伏秒平衡)。

    Δi=⟨vL⟩TsL\Delta i = \frac{\langle v_L \rangle T_s}{L}

    ✓ 复现的公式 vsb.drift(pytest 用 sympy 验证两者相等)

  6. 在小纹波近似下,电感电压(或电容电流)先取值 xonx_\mathrm{on},持续 DTsD T_s,再取值 xoffx_\mathrm{off},持续 (1−D)Ts(1 - D) T_s;其平均值必须为零。

    xoff(1−D)+xonD=0x_\mathrm{off} \left(1 - D\right) + x_\mathrm{on} D = 0
  7. 对电感电压(x=vLx = v_L):伏秒平衡。

    vL,off=DvL,on−1+D=−DvL,on1−Dv_{L,\mathrm{off}} = \frac{D v_{L,\mathrm{on}}}{-1 + D} = - \frac{D v_{L,\mathrm{on}}}{1 - D}

    ✓ 复现的公式 vsb.v_off(pytest 用 sympy 验证两者相等)

  8. 对电容电流(x=iCx = i_C):电荷平衡。

    iC,off=DiC,on−1+D=−DiC,on1−Di_{C,\mathrm{off}} = \frac{D i_{C,\mathrm{on}}}{-1 + D} = - \frac{D i_{C,\mathrm{on}}}{1 - D}

    ✓ 复现的公式 csb.i_off(pytest 用 sympy 验证两者相等)

  9. 含电感绕组电阻 RLR_L 的升压变换器,伏秒平衡:开关管导通期间电感电压为 Vg−IRLV_g - I R_L,二极管导通期间为 Vg−IRL−VV_g - I R_L - V(II 为电感直流电流)。

    D(Vg−IRL)+(1−D)(Vg−V−IRL)=0D \left(V_g - I R_L\right) + \left(1 - D\right) \left(V_g - V - I R_L\right) = 0
  10. 输出电容的电荷平衡:开关管导通期间为 −V/R-V/R,二极管导通期间为 I−V/RI - V/R。

    (1−D)(I−VR)−DVR=0\left(1 - D\right) \left(I - \frac{V}{R}\right) - \frac{D V}{R} = 0
  11. 由这两个线性方程解出 II。

    I=VgR+RL−2DR+RD2I = \frac{V_g}{R + R_L - 2 D R + R D^{2}}
  12. 并解出 M=V/VgM = V/V_g。

    M=R(1−D)R+RL−2DR+RD2=1(1−D)(1+RL(1−D)2R)M = \frac{R \left(1 - D\right)}{R + R_L - 2 D R + R D^{2}} = \frac{1}{\left(1 - D\right) \left(1 + \frac{R_L}{\left(1 - D\right)^{2} R}\right)}

    ✓ 复现的公式 boost.ccm.M_RL(pytest 用 sympy 验证两者相等)

  13. 效率等于输出功率 V2/RV^2/R 除以输入功率 VgIV_g I。

    η=R(−1+D)2R+RL−2DR+RD2=11+RL(1−D)2R\eta = \frac{R \left(-1 + D\right)^{2}}{R + R_L - 2 D R + R D^{2}} = \frac{1}{1 + \frac{R_L}{\left(1 - D\right)^{2} R}}

    ✓ 复现的公式 boost.ccm.eta_RL(pytest 用 sympy 验证两者相等)

推导脚本:python/pe_core/derive/averaging.py

CCM 电压变换比(conversion ratio)与纹波

Section titled “CCM 电压变换比(conversion ratio)与纹波”

在周期稳态下,每个电感电流在一个开关周期结束时都回到起始值,因此一个周期内电感电压的平均值为零。在小纹波近似下,每个区间施加的电压恒定,平衡条件成为关于输出电压 VV 的线性方程。

  1. 伏秒平衡:电感电压在一个开关周期内的平均值为零。

    ⟨vL⟩=0\langle v_L \rangle = 0
  2. 降压变换器:开关管导通期间电感电压为 Vg−VV_g - V(占比 DD),二极管导通期间为 −V-V(1−D1 - D)。

    D(Vg−V)−V(1−D)=0D \left(V_g - V\right) - V \left(1 - D\right) = 0
  3. 解出 VV,再除以 VgV_g。

    M=DM = D

    ✓ 复现的公式 buck.ccm.M(pytest 用 sympy 验证两者相等)

  4. 升压变换器:开关管导通期间为 VgV_g,二极管导通期间为 Vg−VV_g - V。

    DVg+(1−D)(Vg−V)=0D V_g + \left(1 - D\right) \left(V_g - V\right) = 0
  5. 解出 VV。

    M=−1−1+D=11−DM = - \frac{1}{-1 + D} = \frac{1}{1 - D}

    ✓ 复现的公式 boost.ccm.M(pytest 用 sympy 验证两者相等)

  6. 升降压变换器:开关管导通期间为 VgV_g,二极管导通期间为(负的)输出电压 VV。

    V(1−D)+DVg=0V \left(1 - D\right) + D V_g = 0
  7. 解出 VV;输出反相。

    M=D−1+D=−D1−DM = \frac{D}{-1 + D} = - \frac{D}{1 - D}

    ✓ 复现的公式 buckboost.ccm.M(pytest 用 sympy 验证两者相等)

  8. 反激变换器(1:nn,励磁电感在一次侧):开关管导通期间为 VgV_g;二极管导通期间二次侧被钳位在 VV,反射到一次侧为 −V/n-V/n。

    DVg−V(1−D)n=0D V_g - \frac{V \left(1 - D\right)}{n} = 0
  9. 解出 VV。

    M=−Dn−1+D=nD1−DM = - \frac{D n}{-1 + D} = \frac{n D}{1 - D}

    ✓ 复现的公式 flyback.ccm.M(pytest 用 sympy 验证两者相等)

  10. 正激变换器:开关管导通期间,二次侧向输出滤波器施加 nVgnV_g,因此输出电感电压为 nVg−VnV_g - V;随后在续流二极管导通期间为 −V-V。

    D(−V+Vgn)−V(1−D)=0D \left(- V + V_g n\right) - V \left(1 - D\right) = 0
  11. 解出 VV。

    M=nDM = n D

    ✓ 复现的公式 forward.ccm.M(pytest 用 sympy 验证两者相等)

  12. 正激变换器的磁复位:励磁电感电压为 VgV_g,持续 DTsD T_s;随后复位绕组(NrN_r 匝)将其钳位在 −Vg/nr-V_g/n_r,持续 D2TsD_2 T_s,直到励磁电流回到零。

    DVg−D2Vgnr=0D V_g - \frac{D_2 V_g}{n_r} = 0
  13. 解出复位区间。

    D2=DnrD_2 = D n_r
  14. 复位必须在一个周期内完成,即 D+D2≤1D + D_2 \le 1;取等号得到最大占空比。

    Dmax=11+nrD_\mathrm{max} = \frac{1}{1 + n_r}

    ✓ 复现的公式 forward.reset.Dmax(pytest 用 sympy 验证两者相等)

  15. 降压变换器的纹波:导通区间内电感电流以斜率 (Vg−V)/L(V_g - V)/L 上升,持续 DTsD T_s,上升量即整个纹波峰峰值,也就是 2ΔiL2\Delta i_L。

    2ΔiL=DTs(Vg−V)L2 \Delta i_L = \frac{D T_s \left(V_g - V\right)}{L}
  16. 其一半即 Erickson 的 ΔiL\Delta i_L。

    ΔiL=(Vg−V)DTs2L\Delta i_L = \frac{\left(V_g - V\right) D T_s}{2 L}

    ✓ 复现的公式 buck.ripple.iL(pytest 用 sympy 验证两者相等)

  17. 代入 Ts=1/fsT_s = 1/f_s 后的峰峰值。

    ΔiL,pp=(Vg−V)DLfs\Delta i_{L,\mathrm{pp}} = \frac{\left(V_g - V\right) D}{L f_s}

    ✓ 复现的公式 buck.ripple.iL_pp(pytest 用 sympy 验证两者相等)

推导脚本:python/pe_core/derive/ccm_ratios.py

CCM/DCM 临界(boundary)与 DCM 电压变换比

Section titled “CCM/DCM 临界(boundary)与 DCM 电压变换比”

当电感电流纹波大到使电流降至零时,变换器退出 CCM:临界时,纹波峰峰值的一半 ΔiL\Delta i_L 等于电感直流电流。DCM 中出现第三个区间 D3TsD_3 T_s,其间开关管和二极管均关断;该区间长度未知,因此须将伏秒平衡与电容电荷平衡联立(二极管或电感的平均电流必须等于负载所取的电流)。

  1. 通篇采用的定义:K=2L/(RTs)K = 2L/(R T_s),即 L=KRTs/2L = K R T_s/2。

    K=2LRTsK = \frac{2 L}{R T_s}
  2. 降压变换器:电感直流电流等于负载电流 V/RV/R,CCM 下 V=DVgV = D V_g。

    IL=DVgRI_L = \frac{D V_g}{R}
  3. 代入 CCM 工作点后,由导通区间得到的纹波峰峰值的一半。

    ΔiL=DTs(Vg−DVg)2L\Delta i_L = \frac{D T_s \left(V_g - D V_g\right)}{2 L}
  4. 临界条件 ΔiL=IL\Delta i_L = I_L,代入 L=KRTs/2L = K R T_s/2,解出 KK。

    Kcrit=1−DK_\mathrm{crit} = 1 - D

    ✓ 复现的公式 Kcrit.buck(pytest 用 sympy 验证两者相等)

  5. 升压变换器:电感流过输入电流 V/((1−D)R)V/((1 - D)R),其中 V=Vg/(1−D)V = V_g/(1 - D)。

    IL=VgR(1−D)2I_L = \frac{V_g}{R \left(1 - D\right)^{2}}
  6. 代入 CCM 工作点后,由导通区间得到的纹波峰峰值的一半。

    ΔiL=DTsVg2L\Delta i_L = \frac{D T_s V_g}{2 L}
  7. 临界条件 ΔiL=IL\Delta i_L = I_L,代入 L=KRTs/2L = K R T_s/2,解出 KK。

    Kcrit=D(−1+D)2=D(1−D)2K_\mathrm{crit} = D \left(-1 + D\right)^{2} = D \left(1 - D\right)^{2}

    ✓ 复现的公式 Kcrit.boost(pytest 用 sympy 验证两者相等)

  8. 升降压变换器:电感电流为 ∣V∣/((1−D)R)|V|/((1 - D)R),其中 ∣V∣=DVg/(1−D)|V| = D V_g/(1 - D)。

    IL=DVgR(1−D)2I_L = \frac{D V_g}{R \left(1 - D\right)^{2}}
  9. 代入 CCM 工作点后,由导通区间得到的纹波峰峰值的一半。

    ΔiL=DTsVg2L\Delta i_L = \frac{D T_s V_g}{2 L}
  10. 临界条件 ΔiL=IL\Delta i_L = I_L,代入 L=KRTs/2L = K R T_s/2,解出 KK。

    Kcrit=(−1+D)2=(1−D)2K_\mathrm{crit} = \left(-1 + D\right)^{2} = \left(1 - D\right)^{2}

    ✓ 复现的公式 Kcrit.buckboost(pytest 用 sympy 验证两者相等)

  11. 临界时 KK 等于 KcritK_\mathrm{crit};由 KK 的定义解出 LL。

    Lcrit=KcritRTs2L_\mathrm{crit} = \frac{K_\mathrm{crit} R T_s}{2}

    ✓ 复现的公式 L.crit(pytest 用 sympy 验证两者相等)

  12. DCM 降压变换器,以 V=MVgV = M V_g 表示的伏秒平衡:Vg−VV_g - V 持续 DTsD T_s,−V-V 持续 D2TsD_2 T_s,00 持续 D3TsD_3 T_s。

    D(Vg−MVg)−D2MVg=0D \left(V_g - M V_g\right) - D_2 M V_g = 0
  13. 解出 D2D_2。

    D2=−D+DM=D(1−M)MD_2 = - D + \frac{D}{M} = \frac{D \left(1 - M\right)}{M}

    ✓ 复现的公式 buck.dcm.D2(pytest 用 sympy 验证两者相等)

  14. 导通区间结束时的电感峰值电流。

    ipk=DTs(Vg−MVg)Li_\mathrm{pk} = \frac{D T_s \left(V_g - M V_g\right)}{L}
  15. 电荷平衡:电感平均电流(高为 ipki_\mathrm{pk}、底为 (D+D2)Ts(D + D_2)T_s 的三角形)等于负载电流 V/RV/R。

    TsD2(Vg−MVg)2LM=MVgR\frac{T_s D^{2} \left(V_g - M V_g\right)}{2 L M} = \frac{M V_g}{R}
  16. 代入 L=KRTs/2L = K R T_s/2,取关于 MM 的二次方程的正根。

    M=D(−D+4K+D2)2K=21+1+4KD2M = \frac{D \left(- D + \sqrt{4 K + D^{2}}\right)}{2 K} = \frac{2}{1 + \sqrt{1 + \frac{4 K}{D^{2}}}}

    ✓ 复现的公式 buck.dcm.M(pytest 用 sympy 验证两者相等)

  17. DCM 升压变换器,伏秒平衡:VgV_g 持续 DTsD T_s,Vg−VV_g - V 持续 D2TsD_2 T_s。

    DVg+D2(Vg−MVg)=0D V_g + D_2 \left(V_g - M V_g\right) = 0
  18. 解出 D2D_2。

    D2=D−1+MD_2 = \frac{D}{-1 + M}
  19. 输出端的电荷平衡:二极管平均电流(高为 ipki_\mathrm{pk}、底为 D2TsD_2 T_s 的三角形)等于负载电流。

    TsVgD22L(−1+M)=MVgR\frac{T_s V_g D^{2}}{2 L \left(-1 + M\right)} = \frac{M V_g}{R}
  20. 代入 L=KRTs/2L = K R T_s/2,保留 M>1M > 1 的根。

    M=12+K+4D22K=1+1+4D2K2M = \frac{1}{2} + \frac{\sqrt{K + 4 D^{2}}}{2 \sqrt{K}} = \frac{1 + \sqrt{1 + \frac{4 D^{2}}{K}}}{2}

    ✓ 复现的公式 boost.dcm.M(pytest 用 sympy 验证两者相等)

  21. DCM 升降压变换器,以负输出 V=MVgV = M V_g 表示的伏秒平衡:VgV_g 持续 DTsD T_s,VV 持续 D2TsD_2 T_s。

    DVg+D2VgM=0D V_g + D_2 V_g M = 0
  22. 解出 D2D_2。

    D2=−DMD_2 = - \frac{D}{M}
  23. 电荷平衡:二极管平均电流等于负载电流 ∣V∣/R|V|/R。

    −TsVgD22LM=−VgMR- \frac{T_s V_g D^{2}}{2 L M} = - \frac{V_g M}{R}
  24. 代入 L=KRTs/2L = K R T_s/2 并求解(M<0M < 0)。

    M=−DKM = - \frac{D}{\sqrt{K}}

    ✓ 复现的公式 buckboost.dcm.M(pytest 用 sympy 验证两者相等)

推导脚本:python/pe_core/derive/dcm.py

反激变换器:DCM 电压变换比、临界、应力、无损电阻(loss-free resistor)

Section titled “反激变换器:DCM 电压变换比、临界、应力、无损电阻(loss-free resistor)”

反激变换器在开关管导通期间将能量储存在励磁电感 LML_M 中,在开关管关断期间经二极管将其释放到输出。对于 1:nn 变压器(n=Ns/Npn = N_s/N_p),二次侧电压除以 nn 后反射到一次侧,二次侧电流等于折算到一次侧的励磁电流除以 nn。

  1. 导通区间:VgV_g 加在 LML_M 两端,因此励磁电流从零(DCM)上升到 ipki_\mathrm{pk}。

    ipk=DTsVgLMi_\mathrm{pk} = \frac{D T_s V_g}{L_M}
  2. LML_M 的伏秒平衡:VgV_g 持续 DTsD T_s,随后反射的输出电压 −V/n-V/n 持续 D2TsD_2 T_s。

    DVg−D2Vn=0D V_g - \frac{D_2 V}{n} = 0
  3. 解出 D2D_2。

    D2=DVgnVD_2 = \frac{D V_g n}{V}
  4. 电荷平衡:二次侧电流从 ipk/ni_\mathrm{pk}/n 开始,在 D2TsD_2 T_s 内降到零;其平均值等于负载电流 V/RV/R。

    TsD2Vg22LMV=VR\frac{T_s D^{2} V_g^{2}}{2 L_M V} = \frac{V}{R}
  5. 代入 LM=KRTs/2L_M = K R T_s/2,解出 V/VgV/V_g;nn 被消去。

    M=DKM = \frac{D}{\sqrt{K}}

    ✓ 复现的公式 flyback.dcm.M(pytest 用 sympy 验证两者相等)

  6. 代入 DCM 输出电压后的 DCM 去磁(demagnetizing)区间。

    D2=nKD_2 = n \sqrt{K}
  7. 当去磁区间占满周期的其余部分,即 D+D2=1D + D_2 = 1 时,达到临界。

    Kcrit=(−1+D)2n2=(1−D)2n2K_\mathrm{crit} = \frac{\left(-1 + D\right)^{2}}{n^{2}} = \frac{\left(1 - D\right)^{2}}{n^{2}}

    ✓ 复现的公式 Kcrit.flyback(pytest 用 sympy 验证两者相等)

  8. 输出保持在 VV(电池或稳压母线),二极管压降为 VDV_D:去磁期间反射电压为 −(V+VD)/n-(V + V_D)/n。

    DVg+D2(−V−VD)n=0D V_g + \frac{D_2 \left(- V - V_D\right)}{n} = 0
  9. 令 D+D2=1D + D_2 = 1,得到变换器进入 CCM 时的输入电压;高于该电压时,CCM 伏秒平衡使 VgV_g 保持在这一数值。

    Vg,crit=V+VD−D(V+VD)Dn=(V+VD)(1−D)nDV_{g,\mathrm{crit}} = \frac{V + V_D - D \left(V + V_D\right)}{D n} = \frac{\left(V + V_D\right) \left(1 - D\right)}{n D}

    ✓ 复现的公式 flyback.V_crit(pytest 用 sympy 验证两者相等)

  10. 二极管导通期间,一次绕组上的反射电压 (V+VD)/n(V + V_D)/n 叠加在 VgV_g 上,因此开关管关断时的电压为两者之和(漏感尖峰再叠加在此之上)。

    VDS=Vg+V+VDnV_\mathrm{DS} = V_g + \frac{V + V_D}{n}

    ✓ 复现的公式 flyback.Vds_off(pytest 用 sympy 验证两者相等)

  11. 输入被固定在 Vg,critV_{g,\mathrm{crit}} 时,开关管关断电压可以化简。

    VDS=V+VDnDV_\mathrm{DS} = \frac{V + V_D}{n D}

    ✓ 复现的公式 flyback.Vds_clamped(pytest 用 sympy 验证两者相等)

  12. 开关管导通期间,二次绕组电压 nVgn V_g 与输出电压叠加,共同加在反偏的二极管两端。

    VR=V+nVgV_R = V + n V_g

    ✓ 复现的公式 flyback.diode.VR(pytest 用 sympy 验证两者相等)

  13. CCM 电荷平衡:二极管导通期间,即 (1−D)Ts(1 - D) T_s 内,二次侧流过 IM/nI_M/n(小纹波);其平均值等于负载电流 V/RV/R。

    IM(1−D)n=VR\frac{I_M \left(1 - D\right)}{n} = \frac{V}{R}
  14. 解出 IMI_M。

    IM=−VnR(−1+D)=nV(1−D)RI_M = - \frac{V n}{R \left(-1 + D\right)} = \frac{n V}{\left(1 - D\right) R}

    ✓ 复现的公式 flyback.IM(pytest 用 sympy 验证两者相等)

  15. 导通区间:VgV_g 加在 LML_M 两端,持续 DTsD T_s,因此励磁电流的上升量为 ΔiM\Delta i_M(纹波峰峰值的一半)的两倍。

    2ΔiM=DTsVgLM2 \Delta i_M = \frac{D T_s V_g}{L_M}
  16. 解出 ΔiM\Delta i_M。

    ΔiM=VgDTs2LM\Delta i_M = \frac{V_g D T_s}{2 L_M}

    ✓ 复现的公式 flyback.ripple.iM(pytest 用 sympy 验证两者相等)

  17. 开关管导通期间二极管关断,因此负载电流 V/RV/R 完全由电容提供,持续 DTsD T_s,电容电压的下降量为 Δv\Delta v(纹波峰峰值的一半)的两倍。

    2Δv=DTsVCR2 \Delta v = \frac{D T_s V}{C R}
  18. 解出 Δv\Delta v。

    Δv=VDTs2RC\Delta v = \frac{V D T_s}{2 R C}

    ✓ 复现的公式 flyback.ripple.v(pytest 用 sympy 验证两者相等)

  19. 代入 Ts=1/fsT_s = 1/f_s 后的 DCM 励磁电流峰值。

    Ipk=VgDLMfsI_\mathrm{pk} = \frac{V_g D}{L_M f_s}

    ✓ 复现的公式 flyback.Ipk.dcm(pytest 用 sympy 验证两者相等)

  20. 每个导通区间结束时 LML_M 中储存的能量(DCM 下每个周期全部传递出去)。

    E=D2Ts2Vg22LME = \frac{D^{2} T_s^{2} V_g^{2}}{2 L_M}
  21. 功率 = 每周期能量 × 开关频率;它取决于 VgV_g、DD、LML_M、fsf_s,而与负载无关。

    P=Vg2D22LMfsP = \frac{V_g^{2} D^{2}}{2 L_M f_s}

    ✓ 复现的公式 dcm.P_in(pytest 用 sympy 验证两者相等)

  22. 由于 P=Vg2/RinP = V_g^2/R_\mathrm{in},输入端表现为一个不耗散任何功率的电阻(无损电阻)。

    Rin=2LMfsD2R_\mathrm{in} = \frac{2 L_M f_s}{D^{2}}

    ✓ 复现的公式 lfr.R_in(pytest 用 sympy 验证两者相等)

推导脚本:python/pe_core/derive/flyback.py

反激变换器钳位:反射电压(reflected voltage)、钳位损耗、输出上限

Section titled “反激变换器钳位:反射电压(reflected voltage)、钳位损耗、输出上限”

反激变换器的开关管关断时,励磁电流转移到二次侧,但漏感 LlkL_\mathrm{lk} 中的电流除了跨接在一次绕组两端的钳位电路外无处可去。钳位电路将一次绕组电压钳位在 VclampV_\mathrm{clamp},直到该电流降到零。

  1. 输出二极管导通期间,二次绕组上的电压为输出电压加二极管压降。

    vs=V+VDv_s = V + V_D
  2. 理想 1:nn 变压器将二次侧电压除以 nn 折算到一次侧。

    VOR=V+VDnV_\mathrm{OR} = \frac{V + V_D}{n}

    ✓ 复现的公式 flyback.V_OR(pytest 用 sympy 验证两者相等)

  3. 开关管位于输入与一次绕组之间,钳位电路导通期间将一次绕组电压钳位在 VclampV_\mathrm{clamp}。

    VDS=Vg+VclampV_\mathrm{DS} = V_g + V_\mathrm{clamp}

    ✓ 复现的公式 clamp.Vds(pytest 用 sympy 验证两者相等)

  4. 输出二极管导通期间励磁电感两端电压保持为 VORV_\mathrm{OR},因此漏感两端电压为 Vclamp−VORV_\mathrm{clamp} - V_\mathrm{OR},其电流从 IpkI_\mathrm{pk} 线性下降。

    ilk=Ipk−t(Vclamp−VOR)Llki_\mathrm{lk} = I_\mathrm{pk} - \frac{t \left(V_\mathrm{clamp} - V_\mathrm{OR}\right)}{L_\mathrm{lk}}
  5. 电流经过这段时间降到零,这段时间不能超过关断时间。

    tr=LlkIpkVclamp−VORt_r = \frac{L_\mathrm{lk} I_\mathrm{pk}}{V_\mathrm{clamp} - V_\mathrm{OR}}

    ✓ 复现的公式 clamp.t_reset(pytest 用 sympy 验证两者相等)

  6. 钳位电路吸收其电压与这一下降电流之积对应的能量:大于漏感能量 12LlkIpk2\tfrac12 L_\mathrm{lk} I_\mathrm{pk}^2,因为在此期间反射电压仍在推动电流。

    Eclamp=LlkVclampIpk22(Vclamp−VOR)E_\mathrm{clamp} = \frac{L_\mathrm{lk} V_\mathrm{clamp} I_\mathrm{pk}^{2}}{2 \left(V_\mathrm{clamp} - V_\mathrm{OR}\right)}
  7. 每个开关周期一次。

    Pclamp=LlkVclampfsIpk22(Vclamp−VOR)=LlkIpk2fsVclamp2(Vclamp−VOR)P_\mathrm{clamp} = \frac{L_\mathrm{lk} V_\mathrm{clamp} f_s I_\mathrm{pk}^{2}}{2 \left(V_\mathrm{clamp} - V_\mathrm{OR}\right)} = \frac{L_\mathrm{lk} I_\mathrm{pk}^{2} f_s V_\mathrm{clamp}}{2 \left(V_\mathrm{clamp} - V_\mathrm{OR}\right)}

    ✓ 复现的公式 clamp.P(pytest 用 sympy 验证两者相等)

  8. 在 RCD 钳位电路中,电容保持 VclampV_\mathrm{clamp},电阻耗散钳位功率。

    Vclamp2Rclamp=LlkVclampfsIpk22(Vclamp−VOR)\frac{V_\mathrm{clamp}^{2}}{R_\mathrm{clamp}} = \frac{L_\mathrm{lk} V_\mathrm{clamp} f_s I_\mathrm{pk}^{2}}{2 \left(V_\mathrm{clamp} - V_\mathrm{OR}\right)}
  9. 大于 VORV_\mathrm{OR} 的根。

    Vclamp=VOR+VOR2+2RclampLlkIpk2fs2V_\mathrm{clamp} = \frac{V_\mathrm{OR} + \sqrt{V_\mathrm{OR}^{2} + 2 R_\mathrm{clamp} L_\mathrm{lk} I_\mathrm{pk}^{2} f_s}}{2}

    ✓ 复现的公式 clamp.rcd.V(pytest 用 sympy 验证两者相等)

  10. 负载断开且无稳压控制时,输出持续充电,其反射电压不断升高,直至达到钳位电压;此后钳位电路吸收全部输入功率。这适用于电压与该功率无关的钳位器件(TVS);RCD 钳位电路的电压随该功率升高。

    VD+Vo,maxn=Vclamp\frac{V_D + V_\mathrm{o,max}}{n} = V_\mathrm{clamp}
  11. 解出输出电压。

    Vo,max=nVclamp−VDV_\mathrm{o,max} = n V_\mathrm{clamp} - V_D

    ✓ 复现的公式 flyback.V_ceiling(pytest 用 sympy 验证两者相等)

推导脚本:python/pe_core/derive/clamp.py

缓冲电路(snubber):由振铃求得的寄生参数、阻尼电阻与损耗

Section titled “缓冲电路(snubber):由振铃求得的寄生参数、阻尼电阻与损耗”

开关边沿使节点的寄生电感和寄生电容产生振铃。它们的数值无法从布局中读出,但可由两次测得的振铃频率求出:一次在原电路上测量,一次在并入一个已知电容后测量。

  1. 原电路中,节点以其电感与电容的谐振频率振铃:

    fr0=12πCparLparf_{r0} = \frac{1}{2 \pi \sqrt{C_\mathrm{par}} \sqrt{L_\mathrm{par}}}
  2. 在节点上并联一个已知电容,电容随之增大,而电感不变:

    fr1=12πLparCadd+Cparf_{r1} = \frac{1}{2 \pi \sqrt{L_\mathrm{par}} \sqrt{C_\mathrm{add} + C_\mathrm{par}}}
  3. 在两频率之比 x=fr0/fr1x = f_{r0}/f_{r1} 中,电感被消去:

    x2=Cadd+CparCparx^{2} = \frac{C_\mathrm{add} + C_\mathrm{par}}{C_\mathrm{par}}
  4. 解出节点电容:

    Cpar=Caddfr12fr02−fr12=Cadd(fr0fr1)2−1C_\mathrm{par} = \frac{C_\mathrm{add} f_{r1}^{2}}{f_{r0}^{2} - f_{r1}^{2}} = \frac{C_\mathrm{add}}{\left(\frac{f_{r0}}{f_{r1}}\right)^{2} - 1}

    ✓ 复现的公式 snub.C_par(pytest 用 sympy 验证两者相等)

  5. 再由第一个谐振频率得到电感:

    Lpar=14π2fr02CparL_\mathrm{par} = \frac{1}{4 \pi^{2} f_{r0}^{2} C_\mathrm{par}}

    ✓ 复现的公式 snub.L_par(pytest 用 sympy 验证两者相等)

  6. AN11160 取寄生电感、缓冲电阻与缓冲电容串联回路的阻尼比,不计节点自身的电容。该回路的固有频率满足

    1+sCsnubRsnub+CsnubLpars2=01 + s C_\mathrm{snub} R_\mathrm{snub} + C_\mathrm{snub} L_\mathrm{par} s^{2} = 0
  7. 除以 LparCsnubL_\mathrm{par} C_\mathrm{snub} 并写成 s2+2ζω0s+ω02=0s^2 + 2\zeta\omega_0 s + \omega_0^2 = 0 的形式,其中 ω0=1/LparCsnub\omega_0 = 1/\sqrt{L_\mathrm{par} C_\mathrm{snub}},其阻尼比为

    ζ=RsnubCsnub2Lpar\zeta = \frac{R_\mathrm{snub} \sqrt{C_\mathrm{snub}}}{2 \sqrt{L_\mathrm{par}}}
  8. 解出电阻:

    Rsnub=2ζLparCsnubR_\mathrm{snub} = 2 \zeta \sqrt{\frac{L_\mathrm{par}}{C_\mathrm{snub}}}

    ✓ 复现的公式 snub.R(pytest 用 sympy 验证两者相等)

  9. 在一个边沿,节点电压跳变 VsnubV_\mathrm{snub},缓冲电容经电阻充电,i=(Vsnub/R) e−t/(RCsnub)i = (V_\mathrm{snub}/R)\,e^{-t/(R C_\mathrm{snub})};电阻吸收的能量与 RR 无关:

    ER=CsnubVsnub22E_R = \frac{C_\mathrm{snub} V_\mathrm{snub}^{2}}{2}
  10. 下一个边沿,电容经电阻和正在开通的开关管放电,失去其储存的能量,即又损失同样多,因此每个周期损失

    2ER=CsnubVsnub22 E_R = C_\mathrm{snub} V_\mathrm{snub}^{2}
  11. 每秒 fsf_s 个周期:

    P=CsnubVsnub2fsP = C_\mathrm{snub} V_\mathrm{snub}^{2} f_s

    ✓ 复现的公式 snub.P(pytest 用 sympy 验证两者相等)

  12. AN11160 依据给电容充电、且寄生电感中流过电流 IringI_\mathrm{ring} 的那个边沿来确定电阻的额定功率。电源提供电容的电荷 CsnubVsnubC_\mathrm{snub} V_\mathrm{snub},电压为 VsnubV_\mathrm{snub}:

    Es=CsnubVsnub2E_s = C_\mathrm{snub} V_\mathrm{snub}^{2}
  13. 电容保留其中一半能量,电感释放其全部储能 LparIring2/2L_\mathrm{par} I_\mathrm{ring}^2/2;其余能量由电阻吸收,与其阻值无关:

    WR=CsnubVsnub22+LparIring22W_R = \frac{C_\mathrm{snub} V_\mathrm{snub}^{2}}{2} + \frac{L_\mathrm{par} I_\mathrm{ring}^{2}}{2}
  14. 每个周期一次:

    PR,snub=fs(CsnubVsnub2+LparIring2)2P_{R,\mathrm{snub}} = \frac{f_s \left(C_\mathrm{snub} V_\mathrm{snub}^{2} + L_\mathrm{par} I_\mathrm{ring}^{2}\right)}{2}

    ✓ 复现的公式 snub.P_R(pytest 用 sympy 验证两者相等)

推导脚本:python/pe_core/derive/snubbers.py

拓扑细节:直流电流、纹波、开关应力、利用率(utilization)

Section titled “拓扑细节:直流电流、纹波、开关应力、利用率(utilization)”

由输出电容的电荷平衡得到各变换器的电感直流电流。导通区间内电感电压恒定,因此电流线性变化,变化量为 ΔiL\Delta i_L(纹波峰峰值的一半)的两倍;同理,由电容每周期的电荷得到电压纹波 Δv\Delta v。开关管利用率 UU 将负载功率与开关管峰值电压和电流有效值之积相比较。

  1. 降压变换器,电荷平衡:两个区间内电容电流均为 IL−V/RI_L - V/R(小纹波)。

    ⟨iC⟩=IL−VR\langle i_C \rangle = I_L - \frac{V}{R}
  2. 令平均值为零。

    IL=VRI_L = \frac{V}{R}

    ✓ 复现的公式 buck.IL(pytest 用 sympy 验证两者相等)

  3. 降压变换器的输出纹波:电容流过电感电流中的三角波交流分量。其正半部分持续 Ts/2T_s/2,峰值为 ΔiL\Delta i_L,因此输送电荷 qq。

    q=ΔiLTs4q = \frac{\Delta i_L T_s}{4}
  4. 该电荷使电容电压从最小值升到最大值,即升高 2Δv2\Delta v。

    2CΔv=ΔiLTs42 C \Delta v = \frac{\Delta i_L T_s}{4}
  5. 解出 Δv\Delta v。

    Δv=ΔiLTs8C\Delta v = \frac{\Delta i_L T_s}{8 C}

    ✓ 复现的公式 buck.ripple.v(pytest 用 sympy 验证两者相等)

  6. 升压变换器,电荷平衡:开关管导通期间为 −V/R-V/R,二极管导通期间为 IL−V/RI_L - V/R。

    (1−D)(IL−VR)−DVR=0\left(1 - D\right) \left(I_L - \frac{V}{R}\right) - \frac{D V}{R} = 0
  7. 解出 ILI_L。

    IL=−VR(−1+D)=V(1−D)RI_L = - \frac{V}{R \left(-1 + D\right)} = \frac{V}{\left(1 - D\right) R}

    ✓ 复现的公式 boost.IL(pytest 用 sympy 验证两者相等)

  8. 升压变换器的电流纹波:电感电压为 VgV_g,持续 DTsD T_s,因此电流上升 VgDTs/LV_g D T_s/L,即 2ΔiL2\Delta i_L。

    2ΔiL=DTsVgL2 \Delta i_L = \frac{D T_s V_g}{L}
  9. 解出 ΔiL\Delta i_L。

    ΔiL=VgDTs2L\Delta i_L = \frac{V_g D T_s}{2 L}

    ✓ 复现的公式 boost.ripple.iL(pytest 用 sympy 验证两者相等)

  10. 升压变换器的电压纹波:开关管导通期间,负载电流 V/RV/R 仅由电容提供,持续 DTsD T_s,因此电容电压下降 2Δv2\Delta v。

    2Δv=DTsVCR2 \Delta v = \frac{D T_s V}{C R}
  11. 解出 Δv\Delta v。

    Δv=VDTs2RC\Delta v = \frac{V D T_s}{2 R C}

    ✓ 复现的公式 boost.ripple.v(pytest 用 sympy 验证两者相等)

  12. 以输出电压的大小 VV 表示的升降压变换器:开关管导通期间电感电压为 VgV_g,二极管导通期间为 −V-V。

    DVg−V(1−D)=0D V_g - V \left(1 - D\right) = 0
  13. 解出 VV。

    V=−DVg−1+D=DVg1−DV = - \frac{D V_g}{-1 + D} = \frac{D V_g}{1 - D}

    ✓ 复现的公式 buckboost.V(pytest 用 sympy 验证两者相等)

  14. 电荷平衡与升压变换器相同:开关管导通期间电容向负载供电,二极管导通期间电容接收 ILI_L。

    IL=−VR(−1+D)=V(1−D)RI_L = - \frac{V}{R \left(-1 + D\right)} = \frac{V}{\left(1 - D\right) R}

    ✓ 复现的公式 buckboost.IL(pytest 用 sympy 验证两者相等)

  15. 与升压变换器相同,电感电压为 VgV_g,持续 DTsD T_s。

    ΔiL=VgDTs2L\Delta i_L = \frac{V_g D T_s}{2 L}

    ✓ 复现的公式 buckboost.ripple.iL(pytest 用 sympy 验证两者相等)

  16. 与升压变换器相同,在 DTsD T_s 内仅由电容向负载供电。

    Δv=VDTs2RC\Delta v = \frac{V D T_s}{2 R C}

    ✓ 复现的公式 buckboost.ripple.v(pytest 用 sympy 验证两者相等)

  17. 降压变换器:二极管导通期间,开关节点处于地电位(理想二极管);位于输入与该节点之间的开关管阻断 VgV_g。

    VDS=VgV_\mathrm{DS} = V_g

    ✓ 复现的公式 buck.Vds(pytest 用 sympy 验证两者相等)

  18. 升压变换器:二极管导通期间,开关节点接到输出;该节点与地之间的开关管阻断 VV。

    VDS=VV_\mathrm{DS} = V

    ✓ 复现的公式 boost.Vds(pytest 用 sympy 验证两者相等)

  19. 二极管导通期间,开关管的另一端处于输出电位 −V-V;开关管阻断 Vg−(−V)V_g - (-V)。

    VDS=Vg+VV_\mathrm{DS} = V_g + V

    ✓ 复现的公式 buckboost.Vds(pytest 用 sympy 验证两者相等)

  20. 正激变换器,复位区间:复位绕组(NrN_r 匝)以相反极性接到 VgV_g,因此一次绕组(NpN_p 匝)上的电压为 −VgNp/Nr-V_g N_p/N_r。

    vpri=−Vgnrv_\mathrm{pri} = - \frac{V_g}{n_r}
  21. 开关管阻断输入电压与一次绕组电压之差。

    VDS=Vg(1+nr)nr=Vg(1+1nr)V_\mathrm{DS} = \frac{V_g \left(1 + n_r\right)}{n_r} = V_g \left(1 + \frac{1}{n_r}\right)

    ✓ 复现的公式 forward.Vds(pytest 用 sympy 验证两者相等)

  22. 正激变换器的输出电感:开关管导通期间,二次侧施加 nVgn V_g,因此电感电压为 nVg−Vn V_g - V,持续 DTsD T_s。

    2ΔiL=DTs(−V+Vgn)L2 \Delta i_L = \frac{D T_s \left(- V + V_g n\right)}{L}
  23. 解出 ΔiL\Delta i_L。

    ΔiL=(nVg−V)DTs2L\Delta i_L = \frac{\left(n V_g - V\right) D T_s}{2 L}

    ✓ 复现的公式 forward.ripple.iL(pytest 用 sympy 验证两者相等)

  24. 开关管利用率:负载功率 P=VIP = V I 除以开关管峰值电压与其电流有效值之积。小纹波下,开关管电流是高为 IQI_Q、持续 DTsD T_s 的平顶脉冲,其有效值为 IQDI_Q \sqrt{D}。

  25. 降压变换器:V=DVgV = D V_g,开关管阻断 VgV_g,流过电感电流 II。

    U=DU = \sqrt{D}
  26. 化简。

    U=DU = \sqrt{D}

    ✓ 复现的公式 util.buck(pytest 用 sympy 验证两者相等)

  27. 升压变换器:开关管阻断 VV,流过电感电流 I/(1−D)I/(1 - D)。

    U=1−DDU = \frac{1 - D}{\sqrt{D}}
  28. 化简。

    U=1−DDU = \frac{1 - D}{\sqrt{D}}

    ✓ 复现的公式 util.boost(pytest 用 sympy 验证两者相等)

  29. 升降压变换器:V=DVg/(1−D)V = D V_g/(1 - D),开关管阻断 Vg+VV_g + V,流过 I/(1−D)I/(1 - D)。

    U=VgDVg+DVg1−DU = \frac{V_g \sqrt{D}}{V_g + \frac{D V_g}{1 - D}}
  30. 化简。

    U=(1−D)DU = \left(1 - D\right) \sqrt{D}

    ✓ 复现的公式 util.buckboost(pytest 用 sympy 验证两者相等)

  31. 反激变换器:V=nDVg/(1−D)V = n D V_g/(1 - D),开关管阻断 Vg+V/nV_g + V/n,流过折算到一次侧的励磁电流 nI/(1−D)n I/(1 - D);匝比消去,结果与升降压变换器相同。

    U=D(1−D)U = \sqrt{D} \left(1 - D\right)
  32. 正激变换器:V=nDVgV = n D V_g,开关管阻断 Vg(1+1/nr)V_g(1 + 1/n_r),流过反射的电感电流 nIn I(忽略励磁电流)。

    U=D1+1nrU = \frac{\sqrt{D}}{1 + \frac{1}{n_r}}
  33. 化简。

    U=nrD1+nr=D1+1nrU = \frac{n_r \sqrt{D}}{1 + n_r} = \frac{\sqrt{D}}{1 + \frac{1}{n_r}}

    ✓ 复现的公式 util.forward(pytest 用 sympy 验证两者相等)

推导脚本:python/pe_core/derive/topologies.py

小信号传递函数(small-signal transfer functions),CCM

Section titled “小信号传递函数(small-signal transfer functions),CCM”

取平均消除了开关纹波;在工作点附近对平均方程施加扰动(d=D+d^d = D + \hat d,v=V+v^v = V + \hat v,i=I+i^i = I + \hat i)并略去二阶乘积项,得到线性方程,对其作拉普拉斯变换即得 v^/d^\hat v/\hat d。下面各变换器最终都化为标准二阶形式:增益为 Gd0G_{d0},极点位于 ω0\omega_0、品质因数为 QQ,升压和升降压变换器还有一个位于右半平面的零点 ωz\omega_z。

  1. 降压变换器,线性化平均方程(v^g=0\hat v_g = 0):电感电压为 d vg−vd\,v_g - v,电容电流为 i−v/Ri - v/R。

    (i^sL=−v^+d^Vg, sv^C=i^−v^R)\left( \hat i s L = - \hat v + \hat d V_g, \ s \hat v C = \hat i - \frac{\hat v}{R}\right)
  2. 解出 v^/d^\hat v/\hat d。

    Gvd(s)=RVgR+sL+CLRs2G_{vd}(s) = \frac{R V_g}{R + s L + C L R s^{2}}
  3. 直流增益:s=0s = 0 处的值。

    Gd0=VgG_{d0} = V_g

    ✓ 复现的公式 buck.ss.Gd0(pytest 用 sympy 验证两者相等)

  4. 极点:ω0=1/a2\omega_0 = 1/\sqrt{a_2},由 s2s^2 项的系数 a2a_2 得到。

    ω0=1LC\omega_0 = \frac{1}{\sqrt{L C}}

    ✓ 复现的公式 buck.ss.w0(pytest 用 sympy 验证两者相等)

  5. Q=a2/a1Q = \sqrt{a_2}/a_1,由 ss 项的系数 a1a_1 得到。

    Q=RCLQ = R \sqrt{\frac{C}{L}}

    ✓ 复现的公式 buck.ss.Q(pytest 用 sympy 验证两者相等)

  6. 升压变换器:平均电感电压为 vg−d′vv_g - d' v,电容电流为 d′i−v/Rd' i - v/R(d′=1−dd' = 1 - d)。按 d′=D′−d^d' = D' - \hat d 施加扰动并线性化:

    (i^sL=d^V−v^D′, sv^C=i^D′−d^I−v^R)\left( \hat i s L = \hat d V - \hat v D', \ s \hat v C = \hat i D' - \hat d I - \frac{\hat v}{R}\right)
  7. 由稳态得到工作点,记 D′=1−DD' = 1 - D:V=Vg/D′V = V_g/D',I=V/(D′R)I = V/(D' R)。

    (V=VgD′, I=VgD′2R)\left( V = \frac{V_g}{D'}, \ I = \frac{V_g}{D'^{2} R}\right)
  8. 解出 v^/d^\hat v/\hat d。

    Gvd(s)=Vg(−sL+RD′2)D′2(sL+RD′2+CLRs2)G_{vd}(s) = \frac{V_g \left(- s L + R D'^{2}\right)}{D'^{2} \left(s L + R D'^{2} + C L R s^{2}\right)}
  9. 直流增益(结果中已代回 D′=1−DD' = 1 - D)。

    Gd0=Vg(1−D)2G_{d0} = \frac{V_g}{\left(1 - D\right)^{2}}

    ✓ 复现的公式 boost.ss.Gd0(pytest 用 sympy 验证两者相等)

  10. 极点频率。

    ω0=1−DLC\omega_0 = \frac{1 - D}{\sqrt{L C}}

    ✓ 复现的公式 boost.ss.w0(pytest 用 sympy 验证两者相等)

  11. 品质因数。

    Q=(1−D)RCLQ = \left(1 - D\right) R \sqrt{\frac{C}{L}}

    ✓ 复现的公式 boost.ss.Q(pytest 用 sympy 验证两者相等)

  12. 分子在正实数 ss 处为零:右半平面零点。

    ωz=(1−D)2RL\omega_z = \frac{\left(1 - D\right)^{2} R}{L}

    ✓ 复现的公式 boost.ss.wz(pytest 用 sympy 验证两者相等)

  13. 升降压变换器:平均电感电压为 d vg+d′vd\,v_g + d' v,电容电流为 −d′i−v/R-d' i - v/R,输出 vv 为负。线性化:

    (i^sL=d^(Vg−V)+v^D′, sv^C=d^I−i^D′−v^R)\left( \hat i s L = \hat d \left(V_g - V\right) + \hat v D', \ s \hat v C = \hat d I - \hat i D' - \frac{\hat v}{R}\right)
  14. 工作点,记 D′=1−DD' = 1 - D:V=−DVg/D′V = -D V_g/D',I=DVg/(D′2R)I = D V_g/(D'^2 R)。

    (V=Vg(−1+D′)D′, I=Vg(1−D′)D′2R)\left( V = \frac{V_g \left(-1 + D'\right)}{D'}, \ I = \frac{V_g \left(1 - D'\right)}{D'^{2} R}\right)
  15. 解出 v^/d^\hat v/\hat d。

    Gvd(s)=Vg(−sL(−1+D′)−RD′2)D′2(sL+RD′2+CLRs2)G_{vd}(s) = \frac{V_g \left(- s L \left(-1 + D'\right) - R D'^{2}\right)}{D'^{2} \left(s L + R D'^{2} + C L R s^{2}\right)}
  16. 直流增益为负(反相输出);其大小为:

    Gd0=Vg(1−D)2G_{d0} = \frac{V_g}{\left(1 - D\right)^{2}}

    ✓ 复现的公式 buckboost.ss.Gd0(pytest 用 sympy 验证两者相等)

  17. 极点频率。

    ω0=1−DLC\omega_0 = \frac{1 - D}{\sqrt{L C}}

    ✓ 复现的公式 buckboost.ss.w0(pytest 用 sympy 验证两者相等)

  18. 品质因数。

    Q=(1−D)RCLQ = \left(1 - D\right) R \sqrt{\frac{C}{L}}

    ✓ 复现的公式 buckboost.ss.Q(pytest 用 sympy 验证两者相等)

  19. 右半平面零点。

    ωz=R(−1+D)2DL=(1−D)2RDL\omega_z = \frac{R \left(-1 + D\right)^{2}}{D L} = \frac{\left(1 - D\right)^{2} R}{D L}

    ✓ 复现的公式 buckboost.ss.wz(pytest 用 sympy 验证两者相等)

推导脚本:python/pe_core/derive/small_signal.py

PWM 调制器(modulator)与环路增益(loop gain)

Section titled “PWM 调制器(modulator)与环路增益(loop gain)”

电压模式控制器将控制电压与周期性锯齿波比较,以确定占空比。沿环路绕行一周,补偿器、调制器、功率级和传感器的增益相乘;这一乘积即环路增益 TT,它决定环路抑制扰动的强弱。

  1. 锯齿波从 00 上升到 VMV_M,历时 TsT_s;锯齿波越过 VctrlV_\mathrm{ctrl} 时开关管关断。

    VMtoffTs=Vctrl\frac{V_M t_\mathrm{off}}{T_s} = V_\mathrm{ctrl}
  2. 导通时间占比为 D=toff/TsD = t_\mathrm{off}/T_s。

    D=VctrlVMD = \frac{V_\mathrm{ctrl}}{V_M}

    ✓ 复现的公式 pwm.d(pytest 用 sympy 验证两者相等)

  3. 沿环路:补偿器输出驱动调制器(增益 1/VM1/V_M),功率级将 d^\hat d 转换为 v^\hat v(增益 GvdG_{vd}),传感器反馈 Hv^H \hat v。

  4. 环路增益是沿环路各增益的乘积。

    T=GcGvdHVMT = \frac{G_c G_{vd} H}{V_M}

    ✓ 复现的公式 loop.T(pytest 用 sympy 验证两者相等)

  5. 输出扰动 v^dist\hat v_\mathrm{dist} 叠加在受控输出上;控制器根据误差 v^ref−Hv^\hat v_\mathrm{ref} - H\hat v 动作。

    v^=v^dist+GcGvd(v^ref−v^H)VM\hat v = \hat v_\mathrm{dist} + \frac{G_c G_{vd} \left(\hat v_\mathrm{ref} - \hat v H\right)}{V_M}
  6. 到达输出端的扰动减小到原来的 1+T1 + T 分之一。

    S=11+TS = \frac{1}{1 + T}

    ✓ 复现的公式 loop.suppression(pytest 用 sympy 验证两者相等)

推导脚本:python/pe_core/derive/control.py

电感或电容储存的能量是送入它的功率 viv i 的积分。每个开关周期重复发生的损耗等于每周期损失的能量乘以 fsf_s;导通损耗是瞬时功率的周期平均值。

  1. 送入电感的能量:p=vip = v i,其中 v=L di/dtv = L\,di/dt,因此 dE=Li didE = L i\,di。从零积分到关断电流。

    Elk=∫0IpkiLlk diE_\mathrm{lk} = \int\limits_{0}^{I_\mathrm{pk}} i L_\mathrm{lk}\, di
  2. 计算该积分。

    Elk=LlkIpk22E_\mathrm{lk} = \frac{L_\mathrm{lk} I_\mathrm{pk}^{2}}{2}

    ✓ 复现的公式 flyback.leak.E(pytest 用 sympy 验证两者相等)

  3. 若每个周期都将这部分能量移除(钳位或耗散),平均功率为 ElkfsE_\mathrm{lk} f_s。

    Plk=ElkfsP_\mathrm{lk} = E_\mathrm{lk} f_s

    ✓ 复现的公式 flyback.leak.P(pytest 用 sympy 验证两者相等)

  4. 充电到 VswV_\mathrm{sw} 的开关节点电容储存的能量:dE=v dq=Cv dvdE = v\,dq = C v\,dv。

    EC=∫0VswvCnode dvE_C = \int\limits_{0}^{V_\mathrm{sw}} v C_\mathrm{node}\, dv
  5. 硬开通每个周期都使其经开关管沟道放电:P=ECfsP = E_C f_s。

    P=CnodeVsw2fs2P = \frac{C_\mathrm{node} V_\mathrm{sw}^{2} f_s}{2}

    ✓ 复现的公式 loss.sw.cap(pytest 用 sympy 验证两者相等)

  6. 导通损耗是瞬时功率 i(t)2Rxi(t)^2 R_x 的周期平均值。

    P=∫0TsRxi2(t) dtTsP = \frac{\int\limits_{0}^{T_s} R_x i^{2}{\left(t \right)}\, dt}{T_s}
  7. 按定义,电流有效值(rms)是 i(t)2i(t)^2 周期平均值的平方根。

    Irms2=∫0Tsi2(t) dtTsI_\mathrm{rms}^{2} = \frac{\int\limits_{0}^{T_s} i^{2}{\left(t \right)}\, dt}{T_s}
  8. RxR_x 为常数,因此可移到平均运算之外。

    P=Irms2RxP = I_\mathrm{rms}^{2} R_x

    ✓ 复现的公式 loss.cond(pytest 用 sympy 验证两者相等)

  9. 导通的二极管建模为正向电压截距加动态电阻,vD=VF+rdiv_D = V_F + r_d i,因此 p=VFi+rdi2p = V_F i + r_d i^2。

    P=∫0Ts(VFi(t)+rdi2(t)) dtTsP = \frac{\int\limits_{0}^{T_s} \left(V_F i{\left(t \right)} + r_d i^{2}{\left(t \right)}\right)\, dt}{T_s}
  10. ii 的平均值为 IavgI_\mathrm{avg},i2i^2 的平均值为 Irms2I_\mathrm{rms}^2。

    P=VFIavg+rdIrms2P = V_F I_\mathrm{avg} + r_d I_\mathrm{rms}^{2}

    ✓ 复现的公式 loss.diode(pytest 用 sympy 验证两者相等)

  11. 每个周期,驱动器所取的栅极电荷 QgQ_g 来自其 VGSV_\mathrm{GS} 电源;从电源取得的能量为 VGS dqV_\mathrm{GS}\,dq 的积分。

    EG=∫0QgVGS dqE_G = \int\limits_{0}^{Q_g} V_\mathrm{GS}\, dq
  12. 这些能量最终全部在驱动器与栅极的电阻中转化为热量;再乘以 fsf_s。

    P=QgVGSfsP = Q_g V_\mathrm{GS} f_s

    ✓ 复现的公式 loss.gate(pytest 用 sympy 验证两者相等)

  13. 无阻尼 L-C 回路满足 LC d2v/dt2+v=0L C\,d^2v/dt^2 + v = 0;其特征方程为 LCs2+1=0L C s^2 + 1 = 0。

    1+CnodeLMs2=01 + C_\mathrm{node} L_M s^{2} = 0
  14. 其根为 ±jω0\pm j\omega_0。

    ω0=1CnodeLM\omega_0 = \frac{1}{\sqrt{C_\mathrm{node}} \sqrt{L_M}}
  15. f=ω0/(2π)f = \omega_0/(2\pi)。

    fring=12πLMCnodef_\mathrm{ring} = \frac{1}{2 \pi \sqrt{L_M C_\mathrm{node}}}

    ✓ 复现的公式 dcm.ring.f(pytest 用 sympy 验证两者相等)

推导脚本:python/pe_core/derive/energy.py

磁路(magnetic circuits):电感系数、磁通密度与磁芯几何常数

Section titled “磁路(magnetic circuits):电感系数、磁通密度与磁芯几何常数”

磁路的特性类似电阻电路:磁动势 NiN i 驱动磁通 Φ\Phi 流过磁阻 R=l/(μA)\mathcal{R} = l/(\mu A)。若有效截面积 AeA_e 上的磁通密度均匀,则 B=Φ/AeB = \Phi/A_e。

  1. 磁芯磁阻(相对磁导率 μi\mu_i)。

    Rc=leAeμ0μi\mathcal{R}_c = \frac{l_e}{A_e \mu_0 \mu_i}
  2. 气隙磁阻(忽略边缘磁通:气隙面积等于 AeA_e)。

    Rg=lgAeμ0\mathcal{R}_g = \frac{l_g}{A_e \mu_0}
  3. 两者串联。

    R=lgAeμ0+leAeμ0μi\mathcal{R} = \frac{l_g}{A_e \mu_0} + \frac{l_e}{A_e \mu_0 \mu_i}
  4. 磁链 λ=NΦ=N(Ni/R)\lambda = N\Phi = N (N i/\mathcal{R}),因此 L=λ/i=N2/RL = \lambda/i = N^2/\mathcal{R}。

    L=N2RL = \frac{N^{2}}{\mathcal{R}}
  5. 电感系数是每匝平方的电感,AL=L/N2=1/RA_L = L/N^2 = 1/\mathcal{R}。

    AL=1RA_L = \frac{1}{\mathcal{R}}
  6. 代入两个磁阻。

    AL=Aeμ0μile+lgμi=μ0Aelg+leμiA_L = \frac{A_e \mu_0 \mu_i}{l_e + l_g \mu_i} = \frac{\mu_0 A_e}{l_g + \frac{l_e}{\mu_i}}

    ✓ 复现的公式 mag.AL_gap(pytest 用 sympy 验证两者相等)

  7. 因此 L=ALN2L = A_L N^2。

    L=ALN2L = A_L N^{2}

    ✓ 复现的公式 mag.L_from_AL(pytest 用 sympy 验证两者相等)

  8. 磁链与电感:λ=NΦ=Li\lambda = N\Phi = L i,因此 Φ=Li/N\Phi = L i/N。

    λ=NΦ\lambda = N \Phi
  9. 在峰值电流处,Bpk=Φpk/Ae=LIpk/(NAe)B_\mathrm{pk} = \Phi_\mathrm{pk}/A_e = L I_\mathrm{pk}/(N A_e)。

    Bpk=LIpkNAeB_\mathrm{pk} = \frac{L I_\mathrm{pk}}{N A_e}

    ✓ 复现的公式 mag.B_pk(pytest 用 sympy 验证两者相等)

  10. 磁通密度随电流变化,B=Li/(NAe)B = L i/(N A_e)。围绕直流电流的 ±ΔiL\pm\Delta i_L 纹波使磁通密度围绕其直流值变化 ±L ΔiL/(NAe)\pm L\,\Delta i_L/(N A_e):该幅值即 BacB_\mathrm{ac}。

    Bac=LΔiLNAeB_\mathrm{ac} = \frac{L \Delta i_L}{N A_e}

    ✓ 复现的公式 mag.B_ac(pytest 用 sympy 验证两者相等)

  11. 令 BpkB_\mathrm{pk} 等于限值 BmaxB_\mathrm{max} 并解出匝数,得到不超过该限值的最少匝数。

    N=LIpkBmaxAeN = \frac{L I_\mathrm{pk}}{B_\mathrm{max} A_e}

    ✓ 复现的公式 mag.N_Bmax(pytest 用 sympy 验证两者相等)

  12. NN 确定后,电感 L=N2/(Rc+Rg)L = N^2/(\mathcal{R}_c + \mathcal{R}_g) 决定气隙磁阻,从而决定气隙长度。

    lg=μ0AeN2L−leμil_g = \frac{\mu_0 A_e N^{2}}{L} - \frac{l_e}{\mu_i}

    ✓ 复现的公式 mag.gap_length(pytest 用 sympy 验证两者相等)

  13. 选择磁芯。绕组 NN 匝、铜截面积为 AwA_w 的导线只能按比例 KuK_u 填充窗口 WAW_A:

    KuWA=AwNK_u W_A = A_w N
  14. 在极限情况下,其电阻(NN 匝,平均匝长 MLT)等于铜损预算 Rdc,maxR_\mathrm{dc,max}:

    Rdc,max=MLTNρwAwR_\mathrm{dc,max} = \frac{\mathrm{MLT} N \rho_w}{A_w}
  15. 窗口决定导线截面积,Aw=KuWA/NA_w = K_u W_A/N,因此电阻随匝数的平方增大:

    Rdc,max=MLTρwN2KuWAR_\mathrm{dc,max} = \frac{\mathrm{MLT} \rho_w N^{2}}{K_u W_A}
  16. 磁通限值决定匝数,N=LIpk/(BmaxAe)N = L I_\mathrm{pk}/(B_\mathrm{max} A_e):

    Rdc,max=MLTρwIpk2L2Ae2Bmax2KuWAR_\mathrm{dc,max} = \frac{\mathrm{MLT} \rho_w I_\mathrm{pk}^{2} L^{2}}{A_e^{2} B_\mathrm{max}^{2} K_u W_A}
  17. 将磁芯尺寸归到等式一侧,即定义了磁芯几何常数;另一侧只取决于设计指标。

    Kg=WAAe2MLTK_g = \frac{W_A A_e^{2}}{\mathrm{MLT}}
  18. 磁芯要同时满足磁通限值、窗口和电阻预算,其 KgK_g 至少应为:

    Kg=ρwL2Ipk2Bmax2Rdc,maxKuK_g = \frac{\rho_w L^{2} I_\mathrm{pk}^{2}}{B_\mathrm{max}^{2} R_\mathrm{dc,max} K_u}

    ✓ 复现的公式 mag.Kg_req(pytest 用 sympy 验证两者相等)

  19. 法拉第定律:v=NAe dB/dtv = N A_e\,dB/dt,因此导通时间内 BB 的变化量是 v/(NAe)v/(N A_e) 的积分。

    ΔB=∫0tonVwAeN dt\Delta B = \int\limits_{0}^{t_\mathrm{on}} \frac{V_w}{A_e N}\, dt
  20. 绕组电压 VwV_w 恒定时,摆幅与伏秒积 VwtonV_w t_\mathrm{on} 成正比。

    ΔB=VwtonNAe\Delta B = \frac{V_w t_\mathrm{on}}{N A_e}

    ✓ 复现的公式 mag.dB_faraday(pytest 用 sympy 验证两者相等)

推导脚本:python/pe_core/derive/magnetics.py

绕组(windings):电阻、集肤深度(skin depth)、薄层、漏感(leakage)与短路

Section titled “绕组(windings):电阻、集肤深度(skin depth)、薄层、漏感(leakage)与短路”

绕组是分层绕制的长导体。其电阻由长度和截面积决定;高频时电流集中到导体表层;绕组之间的磁场储存能量,这部分能量表现为漏感。

  1. 绕组是一根导体,共 NN 匝,平均匝长为 MLT:

    lw=MLTNl_w = \mathrm{MLT} N
  2. 其直流电阻等于电阻率乘以长度再除以导体截面积。

    Rdc=ρwNMLTAwR_\mathrm{dc} = \frac{\rho_w N \mathrm{MLT}}{A_w}

    ✓ 复现的公式 wind.dcr(pytest 用 sympy 验证两者相等)

  3. 在良导体(电导率 1/ρw1/\rho_w)中,正弦电流密度满足 d2J/dx2=jωμ0J/ρwd^2 J/dx^2 = j\omega\mu_0 J/\rho_w,因此按 e−kxe^{-k x} 变化,其中

    k2=2πifμ0ρwk^{2} = \frac{2 \pi i f \mu_0}{\rho_w}
  4. 实部为正的根:

    k=πfμ0ρw+iπfμ0ρwk = \frac{\sqrt{\pi} \sqrt{f} \sqrt{\mu_0}}{\sqrt{\rho_w}} + \frac{i \sqrt{\pi} \sqrt{f} \sqrt{\mu_0}}{\sqrt{\rho_w}}
  5. 幅值每经过一个集肤深度减小到原来的 ee 分之一,集肤深度即 kk 实部的倒数。

    δ=ρwπμ0f\delta = \sqrt{\frac{\rho_w}{\pi \mu_0 f}}

    ✓ 复现的公式 wind.skin_depth(pytest 用 sympy 验证两者相等)

  6. MℓM_\ell 层、每层厚 φ\varphi 个集肤深度时的 Dowell 交流电阻系数(`wind.dowell`):

    FR=φ(sin⁡(2φ)+sinh⁡(2φ)−cos⁡(2φ)+cosh⁡(2φ)+(−23+2Mℓ23)(−sin⁡(φ)+sinh⁡(φ))cos⁡(φ)+cosh⁡(φ))F_R = \varphi \left(\frac{\sin{\left(2 \varphi \right)} + \sinh{\left(2 \varphi \right)}}{- \cos{\left(2 \varphi \right)} + \cosh{\left(2 \varphi \right)}} + \frac{\left(- \frac{2}{3} + \frac{2 M_\ell^{2}}{3}\right) \left(- \sin{\left(\varphi \right)} + \sinh{\left(\varphi \right)}\right)}{\cos{\left(\varphi \right)} + \cosh{\left(\varphi \right)}}\right)
  7. 对于薄层,将双曲函数和三角函数按 φ\varphi 的幂展开:直到 φ3\varphi^3 的各项相互抵消,超出部分的首项为四阶。

    FR=1−φ445+Mℓ2φ49=1+(5Mℓ2−1)φ445F_R = 1 - \frac{\varphi^{4}}{45} + \frac{M_\ell^{2} \varphi^{4}}{9} = 1 + \frac{\left(5 M_\ell^{2} - 1\right) \varphi^{4}}{45}

    ✓ 复现的公式 wind.dowell_low(pytest 用 sympy 验证两者相等)

  8. 频率给定时集肤深度固定,因此厚 φ\varphi 个集肤深度的层,其直流电阻为 Rδ/φR_\delta/\varphi,RδR_\delta 为厚一个集肤深度的层的直流电阻。流过电流 II 时,其损耗为

    P=FRRδI2φP = \frac{F_R R_\delta I^{2}}{\varphi}
  9. 相对于厚一个集肤深度、以直流形式流过同一电流的层的损耗 RδI2R_\delta I^2:

    P/Pδ=FRφP/P_\delta = \frac{F_R}{\varphi}

    ✓ 复现的公式 wind.loss_rel(pytest 用 sympy 验证两者相等)

  10. 代入薄层的级数展开:

    P/Pδ=1−φ445+Mℓ2φ49φP/P_\delta = \frac{1 - \frac{\varphi^{4}}{45} + \frac{M_\ell^{2} \varphi^{4}}{9}}{\varphi}
  11. 其导数为零处取最小值:

    φopt=(155Mℓ2−1)14\varphi_\mathrm{opt} = \left(\frac{15}{5 M_\ell^{2} - 1}\right)^{\frac{1}{4}}

    ✓ 复现的公式 wind.phi_opt(pytest 用 sympy 验证两者相等)

  12. 在该处,交流电阻系数对任意层数都相同:

    FR=43F_R = \frac{4}{3}
  13. 窗口内的磁场沿宽度 bwb_w 方向,因此 H=F/bwH = \mathcal{F}/b_w,其中 F\mathcal{F} 为该高度处所包围的磁动势;它在匝长 MLT 上储存的能量为

    E=MLTμ0∫F2 dy2bwE = \frac{\mathrm{MLT} \mu_0 \int \mathcal{F}^{2}\, dy}{2 b_w}
  14. 先一次绕组、后二次绕组:磁动势在一次绕组中线性上升到 NIN I,在间距中保持不变,在二次绕组中降回零。

    F=IN\mathcal{F} = I N
  15. 由 Llk=2E/I2L_\mathrm{lk} = 2E/I^2,每个绕组按其高度的三分之一计入,间距则全部计入。

    Llk=MLTμ0N2(hp+hs+3hg)3bw=μ0N2MLT(hp3+hg+hs3)bwL_\mathrm{lk} = \frac{\mathrm{MLT} \mu_0 N^{2} \left(h_p + h_s + 3 h_g\right)}{3 b_w} = \frac{\mu_0 N^{2} \mathrm{MLT} \left(\frac{h_p}{3} + h_g + \frac{h_s}{3}\right)}{b_w}

    ✓ 复现的公式 xfmr.leakage.ps(pytest 用 sympy 验证两者相等)

  16. 一次绕组分成两半置于二次绕组两侧:磁动势在前一半中上升到 NI/2N I/2,穿过二次绕组时从 NI/2N I/2 变为 −NI/2-N I/2,在后一半中回到零。

    F=IN2\mathcal{F} = \frac{I N}{2}
  17. 峰值磁动势减半,因此能量和漏感都降到约四分之一;两处间距都要计入。

    Llk=MLTμ0N2(hp+hs+6hg)12bw=μ0N2MLT(hp3+2hg+hs3)4bwL_\mathrm{lk} = \frac{\mathrm{MLT} \mu_0 N^{2} \left(h_p + h_s + 6 h_g\right)}{12 b_w} = \frac{\mu_0 N^{2} \mathrm{MLT} \left(\frac{h_p}{3} + 2 h_g + \frac{h_s}{3}\right)}{4 b_w}

    ✓ 复现的公式 xfmr.leakage.psp(pytest 用 sympy 验证两者相等)

  18. 两个耦合绕组,各有自感,两者之间的互感为 L12L_{12}:

    v1=di1dtL11+di2dtL12v_1 = \frac{di_1}{dt} L_{11} + \frac{di_2}{dt} L_{12}
  19. 以及绕组 2 上:

    v2=di1dtL12+di2dtL22v_2 = \frac{di_1}{dt} L_{12} + \frac{di_2}{dt} L_{22}
  20. 将绕组 2 短路使 v2=0v_2 = 0,因此其电流与绕组 1 的电流反向变化:

    di2dt=−di1dtL12L22\frac{di_2}{dt} = - \frac{\frac{di_1}{dt} L_{12}}{L_{22}}
  21. 此时从绕组 1 看进去的电感为 v1/(di1/dt)v_1/(di_1/dt):

    Lsc=L11−L122L22L_\mathrm{sc} = L_{11} - \frac{L_{12}^{2}}{L_{22}}
  22. 用耦合系数 k=L12/L11L22k = L_{12}/\sqrt{L_{11} L_{22}}(`xfmr.k`)表示:

    Lsc=L11(1−k2)L_\mathrm{sc} = L_{11} \left(1 - k^{2}\right)

    ✓ 复现的公式 xfmr.L_sc(pytest 用 sympy 验证两者相等)

  23. 在变压器模型中(1:nn,励磁电感 LML_M 与各漏感均折算到一次侧),绕组电感为

    L11=LM+Lℓ1L_{11} = L_M + L_{\ell 1}
  24. 互感为

    L12=LMnL_{12} = L_M n
  25. 以及绕组 2 的电感(其漏感 Lℓ2=n2Lℓ2′L_{\ell 2} = n^2 L_{\ell 2}'):

    L22=n2(LM+Lℓ2′)L_{22} = n^{2} \left(L_M + L_{\ell 2}'\right)
  26. 代入后匝比消去:一次侧漏感,与二次侧漏感和 LML_M 的并联相串联。

    Lsc=Lℓ1+Lℓ2′LMLℓ2′+LML_\mathrm{sc} = L_{\ell 1} + \frac{L_{\ell 2}' L_M}{L_{\ell 2}' + L_M}

    ✓ 复现的公式 xfmr.L_sc_T(pytest 用 sympy 验证两者相等)

  27. 绕组 2 开路时其中无电流(di2/dt=0di_2/dt = 0),两电压之比为

    V2/V1=L12L11V_2/V_1 = \frac{L_{12}}{L_{11}}
  28. 在变压器模型中:略低于匝比,因为一次侧漏感分担了一部分电压。

    V2/V1=nLMLℓ1+LMV_2/V_1 = \frac{n L_M}{L_{\ell 1} + L_M}

    ✓ 复现的公式 xfmr.V_oc(pytest 用 sympy 验证两者相等)

推导脚本:python/pe_core/derive/windings.py

测量:在自谐振附近读出的电感量

Section titled “测量:在自谐振附近读出的电感量”

绕组是并联了匝间电容的电感。阻抗测量仪将测得的电抗除以 ω\omega,并将结果显示为电感。

  1. 电感与电容并联:

    Z=1iCpω−iLωZ = \frac{1}{i C_p \omega - \frac{i}{L \omega}}
  2. 它是纯电抗,

    Z=−iLω−1+CpLω2Z = - \frac{i L \omega}{-1 + C_p L \omega^{2}}
  3. 因此仪表读出的电感为 Z/(jω)Z/(j\omega):

    Lapp=−L−1+CpLω2L_\mathrm{app} = - \frac{L}{-1 + C_p L \omega^{2}}
  4. 用自谐振频率(`passive.f_srf`)表示,得 ω2LCp=(f/fsrf)2\omega^2 L C_p = (f/f_\mathrm{srf})^2:

    fsrf=12πCpLf_\mathrm{srf} = \frac{1}{2 \pi \sqrt{C_p} \sqrt{L}}
  5. 代入 ω=2πf\omega = 2\pi f:

    Lapp=−Lfsrf2f2−fsrf2=L1−(ffsrf)2L_\mathrm{app} = - \frac{L f_\mathrm{srf}^{2}}{f^{2} - f_\mathrm{srf}^{2}} = \frac{L}{1 - \left(\frac{f}{f_\mathrm{srf}}\right)^{2}}

    ✓ 复现的公式 meas.L_app(pytest 用 sympy 验证两者相等)

推导脚本:python/pe_core/derive/measurement.py

线性源(linear sources):最大功率、恒压提取(constant-voltage extraction)与无损电阻

Section titled “线性源(linear sources):最大功率、恒压提取(constant-voltage extraction)与无损电阻”

线性能量源用其戴维南等效电路建模:开路电压 VocV_\mathrm{oc} 串联源内阻 RsR_s。其可用功率有多少到达变换器,取决于变换器输入端呈现的特性。

  1. 送入负载电阻 RLR_L 的功率。

    PL=RLVoc2(RL+Rs)2P_L = \frac{R_L V_\mathrm{oc}^{2}}{\left(R_L + R_s\right)^{2}}
  2. 由 dPL/dRL=0dP_L/dR_L = 0 得到匹配负载。

    RL=RsR_L = R_s
  3. 代入 RL=RsR_L = R_s。

    Pmax=Voc24RsP_\mathrm{max} = \frac{V_\mathrm{oc}^{2}}{4 R_s}

    ✓ 复现的公式 src.Pmax(pytest 用 sympy 验证两者相等)

  4. 电压为 VcV_c 的恒压负载(例如输入被固定在某一电压的变换器)汲取电流 I=(Voc−Vc)/RsI = (V_\mathrm{oc} - V_c)/R_s。

    I=Voc−VcRsI = \frac{V_\mathrm{oc} - V_c}{R_s}
  5. 其吸收的功率:当 Vc>VocV_c > V_\mathrm{oc} 时为负,此时负载将能量回馈给源。

    P=Vc(Voc−Vc)RsP = \frac{V_c \left(V_\mathrm{oc} - V_c\right)}{R_s}

    ✓ 复现的公式 src.cv_power(pytest 用 sympy 验证两者相等)

  6. 以 PmaxP_\mathrm{max} 归一化。

    ηext=4Vc(Voc−Vc)Voc2\eta_\mathrm{ext} = \frac{4 V_c \left(V_\mathrm{oc} - V_c\right)}{V_\mathrm{oc}^{2}}

    ✓ 复现的公式 src.cv_extraction(pytest 用 sympy 验证两者相等)

  7. 工作在 DCM 的变换器汲取的平均输入电流与其输入电压成正比:其输入端相当于电阻 RinR_\mathrm{in},即无损电阻,它取代 RLR_L 的位置。

  8. 源内阻与 RinR_\mathrm{in} 对源电压分压。

    Vg=VocRinRs+RinV_g = \frac{V_\mathrm{oc} R_\mathrm{in}}{R_s + R_\mathrm{in}}

    ✓ 复现的公式 lfr.Vg(pytest 用 sympy 验证两者相等)

  9. 在 PLP_L 中令 RL=RinR_L = R_\mathrm{in},并以 PmaxP_\mathrm{max} 归一化:源电压被消去。

    ηext=4RsRin(Rs+Rin)2\eta_\mathrm{ext} = \frac{4 R_s R_\mathrm{in}}{\left(R_s + R_\mathrm{in}\right)^{2}}

    ✓ 复现的公式 lfr.eta(pytest 用 sympy 验证两者相等)

  10. 无损电阻吸取的功率等于一个电阻在其输入电压下消耗的功率。

    P=Vg2RinP = \frac{V_g^{2}}{R_\mathrm{in}}
  11. 解出 VgV_g:功率越大,所需输入电压越高。

    Vg=PRinV_g = \sqrt{P R_\mathrm{in}}

    ✓ 复现的公式 lfr.Vg_power(pytest 用 sympy 验证两者相等)

  12. DCM 反激变换器的输入电阻为 Rin=2LMfs/D2R_\mathrm{in} = 2 L_M f_s / D^2(在反激变换器部分推导)。

    Rin=2LMfsD2R_\mathrm{in} = \frac{2 L_M f_s}{D^{2}}
  13. 解出 LML_M:即呈现所需 RinR_\mathrm{in} 的电感,例如为与源匹配而取 RsR_s。

    LM=RinD22fsL_M = \frac{R_\mathrm{in} D^{2}}{2 f_s}

    ✓ 复现的公式 lfr.L_M(pytest 用 sympy 验证两者相等)

  14. 包络相对母线变化缓慢时,无损电阻每一时刻吸取 ηextVoc2/(4Rs)\eta_\mathrm{ext} V_\mathrm{oc}^2/(4 R_s);取 Voc(t)=V^ocsin⁡(πt/Tenv)V_\mathrm{oc}(t) = \hat{V}_\mathrm{oc} \sin(\pi t / T_\mathrm{env}),即包络的一个半波(整流后的正弦波重复这一半波)。

    P=ηextV^oc2sin⁡2(πtTenv)4RsP = \frac{\eta_\mathrm{ext} \hat{V}_\mathrm{oc}^{2} \sin^{2}{\left(\frac{\pi t}{T_\mathrm{env}} \right)}}{4 R_s}
  15. 在半波内取平均:正弦波平方的平均值为其峰值平方的一半。

    Pˉ=ηextV^oc28Rs\bar{P} = \frac{\eta_\mathrm{ext} \hat{V}_\mathrm{oc}^{2}}{8 R_s}

    ✓ 复现的公式 lfr.P_env(pytest 用 sympy 验证两者相等)

推导脚本:python/pe_core/derive/harvesting.py

压电源(piezoelectric source):负载与接口电路

Section titled “压电源(piezoelectric source):负载与接口电路”

在幅值恒定的稳态正弦振动下,压电元件等效为电流源 Ipsin⁡ωtI_p \sin \omega t 与其夹持电容 C0C_0 并联。负载或接口电路取得多少能量,取决于每个半周期内该电流的电荷流向何处。

  1. 未接任何电路时,全部电流为 C0C_0 充电:v=1C0∫Ipsin⁡ωt dtv = \frac{1}{C_0}\int I_p \sin \omega t \, dt。

    v=−Ipcos⁡(ωt)C0ωv = - \frac{I_p \cos{\left(\omega t \right)}}{C_0 \omega}
  2. 其幅值。

    Vp=IpωC0V_p = \frac{I_p}{\omega C_0}

    ✓ 复现的公式 piezo.Vp(pytest 用 sympy 验证两者相等)

  3. 并接在元件两端的电阻 RR 与 C0C_0 分流:其电压幅值为 Ip∣R∥1/(jωC0)∣I_p |R \parallel 1/(j\omega C_0)|,电阻吸收的功率为该幅值平方的一半除以 RR。

    P=RIp22(1+C02R2ω2)P = \frac{R I_p^{2}}{2 \left(1 + C_0^{2} R^{2} \omega^{2}\right)}
  4. dP/dR=0dP/dR = 0。

    R=1ωC0R = \frac{1}{\omega C_0}

    ✓ 复现的公式 piezo.R_opt(pytest 用 sympy 验证两者相等)

  5. 将其代入。

    P=Ip24ωC0P = \frac{I_p^{2}}{4 \omega C_0}

    ✓ 复现的公式 piezo.P_R(pytest 用 sympy 验证两者相等)

  6. 源在每个半周期内,即位移的两个极值之间,输送 2Ip/ω2 I_p/\omega 的电荷。

    q=2Ipωq = \frac{2 I_p}{\omega}
  7. 经全波整流桥接到 VDCV_\mathrm{DC} 时,元件电压须从 −VDC-V_\mathrm{DC} 摆到 VDCV_\mathrm{DC},整流桥才导通,这需要 2C0VDC2 C_0 V_\mathrm{DC} 的电荷;其余电荷流入 VDCV_\mathrm{DC}。

    E1/2=VDC(−2C0VDC+2Ipω)E_{1/2} = V_\mathrm{DC} \left(- 2 C_0 V_\mathrm{DC} + \frac{2 I_p}{\omega}\right)
  8. 折算到单位时间:每 π/ω\pi/\omega 一个这样的半周期。

    P=2IpVDCπ−2C0ωVDC2π=2VDC(Ip−ωC0VDC)πP = \frac{2 I_p V_\mathrm{DC}}{\pi} - \frac{2 C_0 \omega V_\mathrm{DC}^{2}}{\pi} = \frac{2 V_\mathrm{DC} \left(I_p - \omega C_0 V_\mathrm{DC}\right)}{\pi}

    ✓ 复现的公式 piezo.P_std(pytest 用 sympy 验证两者相等)

  9. dP/dVDC=0dP/dV_\mathrm{DC} = 0:开路电压幅值的一半。

    VDC=Ip2C0ωV_\mathrm{DC} = \frac{I_p}{2 C_0 \omega}
  10. 将其代入。

    Pstd,max=Ip22πωC0P_\mathrm{std,max} = \frac{I_p^{2}}{2 \pi \omega C_0}

    ✓ 复现的公式 piezo.P_std_max(pytest 用 sympy 验证两者相等)

  11. SECE 在两个极值之间使元件开路,因此其电压从零升到 2Ip/(ωC0)2 I_p/(\omega C_0);在极值处取走全部 12C0v2\tfrac12 C_0 v^2,与负载无关。

    E1/2=2Ip2C0ω2E_{1/2} = \frac{2 I_p^{2}}{C_0 \omega^{2}}
  12. 折算到单位时间。

    P=2Ip2πωC0P = \frac{2 I_p^{2}}{\pi \omega C_0}

    ✓ 复现的公式 piezo.P_sece(pytest 用 sympy 验证两者相等)

  13. 并联 SSHI 在每个极值处将元件电压从 ∓VDC\mp V_\mathrm{DC} 翻转到 ±γVDC\pm\gamma V_\mathrm{DC},因此摆向另一侧电源轨只需 (1−γ)C0VDC(1 - \gamma) C_0 V_\mathrm{DC} 的电荷。

    E1/2=VDC(−C0VDC(1−γ)+2Ipω)E_{1/2} = V_\mathrm{DC} \left(- C_0 V_\mathrm{DC} \left(1 - \gamma\right) + \frac{2 I_p}{\omega}\right)
  14. 折算到单位时间。

    P=2IpVDCπ−C0ωVDC2π+C0γωVDC2π=2VDC(Ip−ωC0VDC(1−γ)2)πP = \frac{2 I_p V_\mathrm{DC}}{\pi} - \frac{C_0 \omega V_\mathrm{DC}^{2}}{\pi} + \frac{C_0 \gamma \omega V_\mathrm{DC}^{2}}{\pi} = \frac{2 V_\mathrm{DC} \left(I_p - \frac{\omega C_0 V_\mathrm{DC} \left(1 - \gamma\right)}{2}\right)}{\pi}

    ✓ 复现的公式 piezo.P_sshi(pytest 用 sympy 验证两者相等)

  15. dP/dVDC=0dP/dV_\mathrm{DC} = 0。

    VDC=IpC0ω(1−γ)V_\mathrm{DC} = \frac{I_p}{C_0 \omega \left(1 - \gamma\right)}
  16. 将其代入。

    PSSHI,max=Ip2πωC0(1−γ)P_\mathrm{SSHI,max} = \frac{I_p^{2}}{\pi \omega C_0 \left(1 - \gamma\right)}

    ✓ 复现的公式 piezo.P_sshi_max(pytest 用 sympy 验证两者相等)

推导脚本:python/pe_core/derive/piezo.py

电流输出型高侧监控器将分流电阻两端的小电压转换为电流,再由输出电阻将该电流转换回以地为参考的电压。

  1. 分流电阻两端的欧姆定律:这一电压既是信号,也是分流电阻从被测电路中占去的电压。

    VSENSE=ISENSERSENSEV_\mathrm{SENSE} = I_\mathrm{SENSE} R_\mathrm{SENSE}

    ✓ 复现的公式 sense.burden(pytest 用 sympy 验证两者相等)

  2. 理想放大器迫使 RINR_\mathrm{IN} 两端出现相同的电压,因此流过 RINR_\mathrm{IN} 的电流为 VSENSE/RINV_\mathrm{SENSE}/R_\mathrm{IN}。

    IOUT=VSENSERINI_\mathrm{OUT} = \frac{V_\mathrm{SENSE}}{R_\mathrm{IN}}
  3. 该电流经 ROUTR_\mathrm{OUT} 流出:VOUT=IOUTROUTV_\mathrm{OUT} = I_\mathrm{OUT} R_\mathrm{OUT}。

    VOUT=ISENSERSENSEROUTRINV_\mathrm{OUT} = \frac{I_\mathrm{SENSE} R_\mathrm{SENSE} R_\mathrm{OUT}}{R_\mathrm{IN}}

    ✓ 复现的公式 sense.current_out_monitor(pytest 用 sympy 验证两者相等)

  4. 电压输出型放大器将检测电压乘以固定增益 GG,再加上 REF 引脚上的电压,该电压决定电流为零时的输出。

    VOUT=GISENSERSENSE+VREFV_\mathrm{OUT} = G I_\mathrm{SENSE} R_\mathrm{SENSE} + V_\mathrm{REF}

    ✓ 复现的公式 sense.voltage_out_monitor(pytest 用 sympy 验证两者相等)

  5. 输入失调电压直接叠加在检测电压上,因此两种放大器的输出所读出的电流均为

    Imeas=VOS+ISENSERSENSERSENSEI_\mathrm{meas} = \frac{V_\mathrm{OS} + I_\mathrm{SENSE} R_\mathrm{SENSE}}{R_\mathrm{SENSE}}
  6. 无论电流多大,读数都比实际电流大出失调电压除以检测电阻的值。

    IOS,eq=VOSRSENSEI_\mathrm{OS,eq} = \frac{V_\mathrm{OS}}{R_\mathrm{SENSE}}

    ✓ 复现的公式 sense.offset_current(pytest 用 sympy 验证两者相等)

  7. 没有开尔文连接时,检测连接点位于焊盘和焊点之外,其电阻 RpadR_\mathrm{pad} 流过同一电流;按 RSENSER_\mathrm{SENSE} 换算的读数为

    Imeas=ISENSE(RSENSE+Rpad)RSENSEI_\mathrm{meas} = \frac{I_\mathrm{SENSE} \left(R_\mathrm{SENSE} + R_\mathrm{pad}\right)}{R_\mathrm{SENSE}}
  8. 其相对误差:与电流无关,分流电阻越小,误差越大。

    εpad=RpadRSENSE\varepsilon_\mathrm{pad} = \frac{R_\mathrm{pad}}{R_\mathrm{SENSE}}

    ✓ 复现的公式 sense.pad_error(pytest 用 sympy 验证两者相等)

  9. 两者同时存在时,放大器检测到 ISENSE(RSENSE+Rpad)+VOSI_\mathrm{SENSE} (R_\mathrm{SENSE} + R_\mathrm{pad}) + V_\mathrm{OS},并将其读作流过 RSENSER_\mathrm{SENSE} 的电流。输出等于输出方程在该电流下的值;使输出升高的失调符号给出输出上限,另一符号给出下限。

    Imeas=VOS+ISENSE(RSENSE+Rpad)RSENSE=ISENSE(RSENSE+Rpad)RSENSE+VOSRSENSEI_\mathrm{meas} = \frac{V_\mathrm{OS} + I_\mathrm{SENSE} \left(R_\mathrm{SENSE} + R_\mathrm{pad}\right)}{R_\mathrm{SENSE}} = \frac{I_\mathrm{SENSE} \left(R_\mathrm{SENSE} + R_\mathrm{pad}\right)}{R_\mathrm{SENSE}} + \frac{V_\mathrm{OS}}{R_\mathrm{SENSE}}

    ✓ 复现的公式 sense.reading(pytest 用 sympy 验证两者相等)

  10. 其相对误差为两者之和,无交叉项:失调所占部分按 1/ISENSE1/I_\mathrm{SENSE} 减小,焊盘所占部分不变。

    εI=VOS+ISENSERpadISENSERSENSE=VOSISENSERSENSE+RpadRSENSE\varepsilon_I = \frac{V_\mathrm{OS} + I_\mathrm{SENSE} R_\mathrm{pad}}{I_\mathrm{SENSE} R_\mathrm{SENSE}} = \frac{V_\mathrm{OS}}{I_\mathrm{SENSE} R_\mathrm{SENSE}} + \frac{R_\mathrm{pad}}{R_\mathrm{SENSE}}

    ✓ 复现的公式 sense.rel_error(pytest 用 sympy 验证两者相等)

  11. 电流输出型放大器在节点 A 将其电流 IOUTI_\mathrm{OUT} 注入 ROUTR_\mathrm{OUT}。其后接 R-C 滤波器:RfR_f 接在节点 A 与节点 B 之间,CfC_f 接在节点 B 与地之间,节点 B 上无其他负载。节点 A 的电流平衡(拉普拉斯域):

    IOUT=VA−VBRf+VAROUTI_\mathrm{OUT} = \frac{V_A - V_B}{R_f} + \frac{V_A}{R_\mathrm{OUT}}
  12. 以及节点 B:

    VA−VBRf=VBsCf\frac{V_A - V_B}{R_f} = V_B s C_f
  13. 解出电容电压,得到单个极点;直流时输出仍为 IOUTROUTI_\mathrm{OUT} R_\mathrm{OUT}:

    VBIOUT=ROUT1+sCfROUT+sCfRf\frac{V_B}{I_\mathrm{OUT}} = \frac{R_\mathrm{OUT}}{1 + s C_f R_\mathrm{OUT} + s C_f R_f}
  14. 该极点的时间常数为 Cf(ROUT+Rf)C_f (R_\mathrm{OUT} + R_f):从电容看进去是 ROUTR_\mathrm{OUT} 与 RfR_f 串联。ROUTR_\mathrm{OUT} 是其所接电流源的戴维南电阻。

    Rfilt=ROUT+RfR_\mathrm{filt} = R_\mathrm{OUT} + R_f

    ✓ 复现的公式 sense.filter_R(pytest 用 sympy 验证两者相等)

推导脚本:python/pe_core/derive/sensing.py

实验台:边沿、栅极驱动、上升时间、浪涌电流、发热与电池端子

Section titled “实验台:边沿、栅极驱动、上升时间、浪涌电流、发热与电池端子”

由电感和电容的伏安关系、一阶电路的阶跃响应、栅极电阻上的欧姆定律、串联热路以及 Rint 电池模型得到的结果,以实验台上使用的形式给出。

  1. 电感两端的电压与其电流的变化率成正比:

    v=Lloopddti(t)v = L_\mathrm{loop} \frac{d}{d t} i{\left(t \right)}
  2. 变化量为 ΔI\Delta I、在边沿 tedget_\mathrm{edge} 内线性变化的电流,其变化率恒定:

    ddti(t)=ΔItedge\frac{d}{d t} i{\left(t \right)} = \frac{\Delta I}{t_\mathrm{edge}}
  3. 因此在整个边沿期间,回路电感上产生的电压为

    Vspike=LloopΔItedgeV_\mathrm{spike} = \frac{L_\mathrm{loop} \Delta I}{t_\mathrm{edge}}

    ✓ 复现的公式 layout.v_spike(pytest 用 sympy 验证两者相等)

  4. 关断边沿之后,回路电感与开关节点电容构成串联 L-C 并产生振铃,其频率为

    fring=12πCnodeLloopf_\mathrm{ring} = \frac{1}{2 \pi \sqrt{C_\mathrm{node}} \sqrt{L_\mathrm{loop}}}
  5. 因此由振铃频率可得回路电感:

    Lloop=14π2fring2CnodeL_\mathrm{loop} = \frac{1}{4 \pi^{2} f_\mathrm{ring}^{2} C_\mathrm{node}}

    ✓ 复现的公式 layout.L_ring(pytest 用 sympy 验证两者相等)

  6. 漏极电压跳变期间,栅极保持在平台电压 VplV_\mathrm{pl}。驱动器将其输出切换到 VGSV_\mathrm{GS}(开通)或 0(关断),与栅极之间隔着栅极回路电阻 RGR_G,因此根据欧姆定律,此期间栅极电流恒定:

  7. 开通时

    IG=VGS−VplRGI_G = \frac{V_\mathrm{GS} - V_\mathrm{pl}}{R_G}

    ✓ 复现的公式 gate.I_on(pytest 用 sympy 验证两者相等)

  8. 以及关断时

    IG=VplRGI_G = \frac{V_\mathrm{pl}}{R_G}

    ✓ 复现的公式 gate.I_off(pytest 用 sympy 验证两者相等)

  9. 恒定电流以恒定速率输送电荷:

    q=IGtq = I_G t
  10. 因此平台期(栅极在此期间吸收栅漏电荷 QGDQ_\mathrm{GD})的持续时间为

    tpl=QGDIGt_\mathrm{pl} = \frac{Q_\mathrm{GD}}{I_G}

    ✓ 复现的公式 gate.t_pl(pytest 用 sympy 验证两者相等)

  11. 电容的电荷等于电容量乘以电压,因此提供电荷 QbootQ_\mathrm{boot} 会使其电压降低

    ΔVboot=QbootCboot\Delta V_\mathrm{boot} = \frac{Q_\mathrm{boot}}{C_\mathrm{boot}}
  12. 要使电压跌落不超过 ΔVboot\Delta V_\mathrm{boot},电容至少应为

    Cboot=QbootΔVbootC_\mathrm{boot} = \frac{Q_\mathrm{boot}}{\Delta V_\mathrm{boot}}

    ✓ 复现的公式 boot.C(pytest 用 sympy 验证两者相等)

  13. 单极点系统对单位阶跃的响应为

    y=1−e−tτy = 1 - e^{- \frac{t}{\tau}}
  14. 它到达终值的 10 % 和 90 % 的时刻为

    (t10=τln⁡(109), t90=τln⁡(10))\left( t_{10} = \tau \ln{\left(\frac{10}{9} \right)}, \ t_{90} = \tau \ln{\left(10 \right)}\right)
  15. 因此其 10-90 % 上升时间为

    trise=2τln⁡(3)t_\mathrm{rise} = 2 \tau \ln{\left(3 \right)}
  16. 其 -3 dB 带宽为同一极点的转折频率:

    fBW=12πτf_\mathrm{BW} = \frac{1}{2 \pi \tau}
  17. 消去 τ\tau:

    trise=ln⁡(3)πfBW=ln⁡(9)2πfBWt_\mathrm{rise} = \frac{\ln{\left(3 \right)}}{\pi f_\mathrm{BW}} = \frac{\ln{\left(9 \right)}}{2 \pi f_\mathrm{BW}}

    ✓ 复现的公式 probe.t_rise(pytest 用 sympy 验证两者相等)

  18. 探头尖端与接地线构成的回路电感和探头输入电容组成串联 L-C;无损耗时其电流 ii 满足

    Lgndd2dt2i(t)+i(t)Cprobe=0L_\mathrm{gnd} \frac{d^{2}}{d t^{2}} i{\left(t \right)} + \frac{i{\left(t \right)}}{C_\mathrm{probe}} = 0
  19. 其解的振铃角频率为

    ω0=1CprobeLgnd\omega_0 = \frac{1}{\sqrt{C_\mathrm{probe}} \sqrt{L_\mathrm{gnd}}}
  20. 即频率为

    fprobe=12πLgndCprobef_\mathrm{probe} = \frac{1}{2 \pi \sqrt{L_\mathrm{gnd} C_\mathrm{probe}}}

    ✓ 复现的公式 probe.f_ring(pytest 用 sympy 验证两者相等)

  21. 未充电的电容经串联电阻接入阶跃电压 VgV_g,其充电电流为

    i=Vge−tCinRserRseri = \frac{V_g e^{- \frac{t}{C_\mathrm{in} R_\mathrm{ser}}}}{R_\mathrm{ser}}
  22. 该电流在阶跃瞬间最大,此时电容两端电压为零:

    Iinrush=VgRserI_\mathrm{inrush} = \frac{V_g}{R_\mathrm{ser}}

    ✓ 复现的公式 inrush.I_pk(pytest 用 sympy 验证两者相等)

  23. 其平方在整个脉冲上的积分为

    I2t=Vg2Cin2RserI^2 t = \frac{V_g^{2} C_\mathrm{in}}{2 R_\mathrm{ser}}

    ✓ 复现的公式 inrush.I2t(pytest 用 sympy 验证两者相等)

  24. 电容电流等于电容量乘以其电压的变化率:

    i=Cinddtv(t)i = C_\mathrm{in} \frac{d}{d t} v{\left(t \right)}
  25. 因此电压从零线性上升到 VgV_g、历时 trampt_\mathrm{ramp} 时,电流恒定:

    Iramp=CinVgtrampI_\mathrm{ramp} = \frac{C_\mathrm{in} V_g}{t_\mathrm{ramp}}

    ✓ 复现的公式 inrush.I_ramp(pytest 用 sympy 验证两者相等)

  26. 热阻是热流路径中某一段上每瓦流经功率对应的温差。器件的全部功率依次从结流到外壳、从外壳流到散热器、再从散热器流到环境时,

    (TJ−TC=PDθJC, TC−TS=PDθCS, TS−TA=PDθSA)\left( T_J - T_C = P_D \theta_\mathrm{JC}, \ T_C - T_S = P_D \theta_\mathrm{CS}, \ T_S - T_A = P_D \theta_\mathrm{SA}\right)
  27. 各段温升从环境温度起逐级相加:

    TJ=TA+PD(θJC+θCS+θSA)T_J = T_A + P_D \left(\theta_\mathrm{JC} + \theta_\mathrm{CS} + \theta_\mathrm{SA}\right)

    ✓ 复现的公式 therm.Tj(pytest 用 sympy 验证两者相等)

  28. Rint 模型为开路电压串联内阻;充电电流经内阻流入正极端子(`bat.rint`):

    Ib=V−VbRbI_b = \frac{V - V_b}{R_b}
  29. 因此端电压为

    V=Vb+IbRbV = V_b + I_b R_b

    ✓ 复现的公式 bat.v_term(pytest 用 sympy 验证两者相等)

推导脚本:python/pe_core/derive/bench.py

仿真:逐个时间步长(time step)计算电路,以及稳定所需的时间

Section titled “仿真:逐个时间步长(time step)计算电路,以及稳定所需的时间”

仿真器按时间步长逐步计算电路的状态。在一个时间步长内,开关变换器是电源恒定的线性电路;一阶电路的例子表明,这样的电路可以逐步精确计算。常用的积分方法在一个衰减模态上比较,即试验方程(test equation),每种方法在每一步都将偏差乘以一个固定因子。随后由输出滤波器振铃的包络得出:从零初始状态开始的仿真需要多少个开关周期,其最后几个周期才能呈现稳态。

  1. 在一个时间步长内,电路是线性的,电源恒定。于是经电阻充电的电容趋近电压 v∞v_\infty,其速率等于剩余差值除以时间常数 τ\tau:

    ddtv(t)=v∞−v(t)τ\frac{d}{d t} v{\left(t \right)} = \frac{v_\infty - v{\left(t \right)}}{\tau}
  2. 以该步起点的电压 v0v_0 为初值求解:

    v(t)=v∞+(v0−v∞)e−tτv{\left(t \right)} = v_\infty + \left(v_0 - v_\infty\right) e^{- \frac{t}{\tau}}
  3. 在该步终点,t=Δtt = \Delta t。此处未作任何近似,因此步长可以与整个区间一样长:

    v1=v∞+(v0−v∞)e−Δtτv_1 = v_\infty + \left(v_0 - v_\infty\right) e^{- \frac{\Delta t}{\tau}}

    ✓ 复现的公式 sim.exact_step(pytest 用 sympy 验证两者相等)

  4. 单独取一个衰减模态来比较常用方法:即电路偏离其趋向值的偏差 xx,其变化率为 −x/τ-x/\tau(试验方程)。某种方法将其从 x0x_0 计算到 x1x_1,历经 Δt\Delta t,则每一步都将其乘以因子 g=x1/x0g = x_1/x_0:

    ddtx(t)=−x(t)τ\frac{d}{d t} x{\left(t \right)} = - \frac{x{\left(t \right)}}{\tau}
  5. 前向欧拉法(forward Euler)取该步起点的斜率:

    x1=x0−x0Δtτx_1 = x_0 - \frac{x_0 \Delta t}{\tau}
  6. 其每步的因子:

    gFE=1−Δtτg_\mathrm{FE} = 1 - \frac{\Delta t}{\tau}

    ✓ 复现的公式 num.gain_fe(pytest 用 sympy 验证两者相等)

  7. 梯形法(trapezoidal rule)取该步两端斜率的平均值,因此 x1x_1 出现在等式两边:

    x1=x0+Δt(−x0τ−x1τ)2x_1 = x_0 + \frac{\Delta t \left(- \frac{x_0}{\tau} - \frac{x_1}{\tau}\right)}{2}
  8. 解出 x1x_1,再除以 x0x_0:

    gTR=−Δt−2τΔt+2τ=1−Δt2τ1+Δt2τg_\mathrm{TR} = - \frac{\Delta t - 2 \tau}{\Delta t + 2 \tau} = \frac{1 - \frac{\Delta t}{2 \tau}}{1 + \frac{\Delta t}{2 \tau}}

    ✓ 复现的公式 num.gain_tr(pytest 用 sympy 验证两者相等)

  9. 后向欧拉法(backward Euler)取该步终点的斜率:

    x1=x0−x1Δtτx_1 = x_0 - \frac{x_1 \Delta t}{\tau}
  10. 其每步的因子:

    gBE=τΔt+τ=11+Δtτg_\mathrm{BE} = \frac{\tau}{\Delta t + \tau} = \frac{1}{1 + \frac{\Delta t}{\tau}}

    ✓ 复现的公式 num.gain_be(pytest 用 sympy 验证两者相等)

  11. 步长远大于 τ\tau 时,即对于刚性(stiff)模态,精确因子 e−Δt/τe^{-\Delta t/\tau} 接近零。前向欧拉法的因子无限增大;梯形法的因子趋于 −1-1,因此该模态大小不变而每步变号;后向欧拉法的因子则与精确因子一样趋于零:

    (lim⁡Δt→∞(−Δt−2τΔt+2τ)=−1, lim⁡Δt→∞(τΔt+τ)=0)\left( \lim_{\Delta t \to \infty}\left(- \frac{\Delta t - 2 \tau}{\Delta t + 2 \tau}\right) = -1, \ \lim_{\Delta t \to \infty}\left(\frac{\tau}{\Delta t + \tau}\right) = 0\right)
  12. 后向欧拉法用该步终点的斜率计算电感电流,即电感两端电压 vL,1v_{L,1} 除以电感:

    i1=i0+vL,1ΔtLi_1 = i_0 + \frac{v_{L,1} \Delta t}{L}
  13. 二极管关断之前,其电流已越过零点,到达 −Ios-I_\mathrm{os}。若没有其他支路承接该电流,下一步结束时电流必须为零:

    0=−Ios+vL,1ΔtL0 = - I_\mathrm{os} + \frac{v_{L,1} \Delta t}{L}
  14. 解出该步中电感两端的电压:

    vjump=LIosΔtv_\mathrm{jump} = \frac{L I_\mathrm{os}}{\Delta t}

    ✓ 复现的公式 sim.step_jump(pytest 用 sympy 验证两者相等)

  15. 取一个由理想元件构成的降压变换器。电源置零时(电压源视为短路),滤波器的电感、电容与负载电阻并联。该并联 RLC 电路的固有响应按 este^{st} 变化,ss 为其特征方程的根:

    1CL+sCR+s2=0\frac{1}{C L} + \frac{s}{C R} + s^{2} = 0
  16. 滤波器振铃时,两根为一对共轭复数。它们的公共实部即两根之和的一半,为 −α-\alpha;α\alpha 是振铃包络的衰减率,即奈培频率(neper frequency):

    α=12CR\alpha = \frac{1}{2 C R}
  17. 包络按 e−αte^{-\alpha t} 衰减,时间常数为 1/α1/\alpha,与电感无关(理想元件):

    τenv=2RC\tau_\mathrm{env} = 2 R C

    ✓ 复现的公式 filter.tau_env(pytest 用 sympy 验证两者相等)

  18. 从零初始状态开始的仿真,初始误差与稳态值本身一样大。经过 NN 个开关周期后,误差衰减为初始值的 εr\varepsilon_r 倍:

    εr=e−NTsτenv\varepsilon_r = e^{- \frac{N T_s}{\tau_\mathrm{env}}}
  19. 解出 NN:

    Nset=−τenvln⁡(εr)Ts=τenvln⁡(1εr)TsN_\mathrm{set} = - \frac{\tau_\mathrm{env} \ln{\left(\varepsilon_r \right)}}{T_s} = \frac{\tau_\mathrm{env} \ln{\left(\frac{1}{\varepsilon_r} \right)}}{T_s}

    ✓ 复现的公式 sim.periods_settle(pytest 用 sympy 验证两者相等)

推导脚本:python/pe_core/derive/numerics.py

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