很多同学在学 Boost 电路时都会经历一个“公式全会、仿真全废”的阶段:书上写着“输出电压等于输入电压除以 1 减占空比”,听起来特别简单;一旦自己在 Matlab 里搭模型,结果要么输出电压上不去,要么波形都在剧烈震荡,要么仿真直接报错。这不是你不够认真,而是 Boost 电路本质上是一个强非线性、强耦合的开关系统,教材里默认“不存在”的电感寄生电阻、开关管压降、二极管反向恢复,在仿真里都会变成真实可见的问题。
用 Matlab 做 Boost 电路仿真,最大价值并不是省一块开发板,而是让你在焊板子之前,先把电感电流、输出电压纹波、开关管电压应力这些问题“看见”。你可以随意修改占空比、开关频率、电感电容参数,观察它们对波形的影响。这种“参数随便改、波形马上看”的体验,在实物调试中需要反复更换器件,往往要花掉大半天时间。
这篇文章会从 Boost 电路工作原理讲起,然后给出两种 Matlab 仿真方式:第一种是用 m 脚本从状态方程开始仿真,适合理解 Boost 电路的数学模型;第二种是用 Simulink / Simscape Electrical 搭建功率电路模型,适合做“看元件波形”的演示。最后我会把仿真中常见的坑集中分析,比如仿真不收敛、代数环、占空比过大、二极管 RC 吸收电路参数怎么选。
1. 为什么选择 Matlab 做 Boost 电路仿真
做电力电子仿真,工具有很多,比如 PSIM、LTspice、Multisim,都可以用来仿真 Boost。但 Matlab/Simulink 有一个其他工具很难替代的优势:它把“电路仿真”和“控制算法设计”放在同一个环境里。你可以先搭一个开环 Boost 电路,看到波形,然后再加一个 PI 控制器,甚至把整个控制环路、状态观测器都放在同一个模型里验证。
这对于学习和工程项目都很有价值。用 PSIM 模拟功率器件很专业,但在进行控制器设计、状态空间分析、参数辨识时,Matlab 的脚本和工具箱明显更方便。反过来,如果用 Simulink 只搭理想化模型,又会忽略很多电力电子细节。所以我建议初学者掌握两条路线:
- 用 m 脚本写 Boost 的状态方程,做“数学仿真”,用于理解工作原理。
- 用 Simulink 搭建电气元件级模型,做“电路仿真”,用于观察接近真实的电压电流波形。
这两种方式并不冲突。先写脚本,你才知道 Boost 电路为什么是这个输出;再搭 Simulink,你才会看到真实开关过程带来的纹波和尖峰。
这篇文章主要面向三类读者:
- 刚学电力电子,正在做 Boost 电路课程设计的学生。
- 需要将 Boost 电路用于电源设计,但还没建立仿真习惯的工程师。
- 想用 Matlab 做毕业设计或项目预研,需要快速搭建可验证模型的人。
2. Boost 电路原理与核心公式
2.1 Boost 电路的组成
Boost 电路又叫升压斩波电路,基本结构很简单:一个直流电源、一个电感、一个开关管、一个二极管、一个输出电容、一个负载电阻。
输入电源串联电感后,经过开关管到地。电感与开关管的连接点再接二极管,二极管再接到输出电容和负载。注意极性:二极管的阴极接输出高压端,阳极接电感与开关管的连接点。输出电容和负载并联在二极管阴极与地之间。
这个拓扑的特点是:输出电压高于输入电压,但输出电流低于输入电流。能量守恒是理解 Boost 电路的第一把钥匙。
2.2 两种工作状态
Boost 电路在一个开关周期内主要存在两种状态:
状态一:开关管导通。
此时二极管阳极电压接近地电位,低于阴极电压,二极管反偏截止。电源直接给电感充磁,电感电流线性上升,电感储存能量。负载电流由输出电容提供,所以电容处于放电状态。
状态二:开关管关断。
电感电流不能突变,电流被迫继续流动,二极管导通。电感储存的能量与电源一起向负载和输出电容供电。此时电感电流线性下降,输出电压得以升高。
在两个状态的不断切换中,只要开关频率足够高,电感电流就会保持连续,输出电压就能稳定在期望值。
2.3 电压增益公式
在电感电流连续模式(CCM)下,稳态时电感在一个周期内的伏秒积必须平衡:
开关管导通期间,电感两端电压约为输入电压 Vin;开关管关断期间,电感两端电压约为输出电压 Vout 减去输入电压 Vin。于是有:
Vin × D × T = (Vout - Vin) × (1 - D) × T
整理得到:
Vout = Vin / (1 - D)
这就是 Boost 电路最核心的公式。D 是占空比,范围是 0 到 1。
从这个公式可以看出,D 越接近 1,理论上输出电压越高。但实际中 D 不可能等于 1,也不应该等于 1,原因后面会讲。
如果考虑二极管压降 Vd 和开关管导通压降 Vsw,公式会更复杂一些:
Vout = (Vin - Vsw × D) / (1 - D) - Vd(近似表达式)
在仿真中,如果使用的 MOSFET 模型带有导通电阻,输出电压会比理想公式略低,这属于正常现象。
2.4 电流连续与断续模式
Boost 电路最常见的两种工作模式是 CCM 和 DCM。
CCM:电感电流在一个周期内始终大于零。 DCM:电感电流在开关管关断结束前已经降到零,然后有一段电流为零的时间。
临界电感的计算公式为:
Lc = (1 - D)^2 × D × R / (2 × fsw)
当 L 小于 Lc 时,电路进入 DCM 模式。DCM 模式下,电压增益不再只取决于占空比,还会受到占空比、负载和开关频率的共同影响。
很多初学者在仿真中会遇到“输出电压比公式偏高”的现象,很可能就是电路进入了 DCM。解决方法是增大电感,或者增大负载电流。
2.5 电感电流纹波与输出电压纹波
电感电流纹波近似为:
ΔiL = (Vin × D) / (L × fsw)
输出电压纹波近似为:
ΔvC = (Iout × D) / (C × fsw)
这两个公式非常有用。在设计仿真参数时,你可以根据允许的纹波反推电感和电容的最小值。
2.6 最大占空比的限制
理论上 D 越接近 1,输出电压越高;但实际中不能无限升高,原因主要有三个:
控制电路通常有最大占空比限制。很多 PWM 芯片最大占空比在 85% 到 95% 之间,不会达到 100%。
当 D 接近 1 时,开关管导通时间极短,电感电流纹波降到很小,但输入电流会非常大。效率、器件应力都会急剧恶化。
随着 D 增大,电感和开关管的寄生电阻会产生明显压降,电压增益不再按 1/(1-D) 增长,甚至可能出现“占空比继续增大,输出电压反而下降”的情况。
在仿真中,我建议 D 设置在 0.1 到 0.8 之间。这样既可以看到明显的升压效果,也能避免仿真模型在极端占空比下难以收敛。
3. Matlab 仿真环境准备
3.1 需要安装的工具箱
Matlab 本身只是一套计算环境,做 Boost 电路仿真还需要相关工具箱。最核心的是 Simulink,以及用于电气系统建模的 Simscape Electrical。
在旧版本中,电力电子模块库叫 SimPowerSystems,后来整合到 Simscape Electrical 中。新版本打开模块库浏览器,搜索 “DC Voltage Source”“MOSFET”“Diode”“Powergui” 都能找到。如果搜索不到,说明没有安装 Simscape Electrical 工具箱,需要登录 MathWorks 账号,在附加功能中补充安装。
m 脚本部分只需要基础 Matlab 就能运行,不依赖额外的电气工具箱。
3.2 版本要求建议
不同版本的 Matlab 界面存在差异,但基本操作逻辑是一样的。本文示例使用通用写法,不限定具体版本。只要你的 Matlab 是 R2016a 之后的版本,并且安装了 Simulink 和 Simscape Electrical,就能复现。
另外要注意:如果你的电脑性能一般,建议把仿真时间设置短一些,例如 0.005 秒。电力电子仿真在每个开关周期都会进行大量计算,仿真时间过长会明显拖慢速度。
3.3 工作目录设置
新建一个项目文件夹,例如boost_sim,在 Matlab 命令行窗口中执行:
cd('C:\Users\你的用户名\boost_sim')将 m 脚本和 Simulink 模型都放在这个目录下,方便统一管理。这一步看起来简单,但很多新手把 m 脚本和模型文件放在不同目录,导致变量加载不到模型里,白白浪费排查时间。
4. 方法一:m 脚本仿真 Boost 电路
4.1 为什么推荐先写 m 脚本
Simulink 模型虽然直观,但刚接触时容易“只看连接,不懂原理”。m 脚本可以强制你从状态方程出发,把每个变量怎么写、每个状态怎么更新都想清楚。
Boost 电路的状态变量有两个:电感电流 iL 和电容电压 vC。
开关管导通时:
diL/dt = Vin / L dvC/dt = -vC / (R × C)
开关管关断时:
diL/dt = (Vin - vC) / L dvC/dt = (iL - vC / R) / C
只要有了这两个状态方程,就可以用数值积分的方法,在一个时间步长 dt 内近似推进电路状态。下面给出一个完整的 m 脚本。
4.2 参数设计脚本
仿真之前,先用脚本计算元件参数。这里以一个典型的 12V 输入、占空比 0.5、开关频率 50kHz、输出功率约 30W 的 Boost 电路为例:
% boost_design.m % 根据输入电压、占空比和输出功率估算L/C参数 clear; clc; Vin = 12; % 输入电压 V D = 0.5; % 占空比 fsw = 50e3; % 开关频率 Hz Vout = Vin / (1 - D); % 理论输出电压 V Pout = 30; % 期望输出功率 W R = Vout^2 / Pout; % 负载电阻 Ohm Iout = Vout / R; % 输出电流 A Iin = Pout / Vin; % 输入平均电流 A % 电感电流纹波设计为平均电流的30% Delta_iL = 0.3 * Iin; Lmin = Vin * D / (fsw * Delta_iL); % 输出电压纹波设计为输出电压的1% Delta_vC = 0.01 * Vout; Cmin = Iout * D / (fsw * Delta_vC); fprintf('理论输出电压: %.2f V\n', Vout); fprintf('负载电阻: %.2f Ohm\n', R); fprintf('输入平均电流: %.2f A\n', Iin); fprintf('输出电流: %.2f A\n', Iout); fprintf('最小电感: %.2f uH\n', Lmin * 1e6); fprintf('最小电容: %.2f uF\n', Cmin * 1e6);运行后会得到:理论输出 24V,负载电阻 19.2Ω,输入平均电流 2.5A,最小电感约 160uH,最小电容约 62.5uF。实际仿真中需要留出余量,电感取 220uH 到 330uH,电容取 100uF 到 470uF 都可以。
4.3 完整仿真脚本
下面这个脚本用离散时间步进的方法,模拟 Boost 电路从启动到稳态的过程:
% boost_sim.m % Boost电路时域仿真(离散时间步进) % 输入电压12V,占空比0.5,开关频率50kHz % 电感100uH,电容470uF,负载20Ohm % 注意:这是一个简化模型,用于理解电路工作原理 clear; clc; close all; % 参数定义 Vin = 12; D = 0.5; fsw = 50e3; Tsw = 1 / fsw; L = 100e-6; C = 470e-6; R = 20; % 仿真参数 dt = 1e-7; % 时间步长 0.1us t_end = 5e-3; % 仿真时长 5ms time = 0:dt:t_end; N = length(time); % 状态变量初始化 iL = 0; % 电感电流初值 vC = 12; % 电容电压初值 % 保存历史数据 iL_hist = zeros(1, N); vC_hist = zeros(1, N); % 主循环 for k = 1:N t = time(k); % 判断当前开关状态 if mod(t, Tsw) < D * Tsw switch_on = 1; else switch_on = 0; end % 根据开关状态计算状态导数 if switch_on diL = Vin / L; dvC = -vC / (R * C); else diL = (Vin - vC) / L; dvC = (iL - vC / R) / C; end % 前向欧拉积分 iL = iL + diL * dt; vC = vC + dvC * dt; iL_hist(k) = iL; vC_hist(k) = vC; end % 绘图 figure; subplot(2,1,1); plot(time, vC_hist, 'b-', 'LineWidth', 1.2); grid on; xlabel('时间 (s)'); ylabel('输出电压 vC (V)'); title('Boost电路输出电压波形'); yline(Vin / (1 - D), 'r--', '理论值'); subplot(2,1,2); plot(time, iL_hist, 'r-', 'LineWidth', 1.2); grid on; xlabel('时间 (s)'); ylabel('电感电流 iL (A)'); title('Boost电路电感电流波形');4.4 脚本运行结果分析
运行脚本后,电压波形会从 12V 开始上升,经过大约 2ms 的过渡过程后稳定在 24V 附近。电感电流会从 0 开始增加,最终平均值大约在 2.4A 左右。
需要注意:这个脚本用的是前向欧拉积分,时间步长必须足够小,否则结果会出现明显误差。这里是 100ns,开关周期 20us,一个周期内分 200 步,精度足够。
如果你把电感改小,比如改成 50uH,会发现电感电流纹波变大,输出电压纹波也可能变大。如果电感继续减小到临界值以下,输出波形会进入 DCM,输出电压可能会高于 24V 的理论值。这正是理解 Boost 电路特性的好机会。
5. 方法二:Simulink / Simscape Electrical 仿真
m 脚本适合理解模型,但要做一个“看起来像实际电路”的仿真,还是建议使用 Simulink 的电气元件库。Simulink 模型里可以真实出现电感、电容、MOSFET、二极管等元件,还可以用示波器直接观察电流和电压波形。
5.1 新建模型并放置元件
在 Matlab 命令行中输入simulink,新建空模型,保存为boost_demo.slx。
在模块库浏览器中搜索并添加以下模块:
| 模块 | 库路径(搜索关键词) | 用途 |
|---|---|---|
| DC Voltage Source | Electrical Sources | 输入直流电源 |
| Series RLC Branch | Elements | 用三个分支分别做电感、电容、电阻,或者使用独立 R/L/C 模块 |
| MOSFET | Power Electronics | 开关管 |
| Diode | Power Electronics | 整流二极管 |
| Pulse Generator | Simulink Sources | 产生PWM驱动信号 |
| Voltage Measurement | Measurements | 测量输出电压 |
| Current Measurement | Measurements | 测量电感电流 |
| Scope | Simulink Sinks | 显示波形 |
| Powergui | Powergui | 电力电子仿真必需的图形界面模块 |
注意:只要使用 Simscape Electrical 中的功率电子模块,模型中必须放置 Powergui 模块,否则仿真会直接报错。Powergui 可以放在模型任意位置,不需要连线。
5.2 模型连线
连线逻辑如下:
- 直流电压源正极连接电感。
- 电感另一端连接 MOSFET 漏极(或集电极)和二极管的阳极。
- MOSFET 源极(或发射极)接地。
- 二极管阴极连接输出电容正极和负载电阻上端。
- 电容和负载电阻并联,下端接地。
- Pulse Generator 输出连接到 MOSFET 的门极。
- Voltage Measurement 并联在电容两端,输出接 Scope。
- Current Measurement 串联在电感支路中,输出接 Scope。
如果你使用的是不同版本的模块,连线方式可能有细微差别,但拓扑关系不会变。
5.3 模块参数设置
双击各个模块,设置参数。
DC Voltage Source:Amplitude 设为 12。
Series RLC Branch:如果做电感,则 Branch type 选 L,L 设为 100e-6;做电容时,分支类型选 C,C 设为 470e-6;做负载电阻时,分支类型选 R,R 设为 20。
MOSFET:在 Simscape Electrical 的 MOSFET 模块中,一般要设置导通电阻 Ron。建议设为一个较小的值,比如 0.01Ω,同时注意设置有内建二极管选项。这样可以仿真得更接近实际。
Diode:二极管需要设置导通电阻和正向压降。如果只做入门演示,使用默认参数即可;如果希望更准确,把导通电阻设为 0.01Ω,正向压降设为 0.8V 或 1V。
Pulse Generator:这是最关键的设置。Pulse type 选 Time based,Period 填1/fsw,其中 fsw 是开关频率 50kHz,所以 Period 是2e-5。Pulse width 填占空比百分比,即50。Phase delay 填0。
这里有一个容易踩的坑:Pulse Generator 的 Pulse width 默认单位是“占空比百分比”,不是绝对时间。如果你填 0.5,那就只有 0.5% 的占空比,输出会接近 12V 而不是 24V。
5.4 求解器设置
在 Simulink 菜单栏中找到 Model Settings,进入 Solver 选项:
- Solver 选择变步长(Variable-step)。
- Solver 建议选 ode23tb 或 ode15s,这类算法适合电力电子这种刚性系统。
- Max step size 建议设置为
1e-6或更小。如果不设置最大步长,默认求解器可能会跳过部分开关瞬态,导致波形失真。 - Stop time 设置为
0.005秒。
设置完成后点击运行,Matlab 会首先进行电路初始化,然后开始仿真。如果模型正确,Scope 中会画出一条从 12V 上升到 24V 的输出电压曲线,以及带有纹波的电感电流曲线。
5.5 Simulink 模型初始化脚本
如果不想在多个对话框里手动填参数,可以在模型前添加一个初始化脚本,用变量统一控制参数。这样可以避免不同模块参数不一致的问题。
% boost_sim_init.m % Simulink模型初始化脚本 % 需要在模型回调或运行前手动执行 Vin = 12; % 输入电压 V D = 0.5; % 占空比 fsw = 50e3; % 开关频率 Hz L = 100e-6; % 电感 H C = 470e-6; % 电容 F R = 20; % 负载电阻 Ohm PWM_Period = 1 / fsw; PWM_DutyPercent = D * 100; PWM_PhaseDelay = 0; fprintf('Boost电路参数初始化完成\n'); fprintf('输出电压理论值: %.2f V\n', Vin / (1 - D)); fprintf('PWM周期: %.2f us\n', PWM_Period * 1e6);在 Simulink 模块参数里,就可以直接填写Vin、D、L、C这些变量。以后想改参数,只需要修改脚本,不必进入每个模块的对话框。
5.6 用 Simulink 做闭环控制的思路
开环仿真跑通后,很多读者会想加入闭环控制。最常见的是电压闭环:用 Voltage Measurement 测量输出电压,与参考电压求差,经过 PI 控制器得到占空比,再送给 PWM 发生器。
在 Simulink 中的实现逻辑是:
- 添加一个 Step 模块作为参考电压阶跃。
- 添加一个 Subtract 模块计算误差。
- 添加一个 Discrete PID Controller 模块,参数根据开关频率整定。
- 将 PI 输出限幅到 0.1 到 0.8 之间,防止占空比过高。
- 将限幅后的占空比送给 PWM 发生器,占空比以百分比形式传给 Pulse Generator。
这个过程中需要特别注意离散控制器的采样周期。一般设置为开关周期,也就是 20us。如果采样周期和模型步长不一致,控制效果会出现偏差。
6. 运行结果与效果验证
6.1 判断仿真是否成功
仿真运行结束后,先看输出电压波形。若输入 12V、占空比 0.5,稳态输出电压应该在 24V 附近。允许有一定误差,因为开关管压降、二极管压降和寄生电阻都会导致输出电压略低。
再看电感电流波形。正常 CCM 模式下,电感电流应该是一个三角波,平均值大约在 2.4A 左右,波形连续且稳定。如果电感电流出现长时间为零,说明电路进入了 DCM,需要增大电感或减小占空比。
6.2 测量输出电压纹波
在 Simulink 中,可以使用 Mean 模块直接测量输出电压的平均值。添加方式:
- Simulink → Math Operations → Mean。
- 连接输出电压信号,设置采样周期。
- 显示结果应该接近 24V。
也可以添加一个“MinMax”模块,测量输出电压的最大值和最小值,两者之差就是输出电压纹波。理论上该值可以用公式Iout * D / (C * fsw)估算,仿真结果会和公式计算值比较接近。
6.3 观察开关管电压应力
在 MOSFET 两端并联一个 Voltage Measurement,连接到 Scope,可以看到开关管关断时承受的电压约等于输出电压 24V。这是一个很重要的安全指标。如果实际电路损耗较大,开关管关断瞬间可能出现尖峰,甚至高于输出电压。这时就需要考虑增加 RC 吸收电路。
6.4 和理论公式对比
把不同占空比下的仿真输出电压记录成表格,与理论值Vin/(1-D)对比:
| 占空比 D | 理论输出电压 (V) | 仿真输出电压参考值 (V) | 说明 |
|---|---|---|---|
| 0.3 | 17.1 | 接近16.8 | 考虑器件压降,略低 |
| 0.5 | 24.0 | 接近23.5 | 合理误差 |
| 0.7 | 40.0 | 接近38.5 | 误差随D增大而增加 |
| 0.9 | 120.0 | 仿真可能异常 | 占空比过大,模型容易出问题 |
这里的仿真电压只是参考,实际结果取决于器件参数设置。但如果你的仿真结果和理论值差得太多,首先检查是否为 DCM 模式,其次检查是否设置了不合理的压降。
常见公式与仿真误差的来源主要有三个:寄生电阻、二极管正向压降、开关管导通压降。这三个因素都会造成输出电压低于理想公式计算值。
7. Boost 电路仿真常见问题与排查思路
| 问题现象 | 可能原因 | 排查方式 | 解决方案 |
|---|---|---|---|
| 输出电压不升压,接近输入电压 | Pulse Generator 占空比设置错误,把百分比当成小数 | 查看 PWM 波形 | 将 Pulse width 填为 D*100,例如 50 |
| 仿真报错:找不到 Powergui | 模型中缺少 Powergui 模块 | 检查模型库中是否放置 Powergui | 从 Simscape Electrical 中拖入 Powergui |
| 仿真速度很慢 | 求解器步长过小,仿真时间过长 | 查看仿真进度和波形刷新 | 将 stop time 缩短,Max step size 设为 1e-6 |
| 输出电压震荡,波形不稳定 | LC 参数不合理,或求解器无法捕捉开关动作 | 检查电流电压波形,看是否在开关瞬间震荡 | 增大电感、电容,或改为 ode23tb 求解器 |
| 输出电压高于理论值 | 电路进入 DCM 模式 | 观察电感电流是否下降为零 | 增大电感或增大输出电流,使其回到 CCM |
| MOSFET 关断时电压尖峰很大 | 没有 RC 吸收电路,寄生电感引起过压 | 观察开关管两端电压波形 | 在开关管或二极管两端并联 RC 吸收电路 |
| 仿真结果与 m 脚本结果不一致 | Simulink 中包含器件压降和寄生参数 | 对比模型参数和脚本参数 | 确认 MOSFET、二极管的导通电阻和压降设置 |
| 闭环仿真中占空比不受控 | PI 输出超限或采样周期不对 | 查看 PI 输出波形 | 增加 Saturation 限幅,将 PI 采样时间设为 1/fsw |
7.1 关于二极管 RC 吸收电路
很多人在实际仿真时发现,二极管两端会存在高频振荡。这是因为实际二极管存在结电容,关断瞬间会产生反向恢复电流,与电路寄生电感发生谐振。解决方式是在二极管两端并联一个 RC 串联支路,也就是常说的 RC 吸收电路。
在仿真中,可以直接在二极管模块内部设置缓冲参数。Simscape Electrical 的 Diode 模块通常带有 Snubber resistance Rs 和 Snubber capacitance Cs 参数。默认情况下 Rs 可能是一个很大的值,相当于没有吸收作用。你可以将 Rs 设为 10 到 47 欧姆,Cs 设为 1nF 到 4.7nF,然后观察电压尖峰是否降低。
需要提醒的是,RC 吸收电路会带来额外的功率损耗,参数越大损耗越明显。在实际工程中,RC 值需要通过示波器观察振铃频率来调试,而不是越大越好。
7.2 关于代数环
Simulink 模型中如果出现“Algebraic loop”警告,通常是因为你在闭环控制中把电流信号直接参与 PWM 计算,而 PWM 又反过来影响电流。解决方法是添加一个小延迟,比如 Unit Delay 模块,或者使用离散 PI 控制器,将控制路径变成离散采样。
在开环 Boost 仿真中一般不会遇到代数环。如果你在闭环控制中遇到,记得优先使用离散控制器。
8. 最佳实践与工程建议
8.1 设计参数的顺序
不要直接照搬公式算出来的电感电容值,建议按以下顺序设计:
- 确定输入电压、输出电压、开关频率。
- 根据允许的电压纹波确定最小电容。
- 根据允许的电感电流纹波确定最小电感。
- 根据功率等级选 MOSFET、二极管电流定额。
- 先做开环仿真,再逐步加入寄生参数和吸收电路。
- 开环跑通后,再做闭环控制。
这样做的好处是每一步都有明确验证点,出现问题时容易定位。
8.2 仿真模型的层级管理
工程上不建议把整个 Boost 电路放在一个模型里,然后大量接线。更推荐分层建模:
- 顶层做控制逻辑。
- 中间层做功率电路封装。
- 底层放元件模型。
在 Simulink 中可以使用 Subsystem 模块封装 Boost 主电路,把 Vin、PWM、负载作为输入,把输出电压、电流作为输出。这样后续做闭环控制时,控制部分和主电路部分边界清晰。
8.3 从开环到闭环的路径
开环 Boost 仿真只适合验证主电路逻辑。工程上真正使用 Boost 时,几乎没有不闭环的情况。最常见的是电压闭环,通过调节占空比来稳定输出电压。
闭环仿真建议按以下步骤过渡:
- 先测量输出电压。
- 计算误差。
- 用 PI 控制器输出占空比。
- 限制占空比在 0.1 到 0.8 之间。
- 在 DCM 模式下,会加入电流内环,形成电压电流双闭环。
8.4 交错并联 Boost 电路
如果单个 Boost 电路功率太小、电流纹波太大,可以考虑交错并联方案。交错并联 Boost 由两个 Boost 单元并联组成,两个开关管的 PWM 信号相位相差 180 度。这样可以在总输出功率不变的情况下,减小输入电流纹波和输出电压纹波,同时还能提高功率等级。
在 Matlab 中搭建交错并联电路并不复杂:复制一个 Boost 模型,两个 Pulse Generator 的 Phase delay 分别设为 0 和 1/(2×fsw) 秒,两个输出并联到同一个电容和负载上。从仿真波形中可以看到,总输入电流的纹波频率翻倍,幅值明显减小。
不过交错并联也会带来均流问题,工程上还需要添加均流控制,这就是更深入的研究方向了。
8.5 关于参数选择的常见误区
第一个误区是:电感越大越好。电感大确实能减小电流纹波,但会降低动态响应速度,也会增大体积和成本。仿真中如果电感取太大,输出电压达到稳态的时间会拉长。
第二个误区是:电容越大越好。电容大能减小电压纹波,但启动瞬间的冲击电流也会增大。仿真中电容过大,可能连续运行几个周期才能看到明显升压效果。
第三个误区是:占空比设得很高,希望得到很高输出电压。前面已经讨论过,实际电路并不支持占空比无限接近 1。仿真中占空比超过 0.9 时,很多模型会不再收敛,或者出现异常波形,这不是仿真软件的问题,而是真实电路本来就会面临这样的设计限制。
9. 总结与后续学习方向
Boost 电路仿真的重点,不是把公式背熟,而是能够解释“为什么实际波形和理想公式有差异”。通过 m 脚本,你可以从状态方程出发,理解电感电流和电容电压如何随时间变化;通过 Simulink 模型,你可以直观观察开关过程、器件压降和吸收电路对波形的影响。
建议你按下面的顺序练习:
- 先运行参数计算脚本,算出一组合理的 L、C 值。
- 运行 m 脚本仿真,观察输出电压从启动到稳态的过程。
- 搭一个 Simulink 开环 Boost 模型,验证与 m 脚本结果一致。
- 修改占空比,观察输出电压变化,注意 DCM 现象。
- 在二极管或 MOSFET 两端加入 RC 吸收电路,观察电压尖峰变化。
- 再尝试加入电压闭环 PI 控制,让输出稳定在给定值。
沿着这条路继续深入,你会逐步接触电流连续模式下的建模、状态空间平均法、小信号分析、环路补偿设计,以及交错并联、同步整流等更高级的 Boost 衍生拓扑。Matlab/Simulink 在这条学习链上,会从一个“画波形工具”逐渐变成你真正理解和验证电力电子设计的核心平台。