PID-电机速度控制
我想问一下如果想直接借用您的pid速度控制源码去调速的话,电机的接线我没有问题,但是我想问下对于接驱动板这个硬件有什么要求吗,我的驱动板型号是BTN4,请问接线有何要求,驱动板上的EN和AD引脚用哪一个需要在代码中说明吗?
1 PWM的重装载值
这个值选择100或者10000,同一个函数运行起来,效果绝对是不一样的,本文选择1000(随缘取的,感觉不错,大家也可以选择100,10000,或者其他的~ ^ ^ ~),记住这个值,我们的PID控制输出最高值就应向这个值看齐
2 控制周期
这个值也非常重要,它既影响了控制效果(10ms控制一次和1s控制一次是不一样的),也影响了速度反馈的数值。我的速度反馈算法是最简陋的,算一个控制周期里编码器反馈的脉冲数。控制周期我选择 10ms,所以这里速度的单位为( cnt/10ms)
3 期望值的范围
本文的的期望值就是希望得到的速度,这个值不是随便给的,粗略计算一下,假设我们的电机一秒最多能5圈,假设1圈1560个脉冲,那么1s反馈的脉冲数为1560*5=7800,在10ms里最多78个脉冲,所以我们的期望值应设在 -78到78(小数就不考虑了) 之间(单位 cnt/10ms)
4 输出值的范围
因为我们的pwm最大值为1000,那么我希望我的PID控制在(0——1200)之间比较合适,略微超出的限下幅就很舒服,假如输出范围为(0——10000),这就不太合理,超过1000的值都被限幅了,相当于整个电机大部分时间都在满转速运动(就变成了开环控制),控制效果就不好了。
假如如我期望速度为30,而刚开始的速度反馈为0,那么第一次控制的偏差error就为30,一开始我们确实是希望电机能满电压运行,然后当速度提到7左右的时候,电机加速度就应该慢慢减弱,最后让速度能够平滑地变成10。那么这个Kp值大概多少比较好呢,首先Kp=1.0是没用的,30的pwm连电机都动不了~ … ~,那么10呢,初始输出为300,电机应该处于刚起转的地步,理论上的Kp值应该是10的数倍,不过我也是刚上手,先设个10.0看看效果