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

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

3天内不再提示

如何将增量旋转编码器与Arduino连接

科技观察员 来源:electroschematics 作者:electroschematics 2024-02-11 10:00 次阅读

在本教程中,您将学习如何将增量旋转编码器Arduino连接,以读取旋钮的运动。这对于在机器人和其他应用程序中创建用户界面或读取机械位置非常有用。

您需要的器件

Arduino开发板

1x 增量式旋转编码器(像这样)

4个10 kΩ电阻(R1、R2)

2x 0.1uF 电容器 (C1, C2)

面包板

原理图和试验板设置

请注意,在此原理图中,我直接使用旋转编码器,因此它需要一些额外的元件。但您也可以购买旋转编码器板,在板上包含这些额外的组件,以使连接更简单。

1.png

原理图中的VDD仅指Arduino的5V电压。

连接此旋转编码器所需的额外组件的连接取自旋转编码器数据表中的建议滤波电路。如果您使用的是不同的编码器,请务必查看数据表中的“建议滤波电路”,因为它可能不同。

它是如何工作的

该电路的工作原理是查看旋转编码器的两个引脚 A 和 B,并检查它们中哪一个先于另一个引脚为高电平。如果 A 先于 B 走高,那就是一个方向。如果 B
先于 A 走高,则方向相反。

连接Arduino旋转编码器电路

在下图中,您可以看到如何将完整的示例电路连接到面包板上,以及将其连接到Arduino所需的接线。

2.png

分步说明

将旋转编码器连接到面包板。

将两个10 kΩ电阻R1和R2从A和B置于5V。

将两个 10 kΩ 电阻 R3 和 R4 分别从 A 和 B 连接到 Arduino 数字引脚 10 和 11。

如图所示放置0.1uF电容(C1和C2),使编码器信号去抖动。

将 C 点接地。

使用 USB 数据线将 Arduino 连接到您的计算机。

将以下代码上传到您的 Arduino。此代码初始化旋转编码器,并在每次转动编码器时使用中断来更新位置计数。

结果将打印到串行端口,以便您可以从串行监视器中读取结果。

// Define the pins used for the encoder
const int encoderPinA = 10;
const int encoderPinB = 11;

// Variables to keep the current and last state
volatile int encoderPosCount = 0;
int lastEncoded = 0;

void setup() {
  Serial.begin(9600);

  // Set encoder pins as input with pull-up resistors
  pinMode(encoderPinA, INPUT_PULLUP); 
  pinMode(encoderPinB, INPUT_PULLUP);

  // Attach interrupts to the encoder pins
  attachInterrupt(digitalPinToInterrupt(encoderPinA), updateEncoder, CHANGE);
  attachInterrupt(digitalPinToInterrupt(encoderPinB), updateEncoder, CHANGE);
}

void loop() {
  static int lastReportedPos = -1; // Store the last reported position
  if (encoderPosCount != lastReportedPos) {
    Serial.print("Encoder Position: ");
    Serial.println(encoderPosCount);
    lastReportedPos = encoderPosCount;
  }
}

void updateEncoder() {
  int MSB = digitalRead(encoderPinA); // MSB = most significant bit
  int LSB = digitalRead(encoderPinB); // LSB = least significant bit

  int encoded = (MSB < < 1) | LSB; // Converting the 2 pin value to single number
  int sum  = (lastEncoded < < 2) | encoded; // Adding it to the previous encoded value

  if(sum == 0b1101 || sum == 0b0100 || sum == 0b0010 || sum == 0b1011) encoderPosCount++;
  if(sum == 0b1110 || sum == 0b0111 || sum == 0b0001 || sum == 0b1000) encoderPosCount--;

  lastEncoded = encoded; // Store this value for next time
}

上传此代码后,您可以以 9600 的波特率打开串行监视器,以查看编码器的移动在旋转时的变化。

如果编码器值不稳定或未按预期变化,请根据原理图仔细检查接线,并确保电阻器和电容器正确放置以进行去抖动。
审核编辑:陈陈

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 旋转编码器
    +关注

    关注

    5

    文章

    143

    浏览量

    25732
  • Arduino
    +关注

    关注

    184

    文章

    6427

    浏览量

    184834
