LEGO-旋轉編碼器

出自YFRobotwiki
在2021年5月25日 (二) 17:02由Allblue對話 | 貢獻所做的修訂版本

(差異) ←上個修訂 | 最新修訂 (差異) | 下一修訂→ (差異)
跳轉到: 導覽搜尋
LEGO-旋轉編碼器


產品簡介


LEGO旋轉編碼器採用EC11旋轉編碼器設計製作,通過旋轉可計數正反向轉動輸出的脈衝數;不同於電位器,旋轉編碼器沒有角度限制。

LEGO旋轉編碼器具有統一的兼容樂高積木的外殼,可輕鬆完成樂高積木的拼接,實現創意設計。

擴展閱讀

EC11旋轉編碼器是一種增量編碼器,特點:可以規避信號抖動引起的誤差;

增量編碼器是一種將旋轉位移轉換為一連串數字脈衝信號的旋轉式感測器。這些脈衝用來控制角位移。在Eltra編碼器中角位移的轉換採用了光電掃描原理。讀數系統以由交替的透光窗口和不透光窗口構成的徑向分度盤(碼盤)的旋轉為依據,同時被一個紅外光源垂直照射,光把碼盤的圖像投射到接收器表面上。接收器覆蓋著一層衍射光柵,它具有和碼盤相同的窗口寬度。接收器的工作是感受光碟轉動所產生的變化,然後將光變化轉換成相應的電變化。再使低電平信號上升到較高電平,併產生沒有任何干擾的方形脈衝,這就必須用電子電路來處理。讀數系統通常採用差分方式,即將兩個波形一樣但相位差為180°的不同信號進行比較,以便提高輸出信號的質量和穩定性。讀數是再兩個信號的差別基礎上形成的,從而消除了干擾。

更多編碼器參數請查看頁末 --> 參考資料。


規格參數


  • 供電電壓:DC3.3V~5V
  • 信號類型:數字輸入
  • 一圈脈衝數:20個
  • 介面類型:PH2.0-4P
  • 外形尺寸:單位mm,整體高度23mm

樂高兼容模塊外殼尺寸.png


引腳說明

LEGO-旋轉編碼器-PINOUT


應用示例


示例需要硬體:

  • Arduino UNO
  • Arduino UNO 專用擴展板
  • 旋轉編碼器模塊
  • 線材

電路連接示意圖

旋轉編碼器的 G、V、A、B分別連接 Arduino UNO的GND、VCC、D9、D10引腳。

連接示意圖

Arduino IDE示例代碼

複製代碼至Arduino IDE中編譯上傳

/*
  Read Quadrature Encoder
   - 旋钮编码器测试
 
  This example code is in the public domain.
  Author     : YFROBOT ZL
  Website    : www.yfrobot.com.cn
  Create Time: 2021-02-19
*/
 
/*** 顺时针 位置增加 逆时针 位置减小 ***/
#define encoderPinA 9  // A相
#define encoderPinB 10 // B相
 
int encoderPos = 0;
int encoderPinALast = HIGH;
int encoderPinANow = HIGH;
 
int encoderPinBLast = HIGH;
int encoderPinBNow = HIGH;
 
void setup() {
  pinMode(encoderPinA, INPUT);
  pinMode(encoderPinB, INPUT);
  Serial.begin (115200);
}
 
void loop() {
  encoderPinANow = digitalRead(encoderPinA);
  encoderPinBNow = digitalRead(encoderPinB);
 
  if (encoderPinALast != encoderPinANow) {
    Serial.print("A-Now:");
    Serial.print(encoderPinANow);
    Serial.print("\tB-Now:");
    Serial.print(encoderPinBNow);
    Serial.println();
  }
  encoderPinBNow = digitalRead(encoderPinB);
  if (encoderPinBLast != encoderPinBNow) {
    Serial.print("A-Now:");
    Serial.print(encoderPinANow);
    Serial.print("\tB-Now:");
    Serial.print(encoderPinBNow);
    Serial.println();
  }
 
  if ((encoderPinALast == LOW) && (encoderPinANow == HIGH)) {   //A相 上升沿
    if (encoderPinBNow == LOW) { // B相 低电平 状态
      encoderPos++;
      Serial.print("CW \t");
    } else {
      encoderPos--;
      Serial.print("CCW \t");
    }
    Serial.println(encoderPos);
  }
 
  encoderPinALast = encoderPinANow;
  encoderPinBLast = encoderPinBNow;
}

Mixly示例代碼

MixlyV1.1.5、YFlego庫V0.1.1

LEGO-旋轉編碼器-Mixly示例


Mind+示例代碼

Mind+ 1.7

LEGO-旋轉編碼器-Mind+示例

程序運行結果

旋轉編碼器,串口輸出:

LEGO-旋轉編碼器-串口輸出


參考資料





訪問YFRobot論壇 論壇邀請碼獲取 技術交流群
淘寶企業店 淘寶直營店 聯繫我們