0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

带Arduino的旋转编码器设计 旋转编码器的工作原理和特点

CHANBAEK 来源:网络整理 作者:网络整理 2024-07-04 17:17 次阅读

一、旋转编码器概述

旋转编码器(Rotary Encoder),也称为轴编码器,是一种将旋转的机械位移量转换为电气信号传感器。这些电气信号经过处理后,可以用于检测位置、速度等参数。旋转编码器广泛应用于工业控制机器人技术、精密测量、自动化设备以及计算机输入设备等领域。作为一种集光机电技术于一体的速度位移传感器,旋转编码器具有高精度、高分辨率、长寿命和稳定可靠等优点。

二、旋转编码器的工作原理

旋转编码器的工作原理主要基于光电转换或磁电转换技术。以光电式旋转编码器为例,其工作原理简述如下:

  1. 光电转换过程
    • 旋转编码器的核心部件包括一个光栅盘(或称为码盘)、发光元件(如LED)和接收元件(如光敏二极管或光敏三极管)。
    • 当旋转编码器的轴带动光栅盘旋转时,发光元件发出的光被光栅盘上的狭缝切割成断续光线。这些断续光线随后被接收元件接收,并转换为初始的电信号。
  2. 信号处理
    • 接收到的初始电信号经过后续电路的处理,如放大、整形等,最终输出为脉冲信号或代码信号。这些信号可以直接被控制系统读取和处理。
  3. 方向判断与计数
    • 对于增量式旋转编码器,通常会有A、B两相输出信号,且两相信号之间存在90度的相位差。通过检测A、B两相信号的相位关系,可以判断旋转编码器的旋转方向。
    • 同时,通过计数A相或B相信号的脉冲数量,可以计算出旋转编码器的旋转角度或位移量。
  4. 零位脉冲
    • 部分旋转编码器还会提供一个Z相信号作为零位脉冲。每当旋转编码器旋转一圈时,Z相信号会输出一个脉冲,用于校准或作为参考零位。 # 三、旋转编码器的特点

旋转编码器作为一种高精度、高可靠性的传感器,具有以下显著特点:

  1. 高精度与高分辨率
    • 旋转编码器能够精确地将旋转的机械位移量转换为电气信号,具有较高的测量精度和分辨率。例如,光学式增量型编码器可以有较高的单圈脉冲数,如2500到10000个脉冲,从而实现对旋转角度或位移量的精细测量。
  2. 长寿命与稳定性
    • 旋转编码器采用无触点的光电或磁电转换技术,避免了传统机械接触式传感器因磨损而导致的性能下降问题。因此,旋转编码器具有较长的使用寿命和稳定的性能表现。
  3. 多功能性
    • 旋转编码器不仅可以测量旋转角度或位移量,还可以根据输出信号的频率计算出旋转速度。此外,通过配合其他传感器或控制系统,还可以实现更复杂的功能和自动化控制。
  4. 适应性强
    • 旋转编码器具有多种类型和规格可供选择,如增量式、绝对值式、单路输出、双路输出等。这些不同类型的旋转编码器可以适应不同的应用场景和测量需求。
  5. 易于安装与维护
    • 旋转编码器体积小、重量轻、结构紧凑,易于安装在各种机械设备上。同时,由于其无触点的设计特点,使得旋转编码器的维护成本相对较低。
  6. 抗干扰能力强
    • 旋转编码器采用光电或磁电转换技术,信号传输过程中不易受到外界电磁干扰的影响。因此,旋转编码器在恶劣的工业环境中也能保持稳定的性能表现。

四、旋转编码器的应用领域

旋转编码器因其高精度、高分辨率和稳定可靠的性能特点,在多个领域得到了广泛应用:

  1. 工业自动化
    • 在工业自动化生产线中,旋转编码器常被用于测量和控制机械部件的旋转角度、位移量和速度等参数。通过与PLC伺服电机等设备的配合使用,可以实现自动化控制和精确测量。
  2. 机器人技术
    • 在机器人技术中,旋转编码器被广泛应用于关节角度的测量和控制。通过精确测量机器人关节的旋转角度和速度,可以实现对机器人姿态和运动轨迹的精确控制。
  3. 精密测量
    • 在精密测量领域,如光学仪器、精密机床等场合中,旋转编码器常被用于测量微小的旋转角度或位移量。其高精度和高分辨率的特点使得测量结果更加准确可靠。
  4. 计算机输入设备
    • 在计算机输入设备中,如鼠标和轨迹球等装置中,也常采用旋转编码器来检测用户的旋转操作。通过测量旋转编码器的旋转角度和速度等参数,可以实现对光标位置的精确控制。

