STM32实现电机的PID控制.docx
《STM32实现电机的PID控制.docx》由会员分享,可在线阅读,更多相关《STM32实现电机的PID控制.docx(6页珍藏版)》请在优知文库上搜索。
1、PlD控制应该算是非常古老而且应用非常广泛的控制算法了,小到热水壶温度控制,大到控制无人机的飞行姿态和飞行速度等等。在电机控制中,PID算法用得尤为常见。一、位置式PID1.计算公式在电机控制中,我们给电机输出的是一个PWM占空比的数值。话不多说,直接上位置式PlD基本公式:Pwm=KP*e(k)+Ki*e(k)+Kde(k)-e(k-1)e(k):本次偏差e(k-I):上一次的偏差e(k):e(k)偏差的累积和淇中k为l,2,k;Pwm:输出Kp:比例项参数Ki:积分项参数Kd:微分项参数控制流程图如下:aMCU)上图中的目标位置一般我们可以通过按键或者开关等方式编程实现改变目标值,测量位置
2、就是通过stm32去采集编码器的数据。目标位置和测量位置之间作差就是目前系统的偏差。送入PID控制器进行计算输出,然后再经过电机驱动的功率放大控制电机的转动去减小偏差,最终达到目标位置的过程。2.C语言实现如何把我们以上的理论分析和控制原理图使用C语言写出来呢,这是一个有趣且实用的过程。位置式PID具体通过C语言实现的代码如下:intPosition_PID(intEncodeointTarget)(staticfloatBiaszPwmJntegral-bias,Last-Bias;Bias=Target-EnCOder;计算偏差IntegraLbiaS+=Bias;求出偏差的积分/PID基
3、本公式Pwm=Position_KP*Bias+Position_KI*lntegral_bias+Position_KD*(Bias-Last_Bias);1.aSjBiaS=Bias;保存上一次偏差returnPwm;输出)入口参数为编码器的位置测量值和位置控制的目标值,返回值为电机控制PWM(现在再看一下上面的控制框图是不是更加容易明白了)。第一行是相关内部变量的定义。第二行是求出位置偏差,由测量值减去目标值。第三行通过累加求出偏差的积分。第四行使用位置式PID控制器求出电机PWM.,第五行保存上一次偏差,便于下次调用。最后一行是返回。二、增量式PID1 .计算公式速度闭环控制就是根据单
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- STM32 实现 电机 PID 控制
