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

    文章

    158

    浏览量

    25953
  • Arduino
    +关注

    关注

    188

    文章

    6468

    浏览量

    186900
收藏 人收藏

    评论

    相关推荐

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

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

    增量旋转编码器设计

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

    RHI 74 增量旋转编码器

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

    增量编码器简介

      增量编码器是一种旋转位移转换为一连串数字脉冲信号的旋转式传感。这些脉冲用来控制角位移,如
    发表于 10-19 16:54 27次下载

    如何使用增量编码器

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

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

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

    Arduino旋转编码器的教程

    上面草图的第10行用于启用Arduino Uno的2号插针的中断。在“ doEncoder”功能中,由旋转编码器计算得出。如果DT和CLK(Arduino Uno的引脚中断)的值相同,
    的头像 发表于 10-31 08:59 1w次阅读
    <b class='flag-5'>Arduino</b><b class='flag-5'>旋转</b><b class='flag-5'>编码器</b>的教程

    增量旋转编码器工作原理及安装步骤

    增量旋转编码器没有固定的起始零点,输出的是与转角的增量成正比的脉冲,需要用计数来计脉冲数。
    的头像 发表于 03-21 11:43 1.1w次阅读

    如何将光学旋转编码器Arduino连接

    光学旋转编码器是一种机械设备,在圆柱形外壳的内部有一个旋转轴,其结构与电机相同。一个圆形的平盘,上面有两组插槽。光学传感安装在此光盘的两侧,发射
    的头像 发表于 05-07 14:42 6740次阅读

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

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

    STM32-增量旋转编码器测量

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

    增量旋转编码器

    电子发烧友网站提供《增量旋转编码器.pdf》资料免费下载
    发表于 09-03 11:51 0次下载
    <b class='flag-5'>增量</b><b class='flag-5'>旋转</b><b class='flag-5'>编码器</b>