使用STM32控制霍尔编码器
编码器原理
原理简单来说,编码器上有以一个N,S交错排布的磁盘,当轮子转动,从而带动这个磁盘时,N,S极会移动,经过霍尔传感器,根据霍尔效应,N极和S极不同磁极加在这个霍尔传感器上时,电子会向不同的方向偏转,从而输出不同的电平,N极经过时,会输出高电平,S极会输出低电平。一般情况下会有A,B两个霍尔传感器,就如下图所示。
基于stm32库函数版部分代码说明
TIM_EncoderInterfaceConfig
(TIM2,TIM_EncoderMode_TI12,TIM_ICPolarity_Rising,TIM_ICPolarity_Rising);
这是定时器部分有编码器的相关函数
TIM2:定时器2
TIM_EncoderMode_TI12:T1和T2的每个跳变沿均计数。
TIM_ICPolarity_Rising:不反相。
TIM_ICPolarity_Rising:不反相。
根据两个输入信号(TI1&TI2)的跳变顺序,产生了计数脉冲和方向信号。
依据两个输入信号的跳变顺序,计数器向上或向下计数,同时硬件对TIMx_CR1寄存器的DIR位进行相应的设置。
不管计数器是依靠TI1计数、依靠TI2计数或者同时依靠TI1和TI2计数。
在任一输入端(TI1或者TI2)的跳变都会重新计算DIR位。
【正反转】
正转:T1超前T2相位90度。
反转:T1滞后T2相位90度。
【模式】
TI1模式:在T1的所有边沿 计数。
TI2模式:在T2的所有边沿 计数。
TI12模式:在T1和T2的所有边沿 计数。
推荐视频
推荐看一下b站上一位up主讲的霍尔编码器,比较详细
https://www.bilibili.com/video/BV1ap4y1H7e4?share_source=copy_web
总结
以上是我参考了相关视频和一些文章,自己的一些学习总结,如有写的不正确,还请大佬指教改正