增量式编码器工作原理以及使用


工作原理:增量式旋转编码器通过内部两个光敏接受管转化其角度码盘的时序和相位关系,得到其角度码盘角度位移量增加(正方向)或减少(负方向)。

内部工作原理(判断正转还是反转):

AB 相编码器内部有两对光电耦合器,输出相位差为 90°的两组脉冲序列。正转和反转时两路脉冲的超前、滞后关系刚好相反。
在 B 相脉冲的上升沿,正转和反转时 A相脉冲的电平高低刚好相反,因此使用 AB 相编码器, PLC 可以很容易地识别出转轴旋转的方向。看图:

编码器AB相
顺时针AB 逆时针AB
11 11
01 10
00 00
10 01

从上表的AB相可以得出:

AB相正转和反转的编码是不一样的,只要知道AB相现在的编码和下一个编码,就可以判断编码器是正转还是反转。

计算距离:

购买的编码器会有一些参数:编码器分辨率(转一圈需要的脉冲)、周长(一圈的周长)

一个脉冲对应的距离 = 编码器分辨率 / 周长;

则转动距离 = 脉冲数 * 编码器分辨率 / 周长;

未来计算准确,减少误差,我们可以转动固定长度所需要的脉冲:

固定长度所需要的脉冲 = 固定长度 * 周长 / 编码器分辨率 ;

实现:

这里简单说一下实现的思路(针对STM32的程序设计):

需要到STM32的知识 外部中断(上升沿或下降沿中断)

1、外部中断捕获A相或者B相的上升沿(或者下降沿),产生中断进入中断服务程序;

2、中断服务程序代码实现:判断B相的电平或者A相的电平(这里是为了判断编码器是正转还是反转)。

例子(简单举个栗子):

中断是捕获编码器A相的上升沿

捕获到A相的上升沿时,判断B相是高电平还是低电平(看下面的图)

如果B相是低电平则说明编码器是正转(顺时针);如果B相是高电平说明编码器反转(逆时针)

判断是正转还是反转之后,相应的脉冲式进行加1,再通过简单的换算,就可以计算出距离

若想计算速度,加个定时器。