实战经验 | 在STM32中实现电机测速的方法介绍

01、电机测速方法介绍
在电机控制类应用中,经常会需要对电机转速进行检测,测速常用的方式有M法测速和T法测速。M法测速是利用在规定时间Ts内编码器输出脉冲数量M1计算电机转速,如下图所示,信号A和B为正交编码器的输出信号,C解码后的计数脉冲(4x)。

1.png

▲ 图1. M法测速原理

单位时间(1s)内编码器输出脉冲数量,即脉冲频率:

2.png

假设电机每旋转一圈正交编码器(4x)的输出脉冲数量为Z,则电机转速为(r/min 代表圈/分钟):

3.png

M法测速的分辨率为:

4.png

M法测速的误差率为:

5.jpg

由上可知,M法测速的分辨率与速度无关,要提高分辨率,即减小Q值,必须增大编码器每圈输出的脉冲个数Z,或者增大采样周期Ts。M法测速误差率与测定时间内的脉冲数量成反比关系,转速越高M1值越大,当转速很低时,M1值很小,误差率会变大,因此M法适合高速测量。T法测速是测量编码器输出两个脉冲之间的间隔来计算转速,通过计算高频时钟脉冲数量M2来衡量编码器两个脉冲间隔的时间。

6.png

▲ 图2. T法测速原理

假设高频时钟的频率为ft,那么编码器两个脉冲之间的时间:

7.png

假设电机每旋转一圈正交编码器(4x)的输出脉冲数量为Z,则电机转速为:

8.png

T法测速的分辨率为:

9.png

T法测速的误差率为:

10.png

由上可知,T法测速的分辨率Q与M2相关,当转速越低时M2的值越大,Q值越小,分辨能力越强。T法测速的误差率也与M2相关,当转速越低时M2的值越大,误差率越小,因此T法测速非常适合低速测量。

02、M法与T法测速在STM32中的实现

STM32中的很多定时器都带编码器接口,在对输入编码器信号进行计数的同时,还通过该接口可以将正交编码器的输入信号解码成脉冲输出映射到TIMx_TRGO,手册中的原文描述如下:

11.png

结合上述的测速原理,在STM32中应用定时器的编码器接口完成M法测速和T法测速的方案框图如下:

12.png

▲ 图3. STM32定时器测速方案框图

使用两个32bit的定时器TIM2和TIM3来处理编码器信号,TIM3的编码器接口与外部的编码器信号连接直接实现4x计数;解码后的输出映射到TIM3_TRGO,并作为TIM2的定时器捕获和复位的触发源。TIM6作为基本定时器,实现一个ms级别的中断,在中断服务程序中实现M法和T法测速的计算。

M法测速中,在TIM6的定时中断服务程序中读取TIM3的计数值TIM3_CNT,两次连续读取值的差值即为图1种的M1,TIM6的中断定时时间即为Ts,在Z为已知固定值的情况下,根据公式(1)即可计算出转速n。

T法测速中,在TIM6的定时中断服务程序中读取TIM2捕获值 TIM2_CCR1(TIM3_TRGO内部连接到TIM2_CH1),TIM2_CCR1即为图2中所示的编码器连续两个输出脉冲之间的高频脉冲数量M2,TIM2的时钟频率即为ft,在 Z为已知固定值的情况下,根据公式(2)即可计算出转速n。

03、方案测试结果

基于以上的方案,通过定时器模拟生成编码器输出信号A和B,分别的高速和低速情况下进行模拟测试,结果如下,图中Speed_M_Ref和Speed_T_Ref为速度参考值,Speed_M和Speed_T为测试结果值。

高速M法测试结果(1460rpm~2920rpm):

13.png

高速T法测试结果(1460rpm~2920rpm):

1741230357938591.png

1741230364213930.png

中速M法测试结果(146rpm~292rpm):

1741230371405246.png

中速T法测试结果(146rpm~292rpm):

17.png

低速M法测试结果(19rpm~35rpm):

18.png

19.png

低速T法测试结果(19rpm~35rpm):

20.png

04、小结

本文简单介绍了电机控制中M法和T法测速的原理,给出了在STM32中如何利用定时器的编码器接口和多个定时器合作的方式实现两种测速的方案,并对方案进行了模拟测试,给出测试结果,高速下M法的效果更好,在低速情况下M法测速偏差大,T法测速更适合低速测速。

来源:STM32

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。