DSP

Matlab/Simulink 自动代码生成 基于模型设计学习教程(12)---- PID控制直流电

2019-07-13 18:33发布

       基于前面的基础,我们已经能够搭建Simulink上位机、编码器测速、IIR滤波。这个利用PID控制直流电机实验,我们能否把这些功能都结合起来,形成一个综合性比较强的实验呢;       下面我们给本实验提一点设计需求:
  1. 利用上位机控制电机正反转;
  2. 利用上位机观测到电机的转速、转向,通过滤波算法提高测速的精度;
  3. 利用上位机调整PID三个参数,使能达到更好的控制效果;
  4. 利用上位机实时调整目标值,观测调整效果;
我们先来看一下如何控制直流电机正反转                    直流电机控制正反转只需要切换控制端的两个电平高低,那么上述模型就根据上位机的信号切换电平高低   我们再来看一下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