收藏 人收藏

    评论

    相关推荐

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

    ● 1602 LCD显示屏 ● 连接电线 ● 面包板 旋转编码器 旋转编码器(Rotary Encoder),也称为轴
    的头像 发表于 10-26 15:47 7209次阅读
    <b class='flag-5'>Arduino</b>开发板的<b class='flag-5'>旋转</b><b class='flag-5'>编码器</b>如何使用

    增量旋转编码器

    请问有没有了解增量旋转编码器的高手,帮我解决一下一直困扰我问题:1.关于编码器内部的内插细分 有的码的内插细分值有1,2,4,6,10,
    发表于 10-16 14:30

    关于增量旋转编码器

    5脚增量旋转编码器,想测转角和转数,完全没有头绪,接线也有疑问,知道怎么弄的快来!!
    发表于 08-28 11:53

    利用Arduino增量式光电编码器测量速度

    利用Arduino增量式光电编码器测量速度、方向、位移。材料:Arduino mega 2560分辨率256ABZ相增量
    发表于 09-03 06:02

    STM32 Arduino是如何读取编码器旋转位置方向的

    旋转编码器的原理是什么?如何去编写STM32配置Arduino的程序?STM32 Arduino是如何读取编码器
    发表于 11-15 08:01

    增量旋转编码器设计

    阅读目录一、增量旋转编码器二、硬件设计三、软件设计Development kit:MDK5.14IDE:UV4MCU:STM32F103C8T6回到顶部一、增量
    发表于 12-01 07:57

    如何将2个旋转编码器与nodemcu和arduino一起使用?

    您好,我想将 2 个旋转编码器与 nodemcu 和 arduino 一起使用。我一直在使用 ESProtary 库https://github.com/LennartHennigs
    发表于 02-23 08:59

    RHI 74 增量旋转编码器

    如果要在增量编码器后方安装额外的部件,就可以使用RHI 74产品线系列的增量编码器.为此,该旋转编码
    发表于 10-08 07:49 45次下载

    如何使用增量编码器

    如何使用增量编码器 1,增量旋转编码器有分辨率的差异,使用每圈产生的脉冲数来计量,数目从6到5400或更高,脉冲数越多,分辨
    发表于 09-26 17:35 4095次阅读

    增量编码器与绝对型编码器的区别

    增量编码器与绝对型编码器的区别 编码器如以信号原理来分,有增量编码器,绝对型
    发表于 09-26 17:36 2410次阅读

    ENHP旋转编码器应用及接线

    便捷手摇型增量旋转编码器特点:适用于数控机床,磨床等的手动脉冲输入、紧急停止开关,ENABLE开关、适用于4位,6位旋转开关。编码器如以信号
    发表于 10-25 09:47 19次下载
    ENHP<b class='flag-5'>旋转</b><b class='flag-5'>编码器</b>应用及接线

    旋转增量编码器与绝对编码器的区别是什么

    增量旋转编码器,也叫圆光栅、脉冲码盘,从这些名称可以知道,它是圆形的光栅刻线码盘,旋转后通过光通量的明暗变化,产生脉冲,通过外部设备的计数脉冲,来
    的头像 发表于 03-15 17:03 9995次阅读

    基于Sensor API如何添加增量旋转编码器的驱动

    增量旋转编码器作为输入器件广泛用于各种设备,例如汽车音响的音量调节,收音机频率调节,示波器上的旋钮。但遗憾的是在Zephyr中并没有增量旋转
    的头像 发表于 07-28 09:55 1979次阅读

    STM32-增量旋转编码器测量

    阅读目录一、增量旋转编码器二、硬件设计三、软件设计Development kit:MDK5.14IDE:UV4MCU:STM32F103C8T6回到顶部一、增量
    发表于 11-22 20:06 44次下载
    STM32-<b class='flag-5'>增量</b>式<b class='flag-5'>旋转</b><b class='flag-5'>编码器</b>测量

    增量编码器有哪些优点与缺点?

    增量编码器是能够依据旋转运动形成信号的编码器,其刻度方式为每一个脉冲都进行增量测算,因此得名。是能够依据
    的头像 发表于 02-16 17:37 4056次阅读