stm32正交编码器 原理图_STM32电机测速(正交或者霍尔编码器)

a3bab28a1cbfc364640513504ea3eafe.png

2.2 STM32电机测速(正交或者霍尔编码器)

我们这里提供左右电机测速代码,在公众号:小白学移动机器人,发送:电机测速,即可获得源码工程下载链接。

2.2.1 实现工具

STM32单片机、带编码器的直流减速电机、Keil5、(蓝牙、串口助手)调试用

2.2.2 编码器原理

(1)编码器是什么?

编码器是一种将角位移或者角速度转换成一串电数字脉冲的旋转式传感器。编码器又分为光电编码器和霍尔编码器。

(2)编码器工作原理是什么?

霍尔编码器是有霍尔马盘和霍尔元件组成。霍尔马盘是在一定直径的圆板上等分的布置有不同的磁极。霍尔马盘与电动机同轴,电动机旋转时,霍尔元件检测输出若干脉冲信号,为判断转向,一般输出两组存在一定相位差的方波信号。示意图如下:

026a1378069607d3a4b4b0059c05f23e.png

(3)带霍尔编码器的直流减速电机接线图

18113387e35b86a96814cc6762bc1a1d.png

(4)测速原理

单位时间内,根据脉冲走过的距离计算电机实际速度,这里采用5ms定时器中断。

(5)采集数据方式

通常有两种方式,第一种软件技术直接采用外部中断进行采集,根据AB相位差的不同可以判断正负。第二种硬件技术直接使用定时器的编码器模式,这里采用第二种。也是大家常说的四倍频,提高测量精度的方法。其实就是把AB相的上升沿和下降沿都采集而已,所以1变4。自己使用外部中断方式实现就比较占用资源了,所以不建议使用。

(6)速度计算方法

这里计算的是真实的电机轮子的物理转速

电机转动一圈的脉冲数:num1 单位:个

单位时间:t 单位:秒

单位时间内捕获的脉冲变化数:num2 单位:个 (反应电机正反转)

电机轮子半径:r 单位:m

圆周率:pi 单位:无

速度:speed 单位: mm/s

speed = 1000 x num2 x ( 2 x pi x rnum1)t

2.2.3 部分代码分享

主要流程:

将编码器AB相使用的引脚设置成定时器的编码器模式,我们根据TIMx->CNT寄存器数据的变化,计算出单位时间内,脉冲的变化值。然后在定时器中断服务函数中进行速度计算,然后将速度数据通过蓝牙发送到PC的串口助手,验证数据是否正确。

(1)编码器引脚配置以及测速代码

#include 

(2)main.c

#include 

2.2.4 总结

上面的一篇文章,我们实现的STM32单片机对直流减速电机的测速。再加上之前介绍的电机PWM控制,下一篇我们要结合前两篇的内容加上PID实现对电机速度的闭环控制。

系列文章

搭建ROS小车真的难吗?

ROS小车软件结构以及控制流程

STM32电机PWM控制

43e47aed54d8aca05b057905d1054c7c.png
  • 5
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
正交编码器(Quadrature Encoder)是一种常用的位置传感器,用于测量旋转或线性运动的位移和方向。它由两个光电传感器和一个光栅盘组成,光栅盘被分隔为等距的刻线。 STM32是一款非常流行的单片机系列,提供了HAL库(Hardware Abstraction Layer),简化了对硬件的访问和操作。 在使用STM32 HAL库进行正交编码器相关的编程时,可以按照以下步骤进行: 1. 初始化正交编码器的GPIO:设置编码器的引脚作为输入,注意使能引脚也需要设置为输入。 2. 配置编码器的外部中断(External Interrupt):通过HAL库的函数调用来配置外部中断,使得在编码器的每个脉冲之前和之后都触发中断。 3. 在中断服务函数(Interrupt Service Routine)中对编码器信号进行处理:编码器每次脉冲时,中断服务函数被调用。可以通过测量脉冲的方向和数量来计算运动的位移。 4. 使用计时器(Timer)进行速度测量:HAL库提供了内置的计时器功能,可以用于测量编码器的转速。通过计时器的输入捕获(Input Capture)功能,可以精确地测量两个脉冲的时间间隔,从而计算出转速。 5. 根据需求进行功能扩展:根据具体应用的需求,可以使用HAL库的其他功能,如PWM输出控制电机速度、外设和通信接口的配置等。 通过使用STM32 HAL库,我们可以方便地实现对正交编码器的读取、位置计算和速度测量等功能,大大简化了硬件的驱动和编程工作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值