共计 2160 个字符,预计需要花费 6 分钟才能阅读完成。
为什么需要状态空间平均模型
刚接触 Buck 电路设计时,直接用开关器件仿真会遇到两个头疼问题:
- 仿真速度极慢:每次开关动作都要计算,一个 10ms 的瞬态过程可能要跑半小时
- 无法直接设计控制器:开关动作产生的高频噪声会掩盖系统的低频特性
这就像用显微镜观察山脉轮廓——虽然能看到每一块石头,但反而看不清整体形状了。状态空间平均法就是帮我们找到这个 ” 宏观视角 ”。
两种平均方法的本质区别
开关周期平均法
- 只对波形取开关周期内的平均值
- 适合计算稳态工作点(比如输出电压平均值)
- 无法反映动态特性
状态空间平均法
- 对状态方程本身进行平均
- 能保留系统的动态特性
- 可推导传递函数进行稳定性分析
关键区别 :前者是结果的平均,后者是规律的平均。就像气象预报中,前者相当于记录每天平均温度,后者相当于建立温度变化的微分方程。
手把手推导过程
第一步:建立分段状态方程
Buck 电路在开关导通($0<t<DT_s$)和关断($DT_s<t<T_s$)时的状态方程分别为:
\begin{cases}
\frac{di_L}{dt} = \frac{V_{in}-v_C}{L} & \text{(导通阶段)} \\
\frac{di_L}{dt} = \frac{-v_C}{L} & \text{(关断阶段)} \\
\frac{dv_C}{dt} = \frac{i_L}{C} - \frac{v_C}{RC} & \text{(两阶段相同)}
\end{cases}
第二步:引入关键假设
- 开关频率远大于系统动态变化频率(通常要求 $f_s > 10f_c$)
- 电感电流纹波小于其直流分量(CCM 模式)
- 输出电压纹波可以忽略
第三步:加权平均处理
将两个阶段方程按占空比 $D$ 加权平均:
\frac{d}{dt}\begin{bmatrix} i_L \\ v_C \end{bmatrix} =
\begin{bmatrix}
0 & -1/L \\
1/C & -1/RC
\end{bmatrix}
\begin{bmatrix} i_L \\ v_C \end{bmatrix} +
\begin{bmatrix} D/L \\ 0 \end{bmatrix}V_{in}
第四步:小信号线性化
- 将变量表示为稳态值 + 扰动:$D = D_0 + \tilde{d}$
- 忽略二阶小量
- 得到扰动量的状态方程:
\frac{d}{dt}\begin{bmatrix} \tilde{i_L} \\ \tilde{v_C} \end{bmatrix} =
A\begin{bmatrix} \tilde{i_L} \\ \tilde{v_C} \end{bmatrix} +
B\tilde{d}, \quad
A=\begin{bmatrix} 0 & -1/L \\ 1/C & -1/RC \end{bmatrix},
B=\begin{bmatrix} V_{in}/L \\ 0 \end{bmatrix}
仿真验证实战
模型对比测试
% 参数设置
L = 20e-6; C = 100e-6; R = 5;
Vin = 24; D = 0.5; Ts = 1/100e3;
% 状态空间模型
A = [0 -1/L; 1/C -1/R/C];
B = [Vin/L; 0];
C_sys = [0 1]; % 输出为电容电压
ss_model = ss(A,B,C_sys,0);
% 与实际电路仿真对比
sim('buck_circuit_simulink');
plot(tout, Vout_actual, 'b', tout, Vout_model, 'r--');
legend('实际电路','平均模型');

频域特性分析
bode(ss_model);
hold on;
% 添加实际电路扫频数据
plot(freq, 20*log10(mag), 'o');
关键观察点:
– 低频段(<1/10 fs)模型精度高
– 谐振频率点 $f_0 = \frac{1}{2\pi\sqrt{LC}}$
– 右半平面零点位置(影响相位裕度)
工程实践中的坑
占空比扰动幅度
- 一般取 $\Delta D < 0.1$(大信号会激发非线性)
- 验证方法:比较不同扰动幅度下的谐波失真度
高频失效原因
当接近开关频率时:
1. 纹波不可忽略
2. 假设条件被破坏
3. 需要引入采样保持效应修正
参数补偿技巧
- 电感量补偿:$L_{eff} = L(1 + \frac{D(1-D)}{6}\frac{T_s^2}{LC})$
- 电容 ESR 的影响:在状态方程中添加串联电阻项
方法扩展应用
对于 Boost 电路需要特别注意:
1. 输出电压出现在电感电流方程中
2. 会产生右半平面零点
3. 状态方程变为:
\frac{d}{dt}\begin{bmatrix} i_L \\ v_C \end{bmatrix} =
\begin{bmatrix}
0 & -(1-D)/L \\
(1-D)/C & -1/RC
\end{bmatrix}
\begin{bmatrix} i_L \\ v_C \end{bmatrix} +
\begin{bmatrix} 1/L \\ 0 \end{bmatrix}V_{in}
写在最后
第一次推导状态空间模型时,我被各种矩阵运算绕得头晕。直到在示波器上看到仿真波形和实际测量重合的那一刻,突然理解了数学建模的意义——它不是纸上游戏,而是连接理论与实践的桥梁。建议新手一定要亲手做一遍仿真对比,这种直观感受比任何理论讲解都深刻。
下次可以试试在模型中添加输入电压扰动项,你会看到为什么 Buck 电路对输入变化有天然抑制作用。这也是汽车电子喜欢用 Buck 给 MCU 供电的原因之一。
正文完
