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

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

3天内不再提示

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

454398 来源:一板网 作者:风筝 2020-10-26 15:47 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

在本篇文章中,我们将学习如何在Arduino开发板上使用旋转编码器。我们将以带符号的数字同时显示顺时针和逆时针方向的编码值。

所需的组件

● Arduino UNO开发板

● 旋转编码器

● 1602 LCD显示屏

● 连接电线

● 面包板

旋转编码器

旋转编码器(Rotary Encoder),也称为轴编码器,是一种机电设备,可将轴或轴的角位置或运动转换为模拟或数字输出信号。旋转编码器有两种主要类型:绝对式和增量式。绝对值编码器的输出指示当前轴位置,从而使其成为角度传感器。增量编码器的输出提供有关轴运动的信息,通常将其所在位置处理为位置、速度和距离等信息。

连接电路图

下面的电路图简单演示了如何在Arduino上使用旋转编码器。在面包板或PCB上组装电路。

旋转编码器如何工作?

编码器具有一个磁盘,该磁盘具有均匀分布的接触区,这些接触区连接到公共引脚C和两个其他单独的接触引脚A和B,如下所示。

当磁盘逐步开始旋转时,引脚A和B将开始与公共引脚接触,因此将产生两个方波输出信号。

如果仅对信号的脉冲进行计数,则可以使用两个输出中的任何一个来确定旋转位置。但是,如果我们也要确定旋转方向,则需要同时考虑两个信号。

我们可以注意到,两个输出信号彼此之间相差90度。如果编码器顺时针旋转,则输出A将在输出B之前。

因此,如果我们每次计算信号从高到低或从低到高变化的步数,我们就会注意到两个输出信号的值相反。反之亦然,如果编码器逆时针旋转,则输出信号具有相等的值。因此,考虑到这一点,我们可以轻松地对控制器进行编程以读取编码器的位置和旋转方向。

源代码/程序

#include 《LiquidCrystal.h》

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

#define outputA 6

#define outputB 7

int counter = 0;

int aState;

int aLastState;

void setup() {

pinMode (outputA,INPUT);

pinMode (outputB,INPUT);

Serial.begin (9600);

lcd.begin(16,2);

// Reads the initial state of the outputA

aLastState = digitalRead(outputA);

}

