2024年1月16日发(作者:丰田prius价格)

mg513编码器减速电机手册

我的编码器电机是130TT减速电机,电机轴转一圈可以产生13个脉冲信号输出,电机减速比为1:120,所以减速电机的输出轴旋转一圈,实际可以产生的脉冲为13*120=1560个。在通过STM32F4编码器接口的4倍频就是6240个脉冲也即是轮子转一圈会有6240个脉冲。(4倍频就是一个脉冲可以被检测到4次,增大脉冲的检测精度)

测速实现方案

第一种测速方案是计算一定脉冲下所用时间来得出电机速度

第二种测速方案是是一定时间下所产生的脉冲数量来计算。这里选择第二种。

1.捕获脉冲:

使用一个定时器TIM4的编码器模式接收电机编码器的脉冲,另一个定时器TIM3负责在一定时间的读取编码器脉冲的值。这样,就可以得出一定时间下的电机的脉冲数了。我这里取100ms取值一次。

2. 脉冲处理:

那么知道了一定时间下的电机的脉冲数怎么可以测到电机的速度呢?这里我们已经知道了减速电机的输出轴旋转一圈会产生1560个脉冲,四倍频就是6240个,所以可以根据比例来求出轮子的位移(事先用尺子测出轮子一周的长度,比如说100ms有2000个脉冲,那么2000除6240得到比例,再用这个比例乘以轮子的长度求出位

移,然后这是在100ms下走的路程,最后用位移除以时间100ms就可以得到电机的速度啦)

注意的地方

1

这里有个要注意的地方是定时器中断函数中尽可能短,不要太多代码,而且定时器中断函数中不要用printf函数,可能会造成卡死。因为printf本身就用到中断函数。

2

还有一点是电机正转的话编码器模式是从0开始计数,如果反转的话从设置的重装载开始递减计数,我这里就是从60000开始,如何有2000个脉冲,则计数器CNT的值为58000。为了判断出正反转,我的解决方法是CNT在1至30000为正转,30000~60000为反转(因为我这个项目中100ms内正转不会有30000个脉冲产生)。缺点是都是牺牲数据范围来读取。还有一种办法是读取DIR来判断 但有小概率误判现象。用DIR在极端情况下会出现误判,比如一直处于正反转。

3

TIM4中的中断函数要写出来,不然可能会卡死。当然,也可以禁止TIM4的中断,这样就不需要写中断函数了。

更多推荐

脉冲,电机,编码器,中断,函数