五、旋转编码器的分类

旋转编码器根据其工作原理和输出信号的特点,可以大致分为以下几类:

  1. 增量式旋转编码器
    • 增量式旋转编码器是最常见的一种类型。它输出的是与旋转角度增量成正比的脉冲信号。通过检测A、B两相的脉冲数量和相位差,可以确定旋转的方向和角度。增量式编码器结构简单,成本较低,但每次上电或复位后,需要借助外部设备或算法来确定起始位置。
  2. 绝对值式旋转编码器
    • 绝对值式旋转编码器在旋转过程中,每个角度位置都对应一个唯一的编码值。即使断电或重启,也能直接读取当前的角度位置,无需重新校准。这种编码器通常使用二进制、格雷码或BCD码等方式进行编码,具有较高的抗干扰能力和可靠性。
  3. 混合式旋转编码器
    • 混合式旋转编码器结合了增量式和绝对值式的特点。它既能提供增量式的脉冲信号,又能通过内部寄存器或外部接口输出当前的绝对位置值。这种编码器在需要同时满足高精度和快速定位的应用场合中非常有用。
  4. 单圈与多圈旋转编码器
    • 单圈旋转编码器只能测量一圈内的旋转角度或位移量。而多圈旋转编码器则能够记录并输出多圈旋转的累积值,适用于需要大范围旋转测量的场合。

六、旋转编码器的选型与应用注意事项

  1. 精度与分辨率
    • 根据应用需求选择合适的精度和分辨率。精度要求高的场合应选择高分辨率的编码器。
  2. 输出信号类型
    • 根据控制系统或处理电路的兼容性,选择合适的输出信号类型(如TTL、HTL、RS-422等)。
  3. 工作环境
    • 考虑工作环境中的温度、湿度、振动、电磁干扰等因素,选择适合该环境的编码器。
  4. 安装方式
    • 根据机械设备的结构和空间限制,选择合适的安装方式(如轴向安装、径向安装等)。
  5. 防护等级
    • 根据应用场合的防尘、防水需求,选择具有相应防护等级的编码器。
  6. 成本考虑
    • 在满足性能要求的前提下,综合考虑编码器的成本,选择性价比高的产品

七、旋转编码器的发展趋势

随着工业自动化、智能制造和物联网技术的快速发展,旋转编码器作为重要的传感器元件,也在不断地发展和创新。未来,旋转编码器的发展趋势可能包括以下几个方面:

  1. 更高精度与更高分辨率
    • 随着精密制造技术的进步,旋转编码器的精度和分辨率将得到进一步提升,以满足更高精度的测量需求。
  2. 智能化与网络
    • 将智能芯片网络通信技术融入旋转编码器,实现数据的远程传输、实时监测和智能分析,提高系统的自动化水平和智能化程度。
  3. 小型化与集成化
    • 随着电子元器件的小型化和集成化趋势,旋转编码器也将朝着更小的体积和更高的集成度方向发展,以适应更紧凑的机械设备空间。
  4. 多功能化与定制化
    • 根据不同应用场合的特定需求,开发具有多种功能和定制化特性的旋转编码器,以满足用户的个性化需求。
  5. 环保与可持续发展
    • 注重旋转编码器的环保性能和可持续发展能力,采用环保材料和节能设计,降低产品的生命周期成本和环境影响。

总之,旋转编码器作为工业自动化和精密测量领域中的重要传感器元件,其性能和应用范围将随着技术的不断进步而不断拓展。未来,旋转编码器将在更多领域发挥重要作用,为智能制造和物联网技术的发展提供有力支持。

八、带 Arduino 的旋转编码器设计

1、带 Arduino 的旋转编码器设计(一)

旋转编码器可用于计数操作,它将旋转角度转换为计数数字信号,可以无限制地旋转360°并给出脉冲输出。本文将提供基本的 Arduino 旋转编码器接口细节以及传统旋转编码器的操作。

旋转编码器

image.png

