旋转编码器种类、工作原理和接线方法
编码器是一种用于将一种数据格式更改为另一种格式的设备。换句话说,它一种用于检测机械运动并将其转换为模拟编码或数字编码的o/p信号的设备。编码器有线性和旋转两种配置,但最常用的配置是旋转编码器。此外,旋转编码器设计有绝对编码器和增量编码器两种基本形式。
另外,大多数旋转编码器都设计有塑料或玻璃槽盘,因为每条轨道内的径向线会干扰光发射极-探测器对之间的光束,从而产生数字脉冲。在本文中,小编简单介绍下旋转编码器的种类、工作原理和接线方法。
基本概念
旋转编码器(轴编码器)是一种机电装置,用于改变轴的运动,旋转轴的角位置。该编码器根据模拟或数字的旋转运动生成电信号,可用于需要控制或监控的各种应用,如机器人、工业控制、摄影镜头、计算机的输入设备等。
旋转编码器结构可以通过使用不同的部件来完成,例如编码器轴、编码盘或旋转盘,包括标签、光源包括电子板、接收红外光传感器、光学机械块包括齿轮、带有数字接口转换器和信号处理器的电子板等。
旋转编码器的针脚配置包括五个针脚,具体如下图所示:
- Pin1 (GND):一个接地引脚。
- Pin2 (VCC):与3.3V或5V一起工作的正电压电源引脚。
- Pin3 (SW):这是低电平有效按钮开关。按下旋钮后,电压将为低。
- DT(Output B):类似于时钟输出,但是它以90°相移滞后时钟。所以,这个输出可以用来决定旋转的方向。
- CLK (Output-A):这是主输出信号,用于确定旋转量。每次,编码器中的旋钮都会通过一个棘爪向任何方向转动。'CLK' 的输出将经历一个高周期&之后的低周期。
工作原理
在旋转编码器中,可以观察到方波信号是如何产生的。通常情况下,该编码器包括一个圆盘,该圆盘与接触区均匀分布。这些接触区域的连接可以连接到公共插脚C和其他两个单独的接触插脚,如下图所示的A和B。
旋转编码器中的圆盘将开始缓慢旋转,并且A和B等两个引脚将通过公共引脚接触。因此,可以相应地生成两个方波输出信号。其中,可以使用两个输出中的任何一个来确定旋转位置。但是,如果想决定旋转方向,那么必须同时考虑这两个信号。
另外,可以观察到两个o/p信号以90度的相位移动。如果此编码器顺时针方向转动,则输出A将在输出B之后。每次如果计算步数的话,则信号将从低变为高或从高变为低。此时,可以观察到像A和B这样的两个输出信号会有相反的值。
如果此编码器逆时针旋转,则两个输出信号将具有相同的值。基于这一点,可以简单地对控制器进行编程以研究编码器的位置和旋转方向。
旋转编码器类型
这些编码器分为两种类型,包括以下。
- 增量型旋转编码器
- 绝对型旋转编码器
1、增量旋转编码器
增量旋转编码器用于提供一系列低波和高波,这些波将指定位置的移动。由于轴旋转运动,这些类型的编码器将在脉冲形式内提供一系列周期性信号。物体的速度可以通过一段时间的脉冲计数来测量。这些脉冲可以简单地从参考点开始计数,以确定位置,否则覆盖距离。
增量式旋转编码器产生两个数字o/p信号,这两个传感器之间的相位关系将决定编码器的轴是顺时针方向旋转还是逆时针方向旋转。因此,通过使用该编码器,可以简单地确定位置。
一旦发光二极管产生光,它就会通过一个晶莹剔透的圆盘进行传输。一旦这个光信号被光传感器接收到,就可以产生一个正弦信号,它变成一个脉冲序列或方波。脉冲波可以传输到旋转计数器,旋转计数器将传输信号以开始工作。
2、绝对旋转编码器
一旦电源从旋转编码器断开,绝对旋转编码器用于保持位置信息。一旦提供电源,该编码器的位置即刻可用。
绝对旋转编码器通过不同的二进制加权包括不同的编码环,这些编码环提供了一个数据字,用于表示旋转编码器在单圈中的绝对位置。所以这种编码器也称为并行绝对编码器。
此外,多圈绝对式旋转编码器主要包括额外的齿轮和码轮。高分辨率的车轮可以测量低分辨率的旋转次数,而分辨率较低的齿轮码轮可以记录轴的完整转数。
接线图
带有Arduino的旋转编码器接线图如下图所示,旋转编码器带有轴,可以改变角度位置,否则轴会运动。该编码器的输出提供有关轴运动的信息,通常在控制器或处理器内处理成距离、位置和速度等信息。轴的旋转是360度。
该接线图所需材料主要包括Arduino Uno、旋转编码器、USB 3.0电缆、从母接头到公接头等的跳线。
旋转编码器与Arduino Uno的接口可以下面的方法完成:
- 将旋转编码器的VCC引脚连接到Arduino的5V引脚
- 将旋转编码器的GND引脚连接到Arduino的GND引脚
- 将旋转编码器的CLK引脚连接到Arduino的D3引脚
- 将旋转编码器的CLK引脚连接到Arduino的D4引脚
连接完成后,将Arduino Uno板连接电脑。将编码器上传至Arduino Uno 板上,然后单击工具-> 选择串行监视器,这时候可以在串行监视器上找到BEGIN。所以现在可以开始转动编码器的轴并观察串行监视器上的打印输出。
顺时针转动轴后,串行监视器将打印编码器计数。
读取与Arduino Uno接口的旋转编码器的代码如下:
/**************
* VCC to 5V *
* GND to GND *
* CLK to D3 *
* CLK to D4 *
**************/
int pinA = 3;
int pinB = 4;
int encoderPosCount = 0;
int pinALast;
int aVal;
boolean bCW;
void setup()
{
//SET pinA and pinB and input
pinMode (pinA,INPUT);
pinMode (pinB,INPUT);
pinALast = digitalRead(pinA);//Read Pin A
Serial.begin (9600);
Serial.println(“BEGIN”);
Serial.println();
}
void loop()
{
aVal = digitalRead(pinA);
if (aVal != pinALast)
{
if (digitalRead(pinB) != aVal) //We’re Rotating Clockwise
{
encoderPosCount ++;
bCW = true;
}
else
{
bCW = false;
encoderPosCount–;
}
if (bCW)
{
Serial.println (“Rotate Clockwise”);
}
else
{
Serial.println(“Rotate Counterclockwise”);
}
Serial.print(“Encoder Count: “);
Serial.println(encoderPosCount);
Serial.println();
}
pinALast = aVal;
注意:旋转编码器与微控制器的接口代码与上述相同,只是应使用微控制器特定的Api。
主要应用
旋转编码器的应用包括以下几个方面:
- 用于需要速度、方向、加速度和监控旋转速率的应用。
- 用于材料处理、包装和输送机等行业。
- 在自动化领域,旋转编码器被用作速度、角度、加速度和位置的传感器。
- 用于通过使用齿轮齿条、主轴、电缆拉线或测量轮来测量线性运动。
- 用于装配机、指示系统、打印机、CNC机器、测试机、电机反馈、医疗设备、钻孔和贴标机。
总结
以上就是关于旋转编码器的一些基础内容介绍。另外,需要注意的是,旋转编码器在某些恶劣条件下会失效,引起故障的原因包括包括有液体污染、机械轴承过载和信号输出故障等。一旦出现故障,旋转编码器将停止运行或系统将随机运行。