智能车制作

标题: 闭环测速问题——仅限讨论 [打印本页]

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

作者: haicong1000    时间: 2011-5-2 13:15
讲的有些泛泛
作者: 转角踩到屎    时间: 2011-5-3 18:40
的确用起来是不错的。感谢楼主
作者: wf395962475    时间: 2011-5-5 09:57
感谢
作者: prince_rong    时间: 2011-5-8 12:47
谢谢
作者: wangzhe330    时间: 2011-5-8 13:04
谢谢分享
作者: Dela    时间: 2011-5-8 17:48
怎么测PWM的比例关系??
作者: CjackL    时间: 2011-5-8 19:39
谢了
作者: 维京    时间: 2011-5-11 21:25
比例关系???
作者: zhjb1    时间: 2011-6-3 08:52
可以这样设想:先假定PWM=1000为直流,PWM=0为无电压输出,PWM=100是达到1M/S的速度。
P的思路是:如果感觉加速较慢,可以将P加大,白话:按照比例输出PWM。如果不用公式——最简单,可以按照30%、15%、5%的增量输出,实际输出的3次PWM值为:130、115、105、100....,可以增加和减少%比来实现P的功能,也可以采用比例计算公式——需要CPU介入的。微分和积分用处不大的。
作者: 姜国昌    时间: 2011-6-3 17:00
好东西
作者: 可怜大灰狼    时间: 2011-6-11 18:56
一定要顶起
作者: 云游天下    时间: 2011-6-13 12:46
恩,南无如何实时测速呢?你们都是个多长时间取值?
作者: zhjb1    时间: 2011-6-15 15:57
我们设定0.1S的时钟测速1次
作者: 放开那女孩    时间: 2011-6-17 17:51

作者: 逐日    时间: 2011-9-25 09:23
3q
作者: 海鹏    时间: 2011-10-23 10:18
谢谢楼主分享!!
作者: wxstar1    时间: 2012-2-18 17:28
3Q
作者: 旅行者的脚印    时间: 2012-5-15 21:37

作者: 丁香花    时间: 2012-5-23 22:03
那楼主你帮我分析这么一个问题:PWMDTY固定时,车放在架子上空跑记得的脉冲数远远大于实际在跑道上跑返回的脉冲数,跑道上跑的实际脉冲个数我怎么求?
作者: fn654    时间: 2012-12-11 17:57
谢谢分享
作者: 林的0922    时间: 2013-4-10 12:49
好好
作者: cjn    时间: 2014-7-25 21:40
:(




欢迎光临 智能车制作 (http://111.231.132.190/) Powered by Discuz! X3.2