实际应用中,单片机根据脉冲计数来测量转速的方法有以下三种:
(1)在规定时间内测量所产生的脉冲个数来获得被测速度,称为M法测速;
(2)测量相邻两个脉冲的时间来测量速度,称为T法测速;
(3)同时测量检测时间和在此时间内脉冲发生器发出的脉冲个数来测量速度,称为M/T法测速。以上三中测速方法中,M法适合于测量较高的速度,能获得较高分辨率(最容易想到);T法适合于测量较低的速度,这时能获得较高的分辨率;而M/T法则无论高速低速都适合测量(详细介绍)。
M法是测量单位时间内的脉数换算成频率,因存在测量时间内首尾的半个脉冲问题,可能会有2个脉的误差。速度较低时,因测量时间内的脉冲数变少,误差所占的比例会变大,所以M法宜测量高速。如要降低测量的速度下限,可以提高编码器线数或加大测量的单位时间,使用一次采集的脉冲数尽可能多。
T法是测量两个脉冲之间的时间换算成周期,从而得到频率。因存在半个时间单位的问题,可能会有1个时间单位的误差。速度较高时,测得的周期较小,误差所占的比例变大,所以T法宜测量低速。如要增加速度测量的上限,可以减小编码器的脉冲数,或使用更小更精确的计时单位,使一次测量的时间值尽可能大。
M法、T法各且优劣和适应范围,编码器线数不能无限增加、测量时间也不能太长(得考虑实时性)、计时单位也不能无限小,所以往往候M法、T法都无法胜任全速度范围内的测量。因此产生了M法、T法结合的 M/T 测速法:表现为低速时测周期、高速时测频率。
M/T法,在脉冲上升沿开启定时时间计数,在定时时间Tg到达后,继续等待一个上升沿脉冲,时间为Td; 记录在此期间的脉冲数,由脉冲数除以时间,得到准确的频率(速度)。
M/T 法中的“低速”、“高速”如何确定呢?
假定能接受的误差范围为1%、M法测得脉冲数为f, T 法测得时间为 t 。
M法:2/f <= 1% ==> f >= 200
即一次测量的最小脉冲数为 200,设此频率对应的速度为 V1,大于V1,精度更高
T法:( 1/(t-1) - 1/t ) / (1/t) <= 1% ==> t >= 101
即一次测量的时间为 101 个单位,设此周期对应的速度为 V2,小于 V2,精度更高
若计时单位为mS,则 t>= 101mS
这只是理论精度,实际应用还要考虑脉冲信号采集的延迟,软件处理所需花费的时间。
若 V1 < V2,则 M/T 法能满足全范围内的速度测量。一个系统设计之前,就需要详细的计算,使V1<V2或尽可能接近。不能光凭经验估算确定高低速、传动比、编码线数。然后很不幸,很多现有系统中会出现 V1 > V2,就会出现(V2, V1) 这一段速度无论 M 法还是 T 法都无法覆盖的情况,一个缓解的办法就是在(V2,V1)段同时使用 M法和T法测量,然后取平均值,但要解决好M/T测量的同步问题。
STM32F103RBT6实现测速算法,更新中......