旋转编码器的一种编程思路

旋转编码器

旋转编码器常应用于角度定位或测量时,通常有A、B、Z三相输出。A相和B相输出占空比为50%且相位差为90度的方波。当编码器正向旋转时,A相比B相超前四分之一个周期;当编码器反向旋转时,B相比A相超前四分之一个周期。编码器每转一周,Z相输出一个脉冲。由于编码器每转一周,A相和B相输出固定数目的脉冲,则A相或B相每输出一个脉冲,表示编码器旋转了一个固定的角度。当Z相输出一个脉冲时,表示编码器旋转了一周。因此旋转编码器可以测量角位移及位移方向。

当然,不同型号的旋转编码器,其输出脉冲的相数也不同,有的旋转编码器输出A、B、Z三相脉冲,有的只有A、B相两相,最简单的只有A相。

A和B输出波形为

通过输出波形图可知每个运动周期的时序为

静止状态为11或00

单片机可利用定时器中断来检测A和B的状态,中断时间在5~20ms之间均可。

当检测到A^B= 0时,表示为静止状态,记下A和B的状态。

当检测到A^B= 1时,表示有转动,读取AB的状态,如果AB是从11到01或者是

从00到10则为正转,反之如果AB是从11到10或者是从00到01则为反转。

此方法比较简单可靠,可以检测转动一格又可以检测快速转动。