【机械自动化】旋转编码器

参考文章:https://en.wikipedia.org/wiki/Rotary_encoder

旋转编码器有两种:增量式编码器绝对值编码器

1、增量式编码器

所谓增量式,就是指编码器输出的信号是相对上一次的位置的一个变化量(德尔塔值),因此当前位置是由上一次位置的值加上本次读取到的值。增量式正交光电编码器外观:

【机械自动化】旋转编码器_第1张图片

以Broadcom公司的HEDS-973x Series光学编码器为例,参考链接:https://www.broadcom.com/products/motion-control-encoders/incremental-encoders/transmissive-encoders/heds-9731b50 ,其内部原理为:

【机械自动化】旋转编码器_第2张图片

码盘与红外对管的摆放方式:

 

【机械自动化】旋转编码器_第3张图片

将圆盘展开得到的原理示意图:

 

【机械自动化】旋转编码器_第4张图片

STM32定时器的编码器模式(编程参考手册):

【机械自动化】旋转编码器_第5张图片

计数原理分析如下:

【机械自动化】旋转编码器_第6张图片

在旋转的脉冲频率较低的情况下,这种计数原理完全可以使用两个GPIO加上双边沿中断进行计数,抖动的情况都能够被屏蔽掉,和使用定时器的效果是一样的,只是最大支持频率不如定时器。

另一种正交编码盘原理如下:

【机械自动化】旋转编码器_第7张图片

将圆形编码盘展开成线性展示:

【机械自动化】旋转编码器_第8张图片

上面的展开示意图中,假设编码器中的有光通过光栅到光电开关时,输出信号为高电平,没有光通过光栅时输出信号为低电平。可以看到A相和B相的信号之间相差了π/2。逆时针转动时(线性图左移),A相领先B相π/2,顺时针转动时(线性图右移),B相领先A相π/2。换一个更容易理解的方式说就是,当A相接收到一个上升沿脉冲的时候,如果B相为低电平,则编码器为逆时针转动,否则为顺时针转动。

如果编码器先逆时针转动,然后变成顺时针转动的话,AB相波形图如下:

【机械自动化】旋转编码器_第9张图片

改变转动方向其实是就是以改变转动方向的时间点做时间轴的垂线,然后以该垂线做波形的轴对称,即得到改变转动方向后的波形图。但是需要注意改变方向的时间点可能在一个周期的任意位置,上面的示意图是在A相波形的前半个周期中改变转动方向的,如果是在A相的后半个周期改变方向的话,波形是不一样的。另外,虽然可以按照以A相产生上升沿时,B相的电平状态来进行脉冲计数,但是由于转动方向改变的时间点可能处于A相的一个周期中的任意一个位置,不同位置会产生不同的计数结果,例如上图中的计数结果为:1-2-3-2-1,但是如果转动方向改变的时间点在A相周期的后半个周期时,计数结果则是:1-2-3-2-1-0,因为这时候A相会多一个上升沿。所以想要精确的进行计数,还需要对B相的脉冲进行判断。

下图是飞思卡尔K60芯片的数据手册中提到的芯片内部定时器对正交信号的解码过程:

下图是STM32定时器的编码器接口模式时的解码过程:

【机械自动化】旋转编码器_第10张图片

STM32处理器的定时器的编码器模式的设置可以参考文章:https://blog.csdn.net/qq_34071268/article/details/78499407。

 

2、绝对值编码器

还有一种编码器是绝对值式的编码器,绝对值式的编码器也有两种,一种是格雷码式的编码器,另一种是基于霍尔传感器的编码器。绝对值编码器相比较增量式编码器最大的却别就是其在360°的范围内的每个位置都有一个对应的量,以一张格雷码式编码器的码盘图片为例(图片资源来自Wikipedia):

【机械自动化】旋转编码器_第11张图片

该码盘被均分成了8份,每一份占用的范围为45°,那么需要码盘上的8份区域需要3位位二进制数,将码盘中的白色当做0,黑色当做1,X轴所在的全白的区域对应的绝对值位置为000(忽略最内圈),逆时针旋转码盘,X轴经过每个区域的绝对值位置依次为为001、010、011、100、101、110、111,在X轴处放置一个传感器,可以读取X轴所处的区域的绝对值,那么我们可以在码盘转动到任何位置的时候都能知道X轴指向的位置处对应区域的角度。为了可以提高编码器的精度,可以将码盘分割成更多的份,例如均分成 2^10 份,那么码盘被分为了1024份,相当于这个码盘的精度为1024线。绝对值编码器的优点明显,可以在系统启动的时候就知道电机的状态,但是其结构复杂,控制不方便,例如(图片资源来自Wikipedia):(可以清楚地看到码盘上的格雷码,以及控制板上的一个大约是CMOS传感器的IC,用于探测当前位置对应的码)

【机械自动化】旋转编码器_第12张图片

另一种基于霍尔传感器的编码器,使用一个霍尔元件和一个永磁铁,永磁铁的N极和S极连线和霍尔元器件处于平行状态,但是没有接触,这时候永磁铁旋转到不同角度的时候会在霍尔元器件中产生相对应的电压信号,根据这个电压信号可以计算出永磁铁相对于霍尔元器件的旋转角度,因此该种编码器也是一种绝对值式的编码器。以AS5600绝对值旋转编码器为例,该芯片12bit的分辨率,相当于拥有12个轨道的格雷码式绝对值编码器,码盘被均分成了 2^12 份。AS5600模块传感器如下图:

【机械自动化】旋转编码器_第13张图片

该模块一般安装在被测速电机的轴尾部,与轴垂直,电机轴上会有一个永磁铁,用于产生旋转的磁场信号,磁铁和AS5600芯片之间会有若干毫米的间隔,这种无接触的方式大大提高了编码器的可靠性和使用寿命。AS5600的IIC接口用于配置AS5600的参数以及读取位置信息,同时还有PWM和模拟信号输出。

 

你可能感兴趣的:(嵌入式)