该旋转编码器分线板有五个引脚,

  • GND → 接地电源
    • → +5V 电源
  • SW → 按钮开关
  • DT → 编码器引脚 B
  • CLK → 编码器引脚 A

当轴顺时针旋转时,编码器引脚 A 处生成与编码器引脚 B 90° 异相的输出脉冲。

顺便说一句,当轴逆时针旋转时,编码器输出引脚 A 和 B 处生成的输出会反转。

旋转编码器Arduino接口

将旋转编码器的电源引脚连接到Arduino板,+连接到5V,Gnd连接到Gnd。然后将 CLK(编码器输出 A)引脚连接到 Arduino 数字引脚 D2,将 DT(编码器输出 B)引脚连接到数字引脚 D1。完成连接后,上传以下草图以获取串行监视器中旋转编码器的角度和位置。

旋转编码器的 Arduino 代码

#define encoderOutA 2 // CLK pin of Rotary Enocoder
 #define encoderOutB 1 // DT pin of Rotary Enocoder
 
 int counter = 0; 
 int presentState;
 int previousState;  
 void setup() { 
   pinMode (encoderOutA,INPUT);
   pinMode (encoderOutB,INPUT);
   
   Serial.begin (9600);
      previousState = digitalRead(encoderOutA);   // Get current state of the encoderOutA
 } 
 void loop() { 
   presentState = digitalRead(encoderOutA); 
      if (presentState != previousState)
      {     
          if (digitalRead(encoderOutB) != presentState) 
          { 
       counter ++;
     } 
     else {
       counter --;
     }
     Serial.print("Position: ");
     Serial.println(counter);
   } 
   previousState = presentState; // Replace previous state of the encoderOutA with the current state
 }

在Arduino代码中,首先定义输出引脚并将计数初始化为0,然后声明当前和先前的状态变量。通过使用“IF”条件循环,获取旋转编码器的当前状态并与之前的状态进行比较。如果没有变化,则计数保持不变,否则,顺时针旋转时计数值增加,逆时针旋转时计数值减少。

2、带 Arduino 的旋转编码器设计(二)

介绍

为了确定旋转轴的角位置,使用了称为旋转编码器的传感器。因此,传感器根据旋转产生电信号。该传感器在包装、纺织、印刷、机器人等不同行业有着广泛的应用。因此,在本文中,我们将连接“旋转编码器与 Arduino UNO”。旋转编码器是电位计的现代化数字等效物,但它们的适应性更强。

概述

硬件概述

该模块包括一个圆盘,该圆盘具有连接到公共引脚 C 的等距接触区域,以及另外两个接触引脚 A 和 B。

这个特殊的模块位于一个带有五个引脚的分线板上,我们将在本次 Arduino 演示中使用它。第一个是输出 A 引脚,第二个是输出 B 引脚,第三个是 Button 引脚,最后两个引脚是 VCC 和 GND 引脚。

工作准则

当圆盘开始逐步旋转时,引脚A和B将与公共引脚接触,从而产生两个方波输出信号。如果我们只计算信号的脉冲,我们就可以使用两个输出中的任何一个来确定旋转位置。然而,如果我们希望确定旋转方向,则必须同时分析两个信号。

两个输出信号始终彼此相差 90 度。如果编码器顺时针旋转,输出 A 将领先于输出 B。

旋转编码器和电位器的区别

旋转电位器和编码器之间最明显的区别是,编码器可以沿任一方向连续旋转,而电位器只能顺时针或逆时针旋转一定的量,然后必须停止。

因此,当您需要知道旋钮的确切位置时,电位器是最佳选择。另一方面,旋转编码器适用于您只需要知道位置变化而不是确切位置的情况。

电路原理

image.png

Arduino代码

// Rotary Encoder Inputs
#define CLK 2
#define DT 3
#define SW 4

int counter = 0;
int currentStateCLK;
int lastStateCLK;
String currentDir ="";
unsigned long lastButtonPress = 0;

void setup() {
	
	// Set encoder pins as inputs
	pinMode(CLK,INPUT);
	pinMode(DT,INPUT);
	pinMode(SW, INPUT_PULLUP);

	// Setup Serial Monitor
	Serial.begin(9600);

	// Read the initial state of CLK
	lastStateCLK = digitalRead(CLK);
}

