基于MATLAB/Simulink的Boost电路电压单闭环PI控制设计与仿真
在电力电子和开关电源的设计与仿真中,Boost电路因其能够将输入电压升高而得到广泛应用。然而,一个稳定的输出电压是许多应用场景(如新能源发电、电动汽车、LED驱动等)的基本要求。直接使用固定占空比(D)的PWM驱动Boost电路,其输出电压会因输入电压波动或负载变化而偏离设定值,导致系统性能不稳定。本文将深入探讨如何利用MATLAB/Simulink平台,设计并实现一个针对Boost电路的电压单闭环控制系统。与常见的双闭环(电压外环+电流内环)控制相比,单闭环控制结构更简单,易于理解和实现,非常适合用于理解闭环控制的基本原理和验证控制器设计。我们将从Boost电路的基本原理出发,逐步完成建模、控制器设计、仿真验证及结果分析的全过程。
1. Boost电路与电压单闭环控制核心概念
1.1 Boost电路工作原理
Boost电路,又称升压斩波电路,是一种DC-DC变换器。其核心功能是将一个较低的直流输入电压(Vin)转换成一个较高的直流输出电压(Vo)。电路的基本拓扑结构通常包括一个开关管(如MOSFET或IGBT)、一个储能电感(L)、一个续流二极管(D)和一个输出滤波电容(C)。
其升压原理基于电感的储能和释能。当开关管导通(ON)时,输入电源对电感充电,电感电流线性上升,电能以磁场能的形式储存在电感中,此时二极管反向截止,负载由电容供电。当开关管关断(OFF)时,电感为了维持电流不变,会产生一个感应电动势,其极性与输入电源串联,共同向负载和电容供电,从而在输出端得到一个高于输入电压的电压。输出电压与输入电压的关系,在连续导通模式(CCM)下,由占空比D决定:Vo = Vin / (1 - D)。其中,D为开关管导通时间与开关周期的比值(0 < D < 1)。从这个公式可以看出,占空比D是控制输出电压的关键变量。
1.2 为何需要闭环控制?
根据公式Vo = Vin / (1 - D),在理想且参数恒定的情况下,只要固定D,就能得到固定的Vo。但现实情况是:
- 输入电压扰动:Vin可能来自电池或整流器,其电压会随着使用或电网波动而变化。
- 负载扰动:负载电阻的变化会导致输出电流变化,进而引起电路内部压降(如电感、开关管、二极管的导通压降)的变化,最终影响Vo。
- 参数不确定性:实际电感、电容值存在公差和温漂。
这些因素都会导致在固定占空比D下,实际输出电压Vo偏离理论值。因此,我们需要引入闭环控制。闭环控制系统通过传感器(如电压采样电路)实时测量输出电压Vo,将其与期望的参考电压Vref进行比较,得到误差信号e。控制器根据误差e的大小和变化趋势,计算出新的占空比D',并驱动开关管。这样,系统就能自动调整D,以抵消各种扰动对Vo的影响,使其稳定在Vref附近。
1.3 电压单闭环控制结构
“单闭环”指的是整个控制系统只包含一个反馈环,即电压环。其典型结构如下图所示(用文字描述):
[参考电压 Vref] ---(+)---> [控制器] ---> [PWM调制器] ---> [占空比 D] ---> [Boost功率电路] ---> [输出电压 Vo] ↑ (-) | | ↓ +--------------------------------------[电压采样与调理]-------------------------+- 比较环节:计算参考电压Vref与实际采样电压Vo_fb的误差
e = Vref - Vo_fb。 - 控制器:接收误差e,按照特定的控制算法(如PID)计算出控制量u。这是整个系统的“大脑”。
- PWM调制器:将控制器输出的连续控制量u(通常是电压信号)转换为具有相应占空比D的PWM波,用于驱动开关管。常见方法是与一个固定频率的三角载波进行比较。
- 被控对象:Boost功率电路,其输入是占空比D,输出是实际电压Vo。
- 反馈环节:通过分压电阻、运放等电路对输出电压Vo进行采样、隔离和缩放,得到与控制器输入范围匹配的反馈电压Vo_fb。
本文的目标就是在MATLAB/Simulink中搭建并调试这样一个完整的系统。
2. 仿真环境准备与建模
2.1 MATLAB/Simulink环境说明
本文的仿真工作基于MATLAB R2021a及其中的Simulink、Simscape Electrical(以前叫SimPowerSystems)工具箱完成。不同版本的MATLAB在界面和部分模块名称上可能略有差异,但核心功能一致。确保你的MATLAB已安装Simulink和Simscape Electrical工具箱,这是进行电力电子电路仿真的基础。
2.2 Boost电路开环建模
在搭建闭环系统前,我们先建立一个开环Boost电路模型,以验证电路参数设计的正确性。
步骤1:创建新模型打开Simulink,新建一个空白模型。
步骤2:从库浏览器添加元件打开库浏览器(Library Browser),在Simscape / Electrical / Specialized Power Systems / Fundamental Blocks路径下找到所需元件:
- 直流电压源 (DC Voltage Source):作为输入电源Vin。设置电压值,例如
12 V。 - MOSFET (MOSFET):作为开关管。使用默认的N沟道MOSFET模型即可。需要为其门极(G)提供PWM驱动信号。
- 二极管 (Diode):作为续流二极管。使用默认模型。
- 电感 (Series RLC Branch):将其设置为纯电感模式(Resistance=0, Capacitance=inf)。设置电感值L,例如
100e-6 H(100μH)。 - 电容 (Series RLC Branch):将其设置为纯电容模式(Resistance=0, Inductance=0)。设置电容值C,例如
220e-6 F(220μF)。 - 负载电阻 (Series RLC Branch):将其设置为纯电阻模式(Inductance=0, Capacitance=0)。设置电阻值Rload,例如
10 Ohm。 - 脉冲发生器 (Pulse Generator):用于产生开环的固定占空比PWM波。设置参数:
Amplitude: 1 (或根据MOSFET驱动电压设置,如5或15)Period: 1/fsw,其中fsw是开关频率,例如1/50000(对应50kHz)Pulse Width (% of period): 占空比D * 100,例如40(对应D=0.4)Phase delay: 0
- 电压测量 (Voltage Measurement)和电流测量 (Current Measurement):用于连接示波器观察波形。
- 示波器 (Scope):用于观察输出电压、电感电流等波形。
- 电源接地 (Ground)和电气参考 (Electrical Reference):确保电路有正确的参考点。
步骤3:连接电路按照Boost电路拓扑进行连接。一个基本的连接示例如下(文字描述):
- 直流电压源正极连接电感一端。
- 电感另一端同时连接MOSFET的漏极(D)和二极管阳极。
- MOSFET源极(S)连接电源负极(地)。
- 二极管阴极连接电容正极和负载电阻一端。
- 电容负极和负载电阻另一端连接电源负极(地)。
- 脉冲发生器输出连接MOSFET的门极(G)。
- 在负载电阻两端并联电压测量模块,其输出连接至示波器。
- 在电感支路串联电流测量模块,其输出连接至示波器。
步骤4:设置仿真参数在Simulation菜单下,打开Model Configuration Parameters。
Solver options: 对于电力电子仿真,推荐使用变步长求解器ode23tb或ode15s,它们对刚性系统处理更好。Max step size: 设置为开关周期的1/50到1/100,例如对于50kHz,周期为20μs,可设Max step size为2e-7(0.2μs) 以获得更光滑的波形。Stop time: 根据系统稳定时间设置,例如0.01(10ms)。
运行仿真,在示波器中应能看到输出电压逐渐上升并稳定在一个值。根据公式Vo = Vin / (1-D),若Vin=12V, D=0.4,则理论Vo=20V。仿真结果应接近此值(略低,因为模型包含了二极管压降等非理想因素)。这验证了我们的Boost电路模型基本正确。
3. 电压单闭环控制系统设计与实现
现在,我们将开环模型升级为闭环模型。核心是用一个自动调节的“控制器”取代固定的“脉冲发生器”。
3.1 设计控制环路
我们的控制目标是:无论输入电压或负载如何变化,输出电压Vo都能快速、准确地跟踪参考电压Vref(例如15V),并且超调小、稳态误差小。
控制器选择:对于电压单闭环,PI(比例-积分)控制器是最常用且有效的选择。比例环节(P)能快速响应误差,积分环节(I)能消除稳态误差。PID中的微分环节(D)对噪声敏感,在电压环中有时可以省略。
PI控制器传递函数:Gc(s) = Kp + Ki/s,其中Kp为比例系数,Ki为积分系数。在Simulink中,我们可以直接使用PID Controller模块,并将D参数设为0。
PWM调制:控制器输出的是一个连续的模拟量(电压信号),我们需要将其转换为占空比。通常采用比较器的方式:将控制器输出与一个高频三角波(载波)进行比较。当控制器输出大于三角波瞬时值时,输出高电平(开通);否则输出低电平(关断)。这样,控制器输出值的大小就直接决定了PWM波的占空比。在Simulink中,可以使用Repeating Sequence模块生成三角波,再使用Relational Operator模块进行比较。
3.2 搭建闭环Simulink模型
接下来,我们在开环模型的基础上进行修改和添加。
步骤1:添加反馈与比较环节
- 在输出电压测量点后,添加一个
Gain模块,模拟电压采样网络的分压比。例如,若Vo最大为20V,而我们需要反馈给控制器的信号在0-5V范围内,则增益可设为5/20 = 0.25。将其命名为Voltage Sensor Gain。 - 添加一个
Constant模块作为参考电压Vref。其值应等于期望输出电压乘以采样增益。例如,期望Vo=15V,采样增益0.25,则Vref应设为15 * 0.25 = 3.75。 - 添加一个
Sum模块(配置为+-,即正负输入),计算误差e = Vref - Vo_fb。
步骤2:添加PI控制器
- 从Simulink库的
Continuous或Discrete子库中,拖入PID Controller模块。双击打开参数设置。 - 将
Controller设置为PI。 - 初始设置
Proportional (P)和Integral (I)为较小的值,例如P=0.1,I=10。这些参数需要后续整定。 - 可以勾选
Limit output以限制控制器输出范围,例如[0, 1],这对应占空比D的范围0%~100%。这能防止积分饱和,并保护电路。
步骤3:添加PWM调制器
- 添加一个
Repeating Sequence模块生成三角载波。设置参数:Time values:[0, Ts/2, Ts],其中Ts是开关周期,例如[0, 1e-5, 2e-5](对应50kHz)。Output values:[0, 1, 0]。这将生成一个峰值为1,谷值为0,周期为Ts的三角波。
- 添加一个
Relational Operator模块,将其设置为>。 - 将PI控制器的输出连接到
Relational Operator的一个输入端口,将三角波连接到另一个输入端口。 Relational Operator的输出就是占空比可变的PWM波,将其连接到MOSFET的门极(G),取代原来的固定脉冲发生器。
步骤4:完善模型删除原来的固定脉冲发生器。确保所有连接正确。最终的模型结构应清晰地反映出第1.3节描述的单闭环控制框图。
一个简化的核心部分连接示意代码如下(仅表达逻辑,非可运行代码):
% 模型连接逻辑示意 (非可执行代码) Vref (Constant) --> (+) | +---> Error --> [PI Controller] --> Control_Signal --> [>] (Relational Operator) --> PWM --> MOSFET Gate | Vo_fb (Gain) <-- [Voltage Measurement] <-- Boost Circuit Output ^ | [Triangular Wave Generator] (Repeating Sequence)4. 控制器参数整定与仿真验证
搭建好模型只是第一步,让系统稳定且性能优良的关键在于整定PI控制器的参数(Kp和Ki)。
4.1 手动试凑法
这是一种基础方法,有助于理解参数对系统的影响。
- 先调P,后调I:先将积分系数Ki设为0,只保留比例P。从小到大逐渐增加Kp(如从0.01开始)。
- 观察响应:给系统一个阶跃指令(例如在0.005s时将Vref从10V对应值切换到15V对应值),用示波器观察输出电压Vo的响应。
- Kp太小:响应缓慢,上升时间长。
- Kp增大:响应变快,上升时间缩短。
- Kp过大:会产生振荡,甚至发散(不稳定)。
- 引入积分I:当找到一个使系统响应较快且略有超调或无超调的Kp后,保持Kp不变,逐渐增加Ki。
- Ki能消除稳态误差。观察系统稳定后,输出电压是否精确等于Vref。
- Ki太小:稳态误差消除很慢。
- Ki增大:稳态误差消除加快。
- Ki过大:会引起系统振荡,或使超调量增大,调节时间变长。
- 微调:反复微调Kp和Ki,直到获得满意的动态性能(上升时间、超调量、调节时间)和稳态精度。
4.2 基于临界比例度法(Ziegler-Nichols第二法)
这是一种更系统的方法。
- 同样,先将Ki设为0。
- 逐渐增大Kp,直到系统输出呈现等幅振荡(即临界稳定状态)。记录此时的Kp值,记为
Kcr,并测量振荡周期Tcr。 - 根据Z-N公式计算PI参数:
Kp = 0.45 * KcrKi = Kp / (0.85 * Tcr)(注意:此处的Ki是积分时间常数的倒数,需根据Simulink PID模块的积分形式调整。Simulink的I参数通常是Ki,即积分增益。公式Ti = 0.85 * Tcr, 则Ki = Kp / Ti = Kp / (0.85 * Tcr))
- 将计算得到的参数代入控制器,观察响应,并做适当微调。
示例参数与仿真: 假设经过整定,我们得到一组相对合适的参数:Kp = 0.15,Ki = 80。在Simulink中设置PID控制器参数为P=0.15, I=80, D=0,输出限幅[0, 1]。
进行以下仿真测试:
测试1:启动与稳态性能设置仿真时间0.02s,参考电压Vref对应15V输出。运行仿真,观察波形。
- 输出电压Vo:应从0V开始上升,可能略有超调,然后快速稳定在15V附近,稳态误差极小。
- 电感电流IL:应为连续的三角波(CCM模式),平均值等于输出电流(Vo/Rload)除以(1-D)。
- 占空比D(可通过观察控制器输出或PWM信号得到):在启动初期较大,以快速建立电压;稳定后,稳定在一个固定值附近(理论值
D = 1 - Vin/Vo = 1 - 12/15 = 0.2)。
测试2:抗输入扰动性能在仿真中途(如0.01s)引入一个输入电压阶跃扰动,例如将Vin从12V突降至10V。
- 期望现象:输出电压Vo会有一个向下的跌落,但控制器会迅速检测到误差(Vo < Vref),并自动增大占空比D,从而将Vo拉回至15V。观察恢复时间和超调量。
测试3:抗负载扰动性能在仿真中途(如0.015s)引入一个负载阶跃扰动,例如将负载电阻Rload从10Ω突增至20Ω(负载减轻)。
- 期望现象:输出电压Vo会有一个向上的尖峰(因为负载电流突然减小),控制器会检测到误差(Vo > Vref),并自动减小占空比D,从而将Vo拉回至15V。
通过这三项测试,可以全面评估所设计的电压单闭环控制系统的动态和稳态性能。
5. 仿真结果分析与常见问题
5.1 典型波形分析
成功仿真后,你应能在示波器中看到类似下图的波形(此处为文字描述):
- 图1:输出电压Vo波形:一条从0V开始,快速上升并稳定在15V的曲线。在0.01s和0.015s处可以看到因输入和负载扰动引起的微小波动,但系统能迅速调节恢复。
- 图2:电感电流IL波形:连续的三角波,其平均值在扰动发生时也会相应变化,以提供新的能量平衡。
- 图3:占空比D(控制器输出)波形:一条在稳态值(约0.2)上下波动的曲线,波动频率与开关频率相同(因为PWM调制),其“平均值”会随着扰动而调整。
这些波形直观地证明了闭环控制的有效性:占空比D不再固定不变,而是根据反馈误差动态调整,从而维持输出电压恒定。
5.2 常见问题与排查思路
在仿真和实际控制器设计中,你可能会遇到以下问题:
| 问题现象 | 可能原因 | 排查与解决思路 |
|---|---|---|
| 系统发散,电压或电流飞升 | 1. PI参数过大(尤其是Kp)。 2. 反馈极性接反(正反馈)。 3. 输出限幅未设置或设置不当。 | 1. 大幅减小Kp和Ki,从非常小的值重新开始整定。 2. 检查 Sum模块的符号,确保是Vref - Vo_fb。3. 为PID控制器设置合理的输出限幅,如 [0.05, 0.95],避免0%或100%占空比。 |
| 输出电压振荡剧烈 | 1. PI参数不合适,系统处于欠阻尼或临界振荡状态。 2. 开关频率过低,与控制带宽不匹配。 3. 采样或PWM更新频率存在延迟未建模。 | 1. 使用Z-N法或试凑法重新整定参数,适当减小Kp或Ki。 2. 提高开关频率(如从50kHz提高到100kHz)。 3. 在仿真中考虑数字控制的延迟(如加入一个 Transport Delay模块,延迟1-2个开关周期)。 |
| 稳态误差无法消除 | 1. 积分系数Ki太小或为0。 2. 控制器输出达到限幅值(积分饱和)。 3. 电路参数(如电感、电容)计算错误,无法在给定Vin下达到Vref。 | 1. 适当增大Ki。 2. 检查输出限幅是否合理,并检查是否因扰动过大导致持续饱和。可考虑使用抗积分饱和(Anti-Windup)策略。 3. 验证电路参数:确保在最大占空比下,理论Vo > Vref。根据 Vo = Vin/(1-Dmax)复核。 |
| 仿真速度极慢 | 1. 仿真步长设置过小。 2. 使用了不适合的求解器。 3. 电路中有刚性问题。 | 1. 适当增大Max step size,但需保证小于开关周期的1/20。2. 换用 ode23tb或ode15s求解器。3. 确保模型连接正确,无代数环。 |
| 无法进入CCM模式 | 1. 电感值L太小。 2. 负载过重(电阻太小)。 3. 开关频率过低。 | 1. 增大电感值。CCM临界条件:L > (1-D)*R*T/(2),其中T为开关周期。2. 增大负载电阻或检查电路连接。 3. 提高开关频率。 |
6. 进阶讨论与工程实践建议
6.1 从仿真到实际数字实现的考虑
我们的仿真模型是连续时间的理想模型。在实际工程中,控制器通常由单片机(MCU)或数字信号处理器(DSP)以数字方式实现。这需要考虑:
- 离散化:将连续的PI控制器
Kp + Ki/s离散化为数字控制器(如位置式或增量式PID)。常用方法有前向欧拉、后向欧拉、双线性变换(Tustin)等。 - 采样与计算延迟:MCU需要时间进行A/D采样、计算和控制量更新。这会在环路中引入至少一个采样周期的延迟,可能影响稳定性,需要在设计时预留相位裕量。
- 量化效应:A/D转换的精度、PWM寄存器的分辨率都会引入量化误差。
- 保护功能:实际硬件必须包含过压、过流、短路等保护电路和软件保护逻辑,这在仿真中往往被简化。
6.2 单闭环与双闭环的对比
本文重点介绍了电压单闭环。在要求更高的场合(如需要快速电流限制、动态响应更快),会采用电压外环+电流内环的双闭环控制。
- 单闭环:优点结构简单,设计容易,成本低。缺点是对负载变化的动态响应相对较慢,且没有直接的电流控制,过流保护依赖外部电路。
- 双闭环:电流内环能快速控制电感电流,使系统具有更好的动态性能和固有的过流保护能力。电压外环则提供精确的电压调节。设计更为复杂,需要整定两套控制器参数。
对于很多性能要求不苛刻的应用,电压单闭环已足够胜任。
6.3 参数设计与优化经验
- 电感与电容选型:电感值决定了电流纹波,电容值决定了电压纹波。根据设计指标(纹波大小)和CCM/DCM工作模式要求来计算。
ΔIL = (Vin * D) / (fsw * L),ΔVo = (Io * D) / (fsw * C)。选择低ESR的电感和电容以减小损耗。 - 开关频率选择:高频化可以减小电感、电容的体积,但会增加开关损耗。需在体积、效率和成本间折衷。常见范围几十kHz到几百kHz。
- 控制器带宽:电压环的带宽通常远低于开关频率(如1/10到1/5)。带宽越高,动态响应越快,但抗噪声能力越差,且可能受限于数字延迟。
- 仿真验证的局限性:仿真模型忽略了PCB寄生参数、器件非线性(如MOSFET导通电阻随温度变化)、驱动电路延迟等。仿真结果可作为重要参考,但硬件调试必不可少。
通过本文的详细步骤,你不仅能在MATLAB/Simulink中成功搭建并运行一个Boost电路电压单闭环控制系统,更能深刻理解闭环控制的思想、PI参数整定的方法以及从仿真到实践的工程考量。这套方法同样可以推广至Buck、Buck-Boost等其他DC-DC拓扑的控制系统设计中。建议读者在理解本文示例的基础上,尝试改变电路参数、控制器类型(如尝试PID),或增加更复杂的扰动场景,以巩固学习效果。
