Boost电路,也就是升压斩波电路,是电力电子领域最基础也最常用的拓扑之一。它不复杂,但电感电流连续模式(CCM)、断续模式(DCM)、占空比极限、带载能力这些问题,光看公式推导很难建立直观的物理认识。用Matlab/Simulink做一次完整仿真,把驱动波形、电感电流、输出电压同时拉出来看,很多疑问比读十页教材更容易理清。
这篇文章以“boost电路的Matlab软件仿真演示与讲解”为主线,从Boost电路原理回顾开始,依次完成:仿真环境准备、开环模型搭建、闭环PI控制、参数扫描分析、常见问题排查。全程会给出可在Simulink中直接执行的操作步骤和参数配置,适合电力电子初学者、做电源设计课程作业的学生,以及想快速验证Boost控制策略的工程师。如果你只是想看结论,先记住三件事:Boost输出电压高于输入电压,核心关系是Vout = Vin /(1 - D);仿真能不能收敛,第一步看电感初始电流和处理器的求解步长;闭环控制中PI参数写不对,波形一定发散,不要先怀疑模型。
1. Boost电路原理与关键参数速览
开始搭模型之前,先把Boost电路的原理和关键参数对应关系写清楚。Boost电路又称升压斩波电路,整个拓扑只有五个核心元件:电感L、开关管Q、二极管D、滤波电容C和负载R。输入侧是直流电压源Vin,输出侧是负载电阻R。
工作时,开关管Q导通,输入电源经过电感直接短路到地,电感电流线性上升,能量以磁场形式储存在电感里。开关管Q关断时,电感电流不能突变,电流只能流过二极管D给输出电容和负载供电,此时电感两端电压反向,与输入电压叠加后输出到负载端,所以输出电压可以高于输入电压。
稳态情况下,忽略开关管和二极管的导通压降,输出与输入的关系为:
Vout = Vin /(1 - D)
其中D为占空比,即开关管导通时间占整个开关周期的比例。由公式可以看出:
- D = 0.5时,输出约等于2倍输入电压;
- D = 0.7时,输出约等于3.33倍输入电压;
- D越接近1,理论电压增益越高,但实际中受电感电阻、二极管压降、开关管导通损耗和最大占空比限制,增益曲线会明显下降;
- D = 0时,输出等于输入,电路退化为直通状态,这在开环测试中需要避免。
| 关键参数 | 说明 | 初始建议值(课程演示用) |
|---|---|---|
| Vin | 输入直流电压 | 12V |
| Vout | 目标输出电压 | 24V左右,通过D=0.5实现 |
| D | 开关管占空比 | 0.5,可调范围0.1-0.8 |
| f | 开关频率 | 50kHz |
| L | 电感值 | 100uH |
| C | 输出电容 | 220uF |
| R | 负载电阻 | 10Ω |
| 电感电流模式 | CCM / DCM判断依据 | L较大时处于CCM |
以上参数是电力电子仿真教学中常见的入门配置,实际课程设计或项目验证时,需要根据自己的输入电压、输出功率和纹波指标重新计算。若要求输出5V转12V、占空比约0.58,则电感和电容参数要按照纹波要求重新选。
2. Matlab仿真环境准备
2.1 Matla版本与工具箱
用Simulink做Boost电路仿真,建议使用Matlab R2020b及以上版本。新版本对Simscape Electrical和Power Electronics库的元件整合更完整,拖拽元件不容易出现库路径缺失问题。
需要重点确认以下工具箱已经安装:
- Simulink(基础)
- Simscape(物理建模基础库)
- Simscape Electrical(含电力电子元件库,如MOSFET、二极管、IGBT、直流电压源等)
- Control System Toolbox(做闭环PI设计和离散化时可能需要)
- Signal Processing Toolbox(做频谱分析时使用,可选)
检查方式:在Matlab命令行输入ver,查看已安装的工具箱列表,确认存在Simscape Electrical。
2.2 模型库浏览器入口
在Matlab主页点击Simulink图标,进入Simulink Start页面后选择Blank Model,新建空模型。之后点击工具栏的Library Browser打开库浏览器,按以下路径寻找元件:
- Simscape > Electrical > Specialized Power Systems > Fundamental Blocks > Electrical Sources:找到DC Voltage Source
- Simscape > Electrical > Specialized Power Systems > Fundamental Blocks > Elements:找到Series RLC Branch,用于配置电感和电容
- Simscape > Electrical > Specialized Power Systems > Fundamental Blocks > Power Electronics:找到MOSFET和Diode
- Simulink > Sources:找到Pulse Generator
- Simulink > Sinks:找到Scope
需要说明一点,有的读者使用的是更早版本,或者Matlab只装了基础的Simulink而没有装Simscape Electrical,那么上面这些电力电子库是找不到的。此时在模型的Library Browser里根本没有Specialized Power Systems这个目录。解决办法是重新运行Matlab安装程序,勾选Simscape Electrical组件。
2.3 求解器设置
Boost电路是开关电源模型,仿真中开关动作产生高频分量。要在最终结果中看到正确的输出电压波形,必须把求解器设置为可变步长离散求解器或ode23tb。
推荐配置:
- Solver:ode23tb;
- Max Step Size:1e-6秒(即1微秒);
- Stop Time:0.01秒或0.02秒;
- Simulation Mode经设置为Normal即可,不需要Accelerator加速,因为模型复杂度不高。
Max Step Size如果设置过大,例如默认的auto,开关动作很容易被跳过,输出电压波形锯齿严重且数值可能发散。这个设置在电源仿真里是常见调试点。
3. Simulink开环Boost仿真模型搭建
3.1 元件放置与电路连接
打开空白模型后,先把元件从库浏览器依次拖入画布:
- DC Voltage Source:双击修改参数,将Amplitude设置为12V;
- Series RLC Branch:把Branch Type改为L,电感值设为100e-6,作为主电感;
- MOSFET:保持默认即可,逻辑输入信号控制门极;
- Diode:保持默认,注意二极管方向,阳极接电感侧,阴极接输出侧;
- Series RLC Branch:把Branch Type改为C,电容值设为220e-6,作为输出滤波电容;
- Series RLC Branch:把Branch Type改为R,电阻值设为10,作为负载;
- Pulse Generator:设置Period为1/50000秒,Pulse Width为50%,即占空比0.5;
- Scope:需要设置为多输入示波器,准备观察电感电流、输出电压和驱动脉冲。
电路连接顺序推荐:Vin正极接电感左端,电感右端接MOSFET的漏极和二极管阳极,MOSFET源极接Vin负极,二极管阴极接输出电容正极和负载上端,负载下端和电容负极接Vin负极。
在Simscape Electrical库中,元件之间使用电气连接线直接连接,不需要额外的信号转换,这一点比手写状态方程简单得多。
3.2 电流与电压测量
为了观察电感电流和输出电压,需要从Simscape Electrical的Measurements库拖入电流测量器(Current Measurement)和电压测量器(Voltage Measurement)。
具体做法:
- 将电流测量器串联在电感和二极管连接点之间,测量结果通过信号线接入Scope;
- 将电压测量器并联在输出电容两端,也就是输出电压,测量结果同样接入Scope;
- 把Pulse Generator产生的驱动脉冲信号同时接入Scope,便于同步观察开关动作。
一个常见的错误是把电流测量器并联在电路里,这样仿真会报“无法求解”的错误。电流测量器是串联元件,电压测量器是并联元件,这一条是Simscape电路仿真最基本的规则。
3.3 开环仿真参数配置
打开Configuration Parameters(或Model Settings),检查Solver类型是否为Variable-step,求解器选择ode23tb,Max Step Size设置为1e-6。
然后回到模型窗口,先不急着点运行。将Stop Time设置为0.01秒,这是20个电源周期的时间,足够看到输出电压从0上升到稳态的过程。
点击Run。等待仿真完成,双击Scope查看波形。
判断模型是否搭对的几个标准:
- 输出电压从0V开始指数上升,最终稳定在24V附近,纹波较小;
- 电感电流波形在稳态时呈现锯齿状,这说明电路工作在CCM模式;
- 驱动脉冲占空比约为50%,频率为50kHz。
如果输出电压远高于预期,例如超过40V,大概率是占空比设置超过了理论计算值,或者模型中出现直通回路。如果输出电压一直为0,先检查二极管方向是否正确,再检查MOSFET的驱动信号是否连接到位。
3.4 PWM驱动信号的替代生成方式
Pulse Generator是最直接的信号源,但在后续闭环控制中,占空比需要由控制器实时输出,Pulse Generator就不够用了。建议在第一阶段就直接用PWM Generation模块替代它。
在Simulink > Sources中,也可以使用Repeating Sequence Staircase生成周期脉冲,但更专业的做法是使用Simulink > Simscape Electrical > Control中的PWM Generator(DC-DC)。这个模块输入为调制波,输出为脉冲信号,频率由模块内部参数确定。
使用PWM Generator的好处是后续搭建闭环电路时,只需把PI控制器的输出接到调制波输入,就可以动态改变占空比,模型结构不用大改。
4. 功能测试与效果验证
4.1 不同占空比下的输出验证
用开环模型验证公式Vout = Vin/(1-D)是否正确,是仿真实验的第一步。
分别设置Pulse Generator的Pulse Width为30%、50%、70%,重新运行仿真,记录输出电压稳态值:
| 占空比D | 理论输出 | 仿真输出(典型值,具体以实际模型为准) |
|---|---|---|
| 0.3 | 17.1V | 16.5V左右 |
| 0.5 | 24V | 23.5V左右 |
| 0.7 | 40V | 36V左右 |
实际仿真输出会略低于理论值,原因是仿真模型中考虑了二极管正向压降、MOSFET导通电阻和阻抗等寄生参数。占空比D越大,寄生参数造成的影响越明显,输出电压和理论值差距也越大。这个现象本身就是很好的教学点:理论公式是理想模型,仿真模型是接近实物的模型。
4.2 电感电流连续与断续观察
将电感值减小到原来的一半,例如50uH,保持占空比和负载不变,重新运行仿真,观察电感电流波形。
如果电感电流在开关周期内降到0A并保持一段时间,说明电路进入了DCM断续工作模式。DCM模式下,电压增益不再满足简单的1/(1-D)关系,输出会略高于CCM模式下的理论值。此时需要通过增大电感值或者提高负载功率的方式回到CCM模式。
在课程设计中,判断自己的工作点是CCM还是DCM非常关键,因为后续小信号建模时,CCM和DCM的传递函数不同,PI参数设计方法也不同。
4.3 输出纹波测量
输出电容值对纹波的影响,可以用一组对比测试来演示。
将输出电容C从220uF改为100uF,运行仿真,把输出电压波形放大到稳态段,观察纹波峰峰值。再用示波器测量或直接用Matlab的data cursor工具读取最大值和最小值,计算纹波比例。
正常情况下,电容越大,纹波越小,但电路的动态响应变慢。把电容改大后,启动时间会变长,这个现象也可以同时记录,用于后续动态响应分析。
5. 闭环PI控制与动态响应仿真
5.1 闭环模型结构
开环模型只能做固定占空比测试,不适合做负载变化或输入电压跳变实验。实际工程项目中,Boost电路需要稳压输出,必须加入闭环控制。
最简单的闭环结构如下:
- 输出电压经过电压测量器后,与参考电压相加做差,得到误差信号;
- 误差信号进入PI控制器,输出为占空比控制信号;
- 占空比信号进入PWM Generator,产生驱动脉冲;
- 驱动脉冲控制MOSFET。
这个结构在Simulink中的搭建比开环模型多两个环节:Sum求和模块、PI Controller模块。
5.2 PI参数设置
PI Controller模块在Simulink > Continuous中可以找到。双击打开,设置为离散时间或连续时间均可。为了保证仿真离散求解的稳定性,建议设置为离散PI,采样时间取1e-5秒。
初始PI参数可以先从保守取值开始:
- Kp = 1;
- Ki = 100;
- 输出限幅设置为0到0.8,防止占空比超过合理范围。
这个参数并不保证所有系统都稳定,但它是一个安全的起点。如果仿真发散,将Kp和Ki同时减小到0.1和10,重新运行。
调整PI参数的通用经验是:
- 先把Ki设为0,只保留Kp,从小往大调,观察输出电压波形是否有稳态误差;
- 出现稳定的稳态误差后,再加入Ki,从50开始逐渐增大;
- 如果输出电压出现持续振荡,说明Ki偏大,往回减。
5.3 负载突变测试
闭环模型搭建完成后,做一个负载突变实验:
在负载电阻旁边并联一个由Step模块控制的MOSFET或开关,模拟负载从10Ω跳变到5Ω的过程。也可以直接用一个Step模块生成参考电压跳变,模拟目标电压从24V跳变到30V的情况。
运行仿真,观察输出电压波形:
- 参考电压跳变后,输出电压应该在一个调节时间内恢复到新目标值;
- 调节过程中允许出现超调,但超调量应控制在10%以内;
- 如果输出波形长时间振荡不收敛,说明PI参数需要调小。
负载突变测试是验证闭环控制效果是否合格的最直接手段,课程设计文档中几乎必须包含这一步。
6. 用m脚本辅助参数扫描与批量仿真
6.1 参数扫描的价值
在Simulink中手动修改参数、反复运行仿真,效率比较低。特别是当需要研究电感值、电容值、开关频率对输出性能的影响时,建议用Matlab脚本批量运行Simulink模型,自动收集仿真结果。
6.2 m脚本扫描占空比
下面这段脚本演示的是批量修改Simulink模型中Pulse Generator占空比,仿真后自动记录输出电压稳态值。以模型文件名为boost_model.slx为例,Pulse Generator模块名为Pulse,输出电容模块名为C1。
% 批量扫描Boost电路占空比 clear; clc; model = 'boost_model'; load_system(model); duty_values = 0.2:0.05:0.7; results = zeros(length(duty_values), 2); for i = 1:length(duty_values) d = duty_values(i); % 修改Pulse Generator的Pulse Width参数 set_param([model '/Pulse'], 'PulseWidth', num2str(d*100)); % 仿真 simOut = sim(model, 'StopTime', '0.02'); % 提取输出电压信号 vout = simOut.get('Vout'); % 取稳态平均值 steady_value = mean(vout.Data(end-100:end)); results(i, 1) = d; results(i, 2) = steady_value; end % 打印结果 disp('占空比 输出电压'); disp(results); % 绘制曲线 figure; plot(results(:,1), results(:,2), 'o-'); xlabel('占空比 D'); ylabel('输出电压 V'); grid on; title('Boost电路 占空比-输出电压 曲线');运行前需要确认模型中使用的是Pulse Generator模块,而不是PWM Generator模块。如果是PWM Generator,参数修改方式不是PulseWidth,而是调制波输入端的幅值。
脚本中Vout信号需要从模型中用To Workspace模块导出。在输出电压测量器后面加一个To Workspace模块,将变量名设置为Vout,输出格式设置为Array,仿真结束后脚本即可自动读取。
6.3 批量扫描电感值
电感值扫描的思路与占空比扫描相同。以模型中的电感模块L1为例,修改其电感参数:
% 批量扫描电感值对纹波影响 ind_values = [50e-6, 80e-6, 100e-6, 150e-6, 220e-6]; ripple_results = zeros(length(ind_values), 2); for i = 1:length(ind_values) L = ind_values(i); set_param([model '/L1'], 'L', num2str(L)); simOut = sim(model, 'StopTime', '0.02'); vout = simOut.get('Vout'); % 取稳态段,计算纹波峰峰值 steady_data = vout.Data(end-500:end); ripple = max(steady_data) - min(steady_data); ripple_results(i, 1) = L; ripple_results(i, 2) = ripple; end % 绘制纹波曲线 figure; plot(ripple_results(:,1)*1e6, ripple_results(:,2), 's-'); xlabel('电感值 uH'); ylabel('输出电压纹波 V'); grid on;这段脚本的物理意义非常明确:电感值越大,电流纹波越小,输出电压纹波也越小。实际做课程设计时,把电感值、电容值、输入电压、负载电阻四组变量全部扫描一遍,绘图后整个系统分析部分基本就完整了。
7. 波形分析与性能观察方法
7.1 示波器波形查看
Simulink Scope窗口中,右键点击波形区域,选择Configuration Properties,可以调整坐标系、图例和信号名称。
建议在模型中将每个测量点的信号命名清晰:
- I_L:电感电流;
- Vout:输出电压;
- Drive_Pulse:驱动脉冲。
这样Scope中自动显示信号名称,截图放到课程设计报告里也更清晰。
7.2 启动过程观察
Boost电路的输出电压有典型的启动过程:开始阶段电感电流逐渐上升,输出电容充电,输出电压从0爬升到稳态。这个过程中如果电感电流峰值过大,有可能触发开关管过流保护。在仿真中重点关注第一个开关周期内的最大电流峰值。
把Scope波形放大到0至0.001秒区间,可以看到输出电压非线性的上升过程。如果对这个过程做快速傅里叶分析,还能分析输出电压谐波含量。
7.3 效率估算
Simulink模型中可以加入功率测量模块。在输入电压测量器和输入电流测量器之后,使用Product模块计算输入功率;在输出电压和负载电流之间同样计算输出功率。输出功率除以输入功率,就得到电路效率。
由于仿真模型中的MOSFET、二极管都有导通压降,效率一般在85%到95%之间。效率过低时,优先检查电感等效串联电阻和MOCFET导通电阻的设置值。把电阻参数设置为0,效率会明显提高,这说明损耗确实来自导通损耗。
真实Boost电路的效率还需要考虑开关损耗,但Simulink基础模型中开关损耗往往被简化,仿真结果会比实物效率略高。
8. 常见问题与排查方法
Boost电路Simulink仿真中经常出现的问题高度集中在几个固定模式上。下表整理了我在课程答疑中见到的高频问题。
| 问题现象 | 可能原因 | 排查方式 | 解决方案 |
|---|---|---|---|
| 输出电压为0 | 二极管方向接反,或驱动信号未连接 | 检查二极管阳极是否接电感侧 | 断开MOSFET驱动信号,用纯二极管整流电路验证电压通路 |
| 输出电压剧烈振荡 | 求解器最大步长过大,无法捕捉开关动作 | 查看Scope中波形是否有锯齿失真 | Max Step Size设置为1e-6 |
| 模型提示“无法求解” | 电流测量器误接为并联,或电路中存在直通回路 | 检查测量器连接方式 | 电流测量器必须串联在电流路径中 |
| 输出电压超过理论值很多 | 电路工作于DCM模式 | 观察电感电流是否降到0并保持 | 增大电感值,或增大负载电流 |
| 闭环仿真出现发散 | PI参数过大 | 将Kp和Ki减小后重新测试 | 先Kp=0.1、Ki=10测试,确认稳定后再增加 |
| 仿真速度极慢 | 最大步长过小或开关频率过高 | 查看仿真求解时间 | 适当放宽Max Step Size到2e-6,或降低开关频率 |
| 输出电压纹波异常大 | 输出电容太小或工作点DCM | 计算输出纹波与电容关系 | 增大输出电容 |
| PWM Generator输出为恒高或恒低 | 调制波输入超出比较范围 | 检查PI输出限幅范围 | 将PI输出限幅设为0-0.8或0-1 |
需要特别注意“模型提示无法求解”这类问题,它和MATLAB版本、求解器无关,绝大多数情况是电气连接错误。此时先不急着调整参数,把电路所有节点编号检查一遍,尤其注意所有元件是否有参考地。Simscape Electrical模型一般要求有接地模块。
另一个常见场景是Matlab R2022b以上版本中Simscape Electrical元件名称和旧版本有差异。例如,老版本的Diode路径可能在Simscape > Power Systems > Specialized Technology > Fundamental Blocks > Power Electronics里,新版本统一移到了Simscape > Electrical > Specialized Power Systems。找不到库时优先用Library Browser右上角搜索框搜索元件名称。
9. 最佳实践与扩展方向
9.1 模型组织规范
建议把开环模型和闭环模型分成两个独立文件保存,不要混在一个模型里用开关切换。开环模型用于教学演示和参数扫描,闭环模型用于控制策略验证,两者求解器和采样时间可能不同。
模型内部使用Subsystem将主电路和控制系统打包。主电路子系统显示电路连接,控制子系统显示PI控制器和PWM生成逻辑,报告插图也更整洁。
9.2 从仿真走向实物验证的注意事项
仿真通过后,如果要做实物Boost电路,有几个额外的点需要提前考虑。第一,MOSFET驱动器必须使用专门的栅极驱动芯片,单片机IO口直接驱动大电流MOSFET不可靠。第二,电感选型要关注饱和电流,仿真里电感的饱和特性可以忽略,但是实物电感电流超过饱和电流后电感量大幅下降,电路可能失效。第三,二极管建议选择肖特基二极管,耐压和恢复速度要匹配开关频率,仿真中理想二极管的行为和实物器件特性差异比较大。
关于boost二极管两端并联RC吸收电路,这个措施是用来抑制关断瞬间的电压振荡的。在仿真中,如果给二极管并联一个RC串联支路,振荡频率会被压低,但会增加损耗。这个知识点适合在学完基础仿真后单独做一组对比实验:不加RC吸收、加RC吸收后分别看开关管两端尖峰电压波形。
9.3 扩展方向
基础Boost仿真跑通后,可以从下面几个方向继续深入:
- 交错并联Boost电路:两个Boost电路相位错开180度并联,输入电流纹波大幅降低,适合大功率场景。
- Boost电路最大占空比运行边界:在开环模型中将占空比逐渐增大,观察输出电压增益非线性下降的转折点。
- 电流模式控制:在电压环外增加电流内环,使用峰值电流控制改善动态响应。
- 用Simulink和Simscape Battery联合仿真:把Boost电路放入电池放电系统中,做电池升压供电的完整系统仿真。
- 数字控制器实现:用C代码把PI控制器写成嵌入式代码,配合Simulink Coder生成控制工程程序。
9.4 仿真学习的几个能显著提效的习惯
建议保留一套“最小可运行模型”,只包含12V输入、电感、MOSFET、二极管、电容、电阻和Pulse Generator,总共六个核心元件。所有新增实验都在这个模型上复制修改。
参数修改前,先把当前模型另存为带版本号的文件,避免调参时把可用模型改坏。
仿真时间跨度越长,数据文件越大。批量扫描参数时,尽量缩短每个仿真算例的运行时间,只取稳态段数据,不必全程保存数据。
10. 总结
Boost电路在Matlab/Simulink中做仿真的完整链路,从开环占空比测试、电感电流模式判断,到闭环PI控制、参数扫描,本质上就是把电路原理图和传递函数变成可视化波形。整个过程对硬件依赖很低,普通笔记本加一个Matlab即可完成。最值得先验证的功能是开环模型下不同占空比的输出电压对应关系,这个实验能把Boost电路最核心的公式变成屏幕上真实的曲线。
最容易踩的坑有两个:一是求解器最大步长太大导致波形无法收敛,二是DCM模式下输出电压远高于理论值却找不到原因。前者靠Max Step Size设为1e-6解决,后者靠观察电感电流是否降到0判断。这两个问题解决后,Boost电路仿真的技术障碍基本就清除了。
下一步建议从闭环动态响应做起,然后在同一套Simulink环境中加入交错并联结构或数字控制代码生成。仿真模型搭好后,后续无论是做课程设计还是做毕业设计里的电源部分,都可以直接复用这套模板。建议把最小可运行模型保存好,后续调整参数和扩展控制策略都用得到。