void loop() {
	
	// Read the current state of CLK
	currentStateCLK = digitalRead(CLK);

	// If last and current state of CLK are different, then pulse occurred
	// React to only 1 state change to avoid double count
	if (currentStateCLK != lastStateCLK  && currentStateCLK == 1){

		// If the DT state is different than the CLK state then
		// the encoder is rotating CCW so decrement
		if (digitalRead(DT) != currentStateCLK) {
			counter --;
			currentDir ="CCW";
		} else {
			// Encoder is rotating CW so increment
			counter ++;
			currentDir ="CW";
		}

		Serial.print("Direction: ");
		Serial.print(currentDir);
		Serial.print(" | Counter: ");
		Serial.println(counter);
	}

	// Remember last CLK state
	lastStateCLK = currentStateCLK;

	// Read the button state
	int btnState = digitalRead(SW);

	//If we detect LOW signal, button is pressed
	if (btnState == LOW) {
		//if 50ms have passed since last LOW pulse, it means that the
		//button has been pressed, released and pressed again
		if (millis() - lastButtonPress > 50) {
			Serial.println("Button pressed!");
		}

		// Remember last button press event
		lastButtonPress = millis();
	}

	// Put in a slight delay to help debounce the reading
	delay(1);
}

工作说明

要了解Arduino UNO的旋转编码器,请根据电路图连接电路或按照连接表进行连接。然后在Arduino IDE中编写上面给出的代码,并将其上传到ARDUINO UNO中。 Arduino 处理代码并控制编码器的输出。因此,您将根据您的代码观察旋转编码器的旋转。

代码说明

  • 首先,定义编码器的引脚,连接到Arduino的不同引脚。例如,CLK引脚连接到Arduino的引脚2,DT连接到引脚3,SW连接到引脚4。然后定义将在代码中使用的不同变量。变量计数器代表旋转电位器旋钮时的计数。变量currentStateCLKlastStateCLK用于保持 CLK 输出的状态。 currentDir 变量已定义为稍后用于在监视器上打印方向。并且,lastButtonPress被定义为消除开关抖动。
  • 在 void 设置中,我们已将编码器的引脚声明为输入。此外,为了从 CLK 引脚读取值,我们提供了digitalRead (CLK ) 函数,并将该读数存储在变量lastStateCLK中。
  • 在 void 循环中,为了从 CLK 引脚读取当前状态,我们再次提供函数 digitalRead (CLK), 并将其存储在currentStateCLK中。然后我们给出if语句,将lastStateCLKcurrentStateCLK进行比较,以确定旋转的状态方向。如果不同,则说明旋钮为逆时针方向。然后我们将电流设置为 CWW。如果相等,则说明旋钮为顺时针方向。然后我们将 currentDir 设置为 CW。之后,我们用当前状态更新lastStateCLK。然后我们读取开关按钮状态并给出 if 函数。并且,根据该函数,如果按钮保持低电平超过 50 毫秒,则会打印Button Pressed在串行监视器上。 ## 应用及用途
  • 在传送带中控制速度和方向。
  • 它可用于在各种电子项目中将大量输入压缩为少量输出。
  • 挤压机、压力机、焊机和不同的自动化金属成型机械。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 传感器
    +关注

    关注

    2550

    文章

    51035

    浏览量

    753053
  • 旋转编码器
    +关注

    关注

    5

    文章

    158

    浏览量

    25953
  • Arduino
    +关注

    关注

    188

    文章

    6468

    浏览量

    186947
