c语言的实现
P用于提高相应速度,I用于减小静差,D用于抑制震荡
速度闭环控制是根据单位时间获取的脉冲数测量电机速度信息,对目标值进行比较
理论分析
直立环使用PD控制
在调试直立环,要在定时器中断服务函数屏蔽速度换和转向环
首先估计kp的取值范围,陪我们设置7200代表占空比百分百
设定kp值为7200,那么小车在10°就会满转
确定参数的原则是:kp一直增加,出现大幅度低频抖动
kd一直增加,直至出现高频抖动
确定了pd的最大数,×0.6就是需要的参数
我们对速度进行低通滤波
一般可以把ki的值设置为kp/200
kp最大值=7200/(160*50%)
pwmout=P*(E(0)-E(1))+I*E(0)+D*(E(0)-2*E(1)+E(2))+pwmprepwmpre=pwmout
E(0)是当前
系统偏差
,E(1)是上一次偏差,E(2)上上次偏差。P、I、D分别是
比例系数
、积分系数和微分系数
E=SpeedSet-Speed
;
SpeedSet可根据路况设置,是你期望小车行驶的速度。Speed是你当前测量的小车的实际速度
最基本的思路,假设你的目标速度是Vt,实际测得的速度是Vs,如果Vs大于Vt,就降低占空比减速,如果Vs小于Vt,就升高占空比加速。这是最基本的思路。然后,设想,如果当前Vs远远小于Vt,那么你肯定希望占空比加大一点,如果只是小一点点,占空比就加小一点,这个很好理解吧?那么,就要建立速度差和占空比每次增量之间的关系式。
然后,就是以极可能的快的运行频率,检测速度差,根据速度差大小计算占空比的增量,只要速度还没达到目标,就不断的增加或降低占空比,不断重复这个过程,那么实际速度就会在目标速度上下波动,只要参数调整合理,波动极小,就等效于实际速度了。
至于速度差和占空比增量之间的关系,就得慢慢调试了。这个过程实际就是PID控制中的P控制的原理。还可以加入I控制甚至D控制,达到更好的控制效果。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)