STM32单片机—编码器测速

时间:2023-01-10 22:04:11

一、实验工具:STM32开发板一块、L298N电机驱动、直流电机

以及用到的软件(STM32CubeMX、keil4)

 

二、编码器原理

1.概述:编码器是一种将角位移或者角速度转换成一串电数字脉冲的旋转式传感器。编码器又分为光电编码器和霍尔编码器,我们这里用到的是霍尔编码器。

2.霍尔编码器工作原理:一种通过磁电转换将输出的机械几何位移量转换成脉冲或数字量的传感器,霍尔编码器室友霍尔马盘和霍尔元件组成。霍尔马盘是在一定直径的圆板上等分的布置有不同的磁极。霍尔马盘与电动机同轴,电动机旋转时,霍尔元件检测输出若干脉冲信号,为判断转向,一般输出两组存在一定相位差的方波信号。简单示意图如下:STM32单片机—编码器测速

3.编码器接线图:

STM32单片机—编码器测速

4.测速原理:我们这里用到的是M法测速的时候,会通过测量单位时间内A相输出的脉冲数来得到速度信息。


5.采集数据:编码器输出的是标准的方波,我们可以用单片机直接读取。在软件中的处理方式分两种1.自带编码器接口的单片机如STM32,可以以直接用硬件技术2.没有编码器借口的单片机  可通过外部中断读取。

 

一、转速计算方法:用捕获值(一秒内输出的脉冲数)/编码器线数(转速一圈输出脉冲数)/电机减数比(内部电机转动圈数与电机输出轴转动圈数比,即减速齿轮比)

 

二、源码解析

1.      STM32CubeMX设置用到的引脚,生成keil文件。引脚设置如下图:

STM32单片机—编码器测速

1.     编码器,串口,定时器初始化部分就不一一列出,想了解的可以去源码寻找。下面我主要说一下主函数中的代码。

首先是使用按键控制PWM变化来控制电机转速部分:

STM32单片机—编码器测速

STM32单片机—编码器测速

接下来调用HAL_TIM_IC_CaptureCallback函数 以便接下来得到一秒内输出的脉冲数,通过获取到的脉冲数来计算转速。

STM32单片机—编码器测速

接下来在回调函数中计算转速。

STM32单片机—编码器测速

STM32单片机—编码器测速

综上将电机、单片机、L298N电机驱动模块、连接起来就可以实现功能。