常驻嘉宾
- 积分
- 4726
- 威望
- 1564
- 贡献
- 2808
- 兑换币
- 497
- 注册时间
- 2010-12-28
- 在线时间
- 177 小时
|
电机的闭环测试是Freescale赛车必须使用的技术。
有人会说,开环也能很好的控制。一点没有问题,但在复杂路线和需要高速开环就会形成“震荡”跑路的方式——弯了,减速纠正,又弯了再减速纠正,以致影响速度。闭环控制则可以较好地解决这些问题。此次只讨论,如何实现闭环?
闭环控制车速必须有两个条件:实时测得车速,可以控制车速。
前者可以采用电机+编码器、光电管探测、霍尔元件等测得电机轴或齿轮的转速,从而计算出小车的实际速度。单片机再用CCP模块中断方式,测得上述传感器给出的信号,并且计数——脉冲数。
后者可以采用PIT或ECT时钟模块,设定时间中断程序。时钟中断程序,定时读取CCP模块计的数,并且读完后清除计数,重复过程以测得每个时钟模块中断得到的计数值——这个值可以实时的计算出小车的速度。如果定时器中断间隔为秒,则为每秒的计数值,否则是实际中断的单位时间计数值。
所谓的闭环控制就是人为设定一个值(可以仅用脉冲数——可以将脉冲数对应速度做成表),用计数的值与此设定值比较,控制电机的PWM脉宽使得计数值和设定值在允许的范围内——比如两者之差为2个脉冲,快了减少PWM输出脉宽,慢了,增加PWM输出脉宽——这就是白话描述的闭环控制。
再进一步,如果想采用PID算法控制,只需要将设定值与实时测定值的差,进行PID运算,再将结果按照控制PWM的比例关系输出就成为PID控制了。想一想?不是吗?
编程也非常简单。先按照手册初始化CCP模块和PIT或ECT模块,而后编这两个的中断处理程序,前者仅完成计数,后者完成读取计数和清除;在编一个主函数完成控制PWM脉宽的增减,使得计数值符合要求即可。 |
|