参考视频: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.点击运行,查看波形,可以看到更快时间进行了调节。

Logo

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

更多推荐