Simulink仿真——Buck电路(PWM实现与闭环反馈)
参考视频:05 Buck电路(PWM实现与闭环反馈)_哔哩哔哩_bilibili
本人使用的matlab版本:Matlab 2024b
电路原理图

相关参数:Vi=50V Vo=20V L=400uH C=100uF f=20kHz R=20Ω
搭建模型
1.打开MATLAB,点击新建,选择Simulink。

2.点击空白模型。

3.点击库浏览器

4.点击启动独立的库浏览器,这样比较好操作。

5.在Simulink库浏览器中,选中Simscape->Electrical->Specialized Power Systems,找到powergui,将其拖入到模型中。


6.下面依次将用到的器件拖入到模型中。
直流电源:Simscape/Electrical/Specialized Power Systems/Sources/DC Voltage Source
二极管:Simscape/Electrical/Specialized Power Systems/Power Electronics/Diode
Mos管:Simscape/Electrical/Specialized Power Systems/Power Electronics/Mosfet
RLC负载:Simscape/Electrical/Specialized Power Systems/Passives/Series RLC Branch
(可以把它复制分别设置为电感,电容和电阻)

7.按照电路原理图连接模型。并设置器件参数。
直流电源设置为50V,一般只验证电路原理的话,mos管和二极管参数都不设置。电感设置为400微亨,电容设置为100微法,电阻设置为20欧姆。





8. 添加测量装置,测量电阻的电压,设置电阻测量修改为Branch voltage,
添加万用表模块
(Simscape/Electrical/Specialized Power Systems/Sensors and Measurements/Multimeter)
添加示波器模块(Simulink/Sinks/Scope)
双击万用表打开参数设置,选中Ub,点击Select,点击确定。


添加mos管的脉冲信号
9.添加mos管的脉冲信号,第一种方式1.添加脉冲发生器,查找Simulink/Sources/Pulse Generator,设置周期1/20k,设置占空比20/50=0.4=40%(Buck电路的占空比就是输出比输入)。

10.设置运行参数:将停止时间设置为0.1s,点击模式设置,设置一下最大步长,一般相控设置为1/1e-4即可,斩控根据开关频率确定,20k设置为0.5e-6,这样生成的曲线更加光滑。

11.点击运行,双击打开示波器,可以看到最终稳定电压波形与20V差一点(差不多在19.5V左右),原因1.mos管导通会有一个导通电阻2.实际中电容、电感都会有寄生参数,3,在续流过程中,二极管也会有一个压降。

12.添加mos管的脉冲信号,第二种方式2.用一个调制波与载波进行比较,就是PWM波。由于这里占空比是固定的,所以载波就是一个常数。
添加常数(位置:Simulink/Commonly Used Blocks/Constant)
添加调制波(位置: Simulink/Sources/Repeating Sequence)周期1/20000,幅值1
添加比较模块(位置:Simulink/Commonly Used Blocks/Sum)用做差等价,将++修改为+-。



13.得到的结果再进行逻辑比较,添加模块Simulink/Logic and Bit Operations/Compare To Zero,设置逻辑为小于。


14.调制波接一个示波器,运行可以看到锯齿波的波形。

15.也可以修改调制波参数,让它变成三角波。周期的一半达到幅值。


16.把常数改为0.4,这样占空比就是20/50,点击运行,发现波形也和第一种差不多,没有稳定到20V。


17.添加mos管的脉冲信号,第三种方式3.不用不研究具体的调制原理,可以之间用Simscape/Electrical/Specialized Power Systems/Power Electronics/Power Electronics Control下面的各种调制波形,我们这里用PWM波的PWM Generator (DC-DC)模块。它的输入是占空比,频率设置为20k,进行连线即可。


18.点击运行,波形还是一样,没有稳定到20V,还在19.5V左右。

闭环控制的实现
19.控制是给定与反馈进行比较,然后得到误差。
设置一个20的常数,然后与万用表输出的电阻电压做差。
添加一个PID调节器(位置:Simulink/Continuous/PID Controller)

20. 设置PID调节器的参数。kp的设定,本次设定是20V ,假如输出误差为1V,那kp可以设置为1/50,另外可以增加5倍的放大倍数。ki是每1s的调节,所以可以先放大100倍,微分系数先不设置。另外需要进行限幅。我们输出的是占空比,所以是对占空比限幅,由于我们不是一直导通,所以设置0.02-0.98之间。
PID控制原理可参考:PID 控制原理详解(面向储能变流器应用)-CSDN博客


如果点击确定报错,请在初始化中设置初始条件设置为外部就可以了。


21.查看无静差控制,可以通过点击运行,查看波形,可以波形最后稳定到20V。


可以在PID模块前面添加一个示波器,可以查看误差的波形。可以看到误差逐渐趋于0。

复合控制
22.我们发现结果虽然最终趋于目标值,但整个调节过程还是比较缓慢,这里采用开环+闭环的方式进行复合型的控制。大范围变化靠开环快速到位,小范围精调靠闭环稳定控制。占空比基值 = 开环计算值,最终占空比 = 开环值 + PID修正量,PID进行小范围的扰动调节。
我们把目标电压除以输入电压,当作我们的占空比。添加除操作(位置:Simulink/Math Operations/Divide),被除数加一个matlab最小的值,防止除以0报错。


23.修改PID的上下限为正负0.2,

24.点击运行,查看波形,可以看到更快时间进行了调节。


AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)