STM32-增量式编码器的介绍及应用
增量式编码器简介
增量式编码器也成为正交编码器,是通过两个信号线的脉冲输出来进行数据处理,一个输出脉冲信号就对应于一个增量位移,编码器每转动固定的位移,就会产生一个脉冲信号 通过读取单位时间脉冲信号的数量,便可以达到测速的效果(\(v=s/t\)),通过对脉冲信号的累加,和编码器的码盘的周长(转一圈对应距离) 便可以达到计算行走距离的效果(\(s=n \times d\))
编码器线数
编码器的线数 ,是说编码器转一圈输出多少个脉冲,,,如果一个编码器是500线,说明这个编码器转一圈对应的信号线会输出500个脉冲, A B两相转一圈发出的脉冲数一样的,不过存在90°相位差。
编码器原理
增量式编码器有两个脉冲输出,A相和B相,并且两个相位永远存在90°相位差。 如果两个信号相位差为90度,则这两个信号称为正交。由于两个信号相差90度,因此可以根据两个信号哪个先哪个后来判断方向、并且可以根据AB相脉冲信号数量测得速度,位移等。
编码器正反转
正转的时候信号线A先输出信号,信号线B后输出 A相超前B相90度 证明是正转。
反转的时候信号线B先输出信号,信号线A后输出 B相超前A相90度 证明是反转。
STM32定时器编码器模式

STM32的编码器模式共有三种:
\(\bullet\) 仅在TL1计数(A相)

TI2(B相)为高电平时:
1时刻: TI1(A相)下降沿, 则向上计数(正转)。
2时刻:TI1(A相)上升沿, 则向下计数(反转)。
TI2(B相)为低电平时:
3时刻: TI1(A相)上升沿, 则向上计数(正转)。
4时刻:TI1(A相)下降沿, 则向下计数(反转)。
\(\bullet\) 仅在TL2计数(B相)

TI1(A相)为高电平时:
1时刻: TI2(B相)上升沿, 则向上计数(正转)。
2时刻:TI2(B相)下降沿, 则向下计数(反转)。
TI2(B相)为低电平时:
3时刻: TI2(B相)下降沿, 则向上计数(正转)。
4时刻:TI2(B相)上升沿, 则向下计数(反转)。
\(\bullet\) 在TL1和TL2都计数(A相和B相都计数)

一个脉冲信号周期完成4次跳变。精度提高。
1时刻:TI2为低电平,TI1上升沿跳变,计数器向上计数。
2时刻:TI1为高电平,TI2上升沿跳变,计数器仍然向上计数。
3时刻:TI2为高电平,TI1下降沿跳变,计数器仍然向上计数。
4时刻:TI1为低电平,TI2下降沿跳变,计数器仍然向上计数。
计数器向下计数原理相同。
通过stm32cubemx对编码器进行配置。
选择合适的定时器,以TIM3为例。
1.设置定时器TIM3的Combined Channels的选项为Encoder Mode。
2.在参数配置中的Econder Mode中选择Econder Mode TI1 and TI2。
3.选择GPIO模式,配置定时器两个GPIO引脚模式,改成Pull-up。
需要注意的是,一个定时器做一种工作,如果配置了编码器模式,那么剩下的通道就不能配置其他模式。
两相计数模式下, 读出来数需要/4,一个脉冲信号对应四次计数。

浙公网安备 33010602011771号