基于前面的基础,我们已经能够搭建Simulink上位机、编码器测速、IIR滤波。这个利用PID控制直流电机实验,我们能否把这些功能都结合起来,形成一个综合性比较强的实验呢;
下面我们给本实验提一点设计需求:
- 利用上位机控制电机正反转;
- 利用上位机观测到电机的转速、转向,通过滤波算法提高测速的精度;
- 利用上位机调整PID三个参数,使能达到更好的控制效果;
- 利用上位机实时调整目标值,观测调整效果;
我们先来看一下如何控制直流电机正反转

直流电机控制正反转只需要切换控制端的两个电平高低,那么上述模型就根据上位机的信号切换电平高低
我们再来看一下PID控制器模型

积分模型和微分模型都要选取离散型的,根据速度误差经过PID后控制PWM的占空比实现调速的效果
对于MCU跟Simulink之间的通讯我们采用串口通讯方式
对于测速模型跟数据滤波模型前面已经讲过了,在这就不要继续重复了
为了显示模型运行正常,我们加一个闪烁灯,以表示程序运行正常
下图是PID控制直流电机的整个模型

下图是PID控制直流电机的Simulink上位机

到此,设计阶段所提的需求基本已经解决了,下面我们实际去检测一下它的效果;
在目标速度为300的情况下,P值为1、I值为、D值为0的情况下进行直流电机的速度调节,我们可以看到速度非常快就由0接近目标速度300

在更改目标速度的情况下,目标速度由300改成400,响应速度是非常快的

目标速度由400改成300,我们可以观测波形,响应速度是非常快了的,但是波形震荡还是挺大的,我们把这种波形更加平滑,这就要求我们修改PID的参数了;

把参数更改成3以后,我们可以看到出现了一些超调的现象,

我们再把P值再增大到5,出现的超调现象会更加严重了;

我们把P值改成1,I值改成2,我们可以看到波形振荡的区间明显缩小,响应速度也加快了很多

我们再把示波器放大,看看PID调速的精度,200的目标速度,误差基本在1左右;

如需进一步获得Matlab/Simulink 自动代码生成 基于模型设计学习教程的源代码包,请加QQ群:710443158