Boost 电路仿真

理想臣服实践,勤恳铸就巅峰。

别问我为啥不用简单的 Z 变换,答曰忘了怎么算了。。。。。

使用 LTspice 进行 boost 开环仿真,没什么好说的。原理和操作都过于简单,并不值得写博客。

这篇博客用来记述一些理论和实践的偏差。

使用理想器件搭建电路,发现输出电压曲线如下

基本上就是 1V 的电压,很奇怪。

测量 SW 节点,发现 NMOS 根本不开管。随机选择一个器件模型。仿真正常。

电路建模

模态建模

模态一

当 MOS 关断时,电路的微分方程为

{uin=LdiLdt+uoutiL=Cuoutdt+uoutRload\begin{cases} u_{in} = L\frac{di_L}{dt} + u_{out} \\ i_L = C\frac{u_{out}}{dt} + \frac{u_{out}}{R_{load}} \end{cases}

整理得

{diLdt=1Luin1Luoutduoutdt=1CiL1CuoutRload\begin{cases} \frac{di_L}{dt} = \frac{1}{L}u_{in} - \frac{1}{L}u_{out}\\ \frac{du_{out}}{dt} = \frac{1}{C}i_L - \frac{1}{C}\frac{u_{out}}{R_{load}} \end{cases}

模态二

当 MOS 导通时,电路的微分方程为

{diLdt=1Luinduoutdt=1CuoutRload\begin{cases} \frac{di_L}{dt} = \frac{1}{L}u_{in} \\ \frac{du_{out}}{dt} = - \frac{1}{C}\frac{u_{out}}{R_{load}} \end{cases}

统一形式

引入开关函数 q(t)q(t)

q(t)={1 ,tTon0 ,tToffq(t) = \begin{cases} 1\ ,\quad t\in T_{on}\\ 0\ ,\quad t\in T_{off} \end{cases}

故不同模态可表示为

{diLdt=1L[uin(1q(t))uout)]duoutdt=1C[1Ruout+(1q(t))iL]\begin{cases} \frac{di_L}{dt} = \frac{1}{L}[u_{in}-(1-q(t))u_{out})]\\ \frac{du_{out}}{dt} = \frac{1}{C}[-\frac{1}{R}u_{out}+(1-q(t))i_L] \end{cases}

在数学上我们不喜欢不可导函数,它会使得很多手段失效。但很倒霉的是开关函数 q(t)q(t) 就是一个不可导函数。

平均模型

由伏秒平衡我们可以得到输入输出得传递关系 G=f(D)G=f(D) ,显然 D(0,1]D\in (0,1] 。如果将这个关系应用到控制系统中,我们潜意识中会认为 D=g(t)D=g(t) ,而且会希望 G=f(g(t))G=f(g(t)) 是一阶连续可导的。

但这个条件并不成立。PWM 控制天然具有离散性质,对于任意一个周期内的占空比总是"恒定的"。对于理想化的连续可导函数 G=f(g(t))=Δd(t)G=f(g(t))\overset{\Delta}{=}d(t) 在实际上转换为输出量时必然会被离散化为 G=f(g[n])=Δd[n]G=f(g[n])\overset{\Delta}{=}d[n] ,在这个过程中也必然会引入误差。只有周期 T 足够小时,这个误差才可以被近似忽略。

对统一形式的数学模型求平均,得

{diLdt=1L[uin(1d(t))uout)]duoutdt=1C[1Ruout+(1d(t))iL]\begin{cases} \frac{di_L}{dt} = \frac{1}{L}[u_{in}-(1-d(t))u_{out})]\\ \frac{du_{out}}{dt} = \frac{1}{C}[-\frac{1}{R}u_{out}+(1-d(t))i_L] \end{cases}

注意,q(t)q(t) 不是初等函数,不光滑不可导。但是平均后的占空比函数 d(t)d(t) 是连续可导的。

小信号模型

电路在稳态时,其电学量可以被视为稳态 XX 加一个微小量 Δx\Delta x ,即 x=X+Δxx=X+Δx

易知,对于其直流成分对时间的偏导应为 0 ,即

{dILdt=1L[Uin(1D)Uout)]=0dUoutdt=1C[1RUout+(1D)IL]=0\begin{cases} \frac{dI_L}{dt} = \frac{1}{L}[U_{in}-(1-D)U_{out})]=0 \\ \frac{dU_{out}}{dt} = \frac{1}{C}[-\frac{1}{R}U_{out}+(1-D)I_L]=0 \end{cases}

剩余的扰动信号为

{dΔiLdt=1L[UoutΔd(1D)Δuout]dΔuoutdt=1C[1RΔuoutILΔd+(1D)ΔiL]\begin{cases} \frac{dΔi_L}{dt} = \frac{1}{L}[U_{out}Δd-(1-D)Δu_{out}]\\ \frac{dΔu_{out}}{dt} = \frac{1}{C}[-\frac{1}{R}Δu_{out}-I_LΔd+(1-D)Δi_L] \end{cases}

输入侧电压一般认为是恒定值,不存在小信号扰动,即 Δuin=0Δu_{in}=0

电流环整定

输入量占空比 D,被控量电感电流 iLi_L 。由上述模型变形得到

Δuout=(1D)ΔiLILΔdCs+1RΔu_{out}=\frac{(1-D)Δi_L-I_LΔd}{Cs+\frac{1}{R}}

带入,化简。给出传递函数:

ΔiLΔd=UoutCs+UoutR+IL(1D)LCs2+LRs+(1D)2\frac{Δi_L}{Δd}=\frac{U_{out}Cs+\frac{U_{out}}{R}+I_L(1-D)}{LCs^2+\frac{L}{R}s+(1-D)^2}

易知 IL=Uout(1D)RI_L=\frac{U_{out}}{(1-D)R} ,带入后有

ΔiLΔd=UoutCs+2UoutRLCs2+LRs+(1D)2=ΔGi\frac{Δi_L}{Δd}=\frac{U_{out}Cs+\frac{2U_{out}}{R}}{LCs^2+\frac{L}{R}s+(1-D)^2}\overset{\Delta}{=}G_{i}

选择 PI 控制器,其传递函数为

Gctrl=kps+kisG_{ctrl}=\frac{k_ps+k_i}{s}

嗯哼

出太阳了,要困死了,先就这样吧。