stm32码盘传感器_STM32电机测速(正交或者霍尔编码器)

本文介绍了如何使用STM32单片机通过霍尔编码器来测量直流减速电机的速度。讲解了编码器的工作原理、电机测速的计算方法,并提供了相关代码,包括编码器引脚配置、速度计算和中断服务函数。最终目标是实现电机速度闭环控制。
摘要由CSDN通过智能技术生成

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

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

2.2.1 实现工具

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

2.2.2 编码器原理

(1)编码器是什么?

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

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

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

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

(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 r\num1)\t

2.2.3 部分代码分享

主要流程:

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

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

#include "encoder.h"

/**************************************************************************函数功能:把TIM2初始化为编码器接口模式入口参数:无返回 值:无**************************************************************************/

void Encoder_Init_TIM2(void)

{

TIM_TimeBaseInitTypeDef TIM

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值