<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
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

    文章

    146

    瀏覽量

    25789
  • Arduino
    +關注

    關注

    185

    文章

    6434

    瀏覽量

    185199
收藏 人收藏

    評論

    相關推薦

    Arduino開發板的旋轉編碼器如何使用

    ● 1602 LCD顯示屏 ● 連接電線 ● 面包板 旋轉編碼器 旋轉編碼器(Rotary Encoder),也稱為軸
    的頭像 發表于 10-26 15:47 ?7353次閱讀
    <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 ?4128次閱讀

    增量編碼器與絕對型編碼器的區別

    增量編碼器與絕對型編碼器的區別 編碼器如以信號原理來分,有增量編碼器,絕對型
    發表于 09-26 17:36 ?2475次閱讀

    ENHP旋轉編碼器應用及接線

    便捷手搖型增量旋轉編碼器特點:適用于數控機床,磨床等的手動脈沖輸入、緊急停止開關,ENABLE開關、適用于4位,6位旋轉開關。編碼器如以信號
    發表于 10-25 09:47 ?19次下載
    ENHP<b class='flag-5'>旋轉</b><b class='flag-5'>編碼器</b>應用及接線

    旋轉增量編碼器與絕對編碼器的區別是什么

    增量旋轉編碼器,也叫圓光柵、脈沖碼盤,從這些名稱可以知道,它是圓形的光柵刻線碼盤,旋轉后通過光通量的明暗變化,產生脈沖,通過外部設備的計數脈沖,來
    的頭像 發表于 03-15 17:03 ?1w次閱讀

    基于Sensor API如何添加增量旋轉編碼器的驅動

    增量旋轉編碼器作為輸入器件廣泛用于各種設備,例如汽車音響的音量調節,收音機頻率調節,示波器上的旋鈕。但遺憾的是在Zephyr中并沒有增量旋轉
    的頭像 發表于 07-28 09:55 ?2032次閱讀

    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 ?4236次閱讀
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>