void loop() {

aState = digitalRead(outputA); // Reads the “current” state of the outputA

// If the previous and the current state of the outputA are different, that means a Pulse has occured

if (aState != aLastState){

// If the outputB state is different to the outputA state, that means the encoder is rotating clockwise

if (digitalRead(outputB) != aState) {

counter ++;

lcd.clear();

} else {

counter --;

lcd.clear();

}

Serial.print(“Position: ”);

Serial.println(counter);

lcd.setCursor(0, 0);

lcd.print(“Position: ”);

lcd.setCursor(10, 0);

lcd.print(counter);

}

aLastState = aState; // Updates the previous state of the outputA with the current state

}
编辑:hfy

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

    关注

    45

    文章

    3903

    浏览量

    141437
  • 开发板
    +关注

    关注

    25

    文章

    6122

    浏览量

    113297
  • Arduino
    +关注

    关注

    190

    文章

    6515

    浏览量

    195960
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    Vishay USB编码器接口技术解析与应用指南

    Vishay/MCB Industrie RAMK/RAME USB编码器接口是一款设计用于Vishay MCB编码器(AMK和RAME系列,包括霍尔效应)的电子。该接口只需使用随
    的头像 发表于 11-12 11:51 385次阅读

    Vishay RAIK060 旋转绝对感应套件编码器技术解析

    Vishay RAIK060旋转绝对电感套件编码器专门用于电机驱动、机器人位置和具有精确定位的工业运动控制。这些编码器通过LED状态颜色轻松组装,对外部磁场、电场和温度不敏感。RAIK060
    的头像 发表于 11-11 11:31 332次阅读
    Vishay RAIK060 <b class='flag-5'>旋转</b>绝对感应套件<b class='flag-5'>编码器</b>技术解析

    国产编码器在人形机器人领域的进展

    电子发烧友网综合报道 编码器是测量旋转角度、位移及速度的传感,作为伺服系统的核心部件,在人形机器人领域,其数据反馈对实现机器人运动的精密控制与定位至关重要。   编码器种类丰富,按技
    的头像 发表于 09-24 09:41 1062次阅读

    多圈增量式编码器:工业自动化中的“旋转记忆大师”

    在工业自动化设备高速运转的场景中,一台风电齿轮箱的传动轴持续旋转了128圈,传统单圈编码器早已因数据溢出而“失忆”,而多圈增量式编码器却能精准记录每一圈的位移变化,为控制系统提供连续、可靠的位置反馈
    的头像 发表于 09-18 17:14 570次阅读

    如何用Arduino Nano/UNO R3开发板给另一个Arduino IDE不能下载的Arduino Nano/UNO R3开发板重新烧录引导程序bootlaoder

    本文介绍了如何用能够Arduino IDE下载的Arduino Nano/UNO R3开发板给另一个Arduino IDE不能下载的Arduino
    的头像 发表于 08-08 20:16 3060次阅读
    如何用<b class='flag-5'>Arduino</b> Nano/UNO R3<b class='flag-5'>开发板</b>给另一个<b class='flag-5'>Arduino</b> IDE不能下载的<b class='flag-5'>Arduino</b> Nano/UNO R3<b class='flag-5'>开发板</b>重新烧录引导程序bootlaoder

    新品|Unit Step16,16 定位BCD旋转编码器控制单元

    UnitStep16是一款基于STM32G031G8U6微控制的16定位旋转编码器控制单元。其核心功能在于实时采集旋转编码器的BCD
    的头像 发表于 08-01 17:35 1127次阅读
    新品|Unit Step16,16 定位BCD<b class='flag-5'>旋转</b><b class='flag-5'>编码器</b>控制单元

    一文读懂什么是磁性编码器

    磁性编码器是一种用于测量角度和线性位置的传感。它使用磁性信号来监测旋转或线性位置的变化,并把这些变化转换成数字信号。磁性编码器可用于各种应用中,比如机器人、汽车、数控机床等领域
    的头像 发表于 04-27 17:18 762次阅读

    技术分享|iTOP-RK3588开发板Ubuntu20系统旋转屏幕方案

    技术分享|iTOP-RK3588开发板Ubuntu20系统旋转屏幕方案
    的头像 发表于 04-18 15:19 1054次阅读
    技术分享|iTOP-RK3588<b class='flag-5'>开发板</b>Ubuntu20系统<b class='flag-5'>旋转</b>屏幕方案

    旋转编码器在永磁同步电机位置测量中的应用(可下载)

    旋转编码器能够满足高精度、高可靠性、低成本的设计要求。 那么将 AS5040 磁旋转编码器应用于永磁同步电机位置检测时,需要解决两个问题:一是 磁
    发表于 04-09 13:37 0次下载

    创新伺服电机使用的多圈绝对式旋转编码器

    为了适应越来越短伺服驱动的设计,使用多圈 绝对值旋转编码器的长度和直径也必须减少。 机器人和数控机床制造商比以往任何时候都 需要具有更高效率更精确和更紧凑型驱动。为 了满足这些未来
    发表于 03-12 16:58

    编码器与无轴承编码器,到底如何选择?

    :    ● 通常包含光传感和光栅。当轴旋转时,光栅会中断传感的光路,产生电脉冲,从而进行角度测量。    ● 内部轴承通常较小,不适合重载。编码器连接的轴必须沿其轴线对中,以免与
    的头像 发表于 03-11 15:33 987次阅读
    轴<b class='flag-5'>编码器</b>与无轴承<b class='flag-5'>编码器</b>,到底如何选择?

    磁环编码器:精准定位与高效旋转控制的创新解决方案

    在当今高度自动化与智能化的工业领域,每一个微小的运动控制都承载着关键的任务与期望。磁环编码器,作为旋转位置检测领域的明星产品,正以其卓越的性能、高精度的定位能力以及对恶劣环境的适应性,引领着旋转控制
    的头像 发表于 02-28 08:54 911次阅读

    DISCOAA编码器类型功能

    根据编码器的通用分类,我们可以推断DISCOAA编码器可能也包括绝对编码器和增量编码器。绝对编码器能够提供每个
    的头像 发表于 02-20 13:47 672次阅读

    旋转编码器选用国产铁电存储(​SF24C512)的5个理由

    旋转编码器选用国产铁电存储(​SF24C512)的5个理由
    的头像 发表于 02-20 09:42 848次阅读
    <b class='flag-5'>旋转</b><b class='flag-5'>编码器</b>选用国产铁电存储<b class='flag-5'>器</b>(​SF24C512)的5个理由

    用于 SPI 绝对编码器Arduino 示例代码

    : [Arduino ] [AMT22 编码器] [AMT-06C-1-036 电缆] ,或带有相应连接的类似电缆 [Arduino I
    的头像 发表于 01-26 21:35 1293次阅读
    用于 SPI 绝对<b class='flag-5'>编码器</b>的 <b class='flag-5'>Arduino</b> 示例代码