收藏 人收藏

    评论

    相关推荐

    Arduino开发板的旋转编码器如何使用

    在本篇文章中,我们将学习如何在Arduino开发板上使用旋转编码器。我们将以带符号的数字同时显示顺时针和逆时针方向的编码值。 所需的组件 ● Ard
    的头像 发表于 10-26 15:47 8058次阅读
    <b class='flag-5'>Arduino</b>开发板的<b class='flag-5'>旋转</b><b class='flag-5'>编码器</b>如何使用

    旋转编码器的作用及工作原理

    准确解析编码器的数字输出。本文将介绍旋转编码器的作用及其工作原理。然后说明如何解释其信号,最后再介绍几个编码器解决方案及其实际应用。
    发表于 02-22 06:09

    旋转编码器的原理和特点有哪些

    旋转编码器工作原理一、旋转编码器的原理和特点旋转
    发表于 07-06 07:56

    旋转编码器工作原理是什么

    旋转编码器的引脚CLK(A相)DATA(B相)SWITCHVCCGND工作原理旋转编码器工作原理
    发表于 01-12 07:31

    旋转编码器,旋转编码器是什么意思

    旋转编码器,旋转编码器是什么意思 旋转编码器概要
    发表于 03-03 15:27 2377次阅读

    旋转编码器测量_旋转编码器安装方式

    本文主要介绍了旋转编码器测量及安装方法。旋转编码器检测直线位移方法具体如下:使用“弹性连轴”将旋转
    发表于 08-06 11:40 3933次阅读
    <b class='flag-5'>旋转</b><b class='flag-5'>编码器</b>测量_<b class='flag-5'>旋转</b><b class='flag-5'>编码器</b>安装方式

    旋转编码器拆卸方法_旋转编码器型号说明

    本文首先介绍了旋转编码器拆卸方法,其次阐述了旋转编码器更换步骤,最后介绍了旋转编码器型号说明。
    发表于 08-06 11:48 1.8w次阅读

    旋转编码器能直接换吗_旋转编码器更换注意事项

    本文首先介绍了旋转编码器更换步骤,其次介绍了旋转编码器更换注意事项,最后介绍了旋转编码器替换原则
    发表于 08-06 14:18 9775次阅读

    旋转编码器如何工作?有哪些类型?

    在本文中,我们将了解不同类型的旋转编码器及其工作原理。我们还将它与 Arduino 连接,并通过旋转编码
    的头像 发表于 11-10 16:04 5745次阅读
    <b class='flag-5'>旋转</b><b class='flag-5'>编码器</b>如何<b class='flag-5'>工作</b>?有哪些类型?

    什么是旋转编码器 旋转编码器工作原理

    旋转编码器是一种常见的传感,它能够通过检测旋转轴的转动实现实时位置监测与控制。它具有高精度、长寿命、可重复性高、体积小等特点,因此在机器人
    发表于 06-09 10:16 2314次阅读
    什么是<b class='flag-5'>旋转</b><b class='flag-5'>编码器</b> <b class='flag-5'>旋转</b><b class='flag-5'>编码器</b>的<b class='flag-5'>工作原理</b>

    旋转编码器是什么?浅读旋转编码器工作原理特点及应用

    旋转编码器是什么?浅读旋转编码器工作原理特点及应用:旋转
    的头像 发表于 05-29 09:21 3433次阅读
    <b class='flag-5'>旋转</b><b class='flag-5'>编码器</b>是什么?浅读<b class='flag-5'>旋转</b><b class='flag-5'>编码器</b><b class='flag-5'>工作原理</b>与<b class='flag-5'>特点</b>及应用

    旋转编码器能直接换吗_旋转编码器更换注意事项

    旋转编码器更换步骤第一步,卸开电机后盖,编码器的后盖。第二步,松开编码器安装螺丝。第三步,旋转电机转子轴,使
    的头像 发表于 11-12 08:07 1675次阅读
    <b class='flag-5'>旋转</b><b class='flag-5'>编码器</b>能直接换吗_<b class='flag-5'>旋转</b><b class='flag-5'>编码器</b>更换注意事项

    旋转编码器工作原理旋转编码器的作用功能及应用

    旋转编码器是用于测量轴或轴旋转的组件。它们通常用于音频设备、DIY 游戏控制中的音量旋钮,或用作不同 Arduino 或 Raspberr
    的头像 发表于 02-11 09:53 5630次阅读
    <b class='flag-5'>旋转</b><b class='flag-5'>编码器</b>的<b class='flag-5'>工作原理</b>,<b class='flag-5'>旋转</b><b class='flag-5'>编码器</b>的作用功能及应用

    旋转编码器的常见类型

    详细介绍旋转编码器的常见类型,包括增量式编码器和绝对式编码器两大类,并对它们的特点工作原理、应
    的头像 发表于 05-29 15:59 909次阅读

    旋转编码器工作原理特点

    旋转编码器,作为现代工业自动化系统中不可或缺的一部分,其工作原理特点对于理解其应用及优化系统性能具有重要意义。本文将详细阐述旋转
    的头像 发表于 05-29 16:01 1209次阅读