步驟1:旋轉編碼器的脈沖流
以下旋轉編碼器產生的脈沖流與上圖類似。
步驟2:旋轉編碼器的引腳排列
說明:
GND-》 GND
+-》 + 5V
SW -》按下時旋轉編碼器的按鈕
DT-》數據
CLK-》數據2
DT之一或CLK引腳必須連接到Arduino Uno的中斷腳,或者DT和CLK都連接到中斷引腳。
步驟3:示意圖
GNDàGND Arduino Uno
+à+ 5V Arduino Uno
SWàPIN 4 Arduino Uno
DT àPIN 3 Arduino Uno
CLKàPIN2 Arduino Uno
第4步:代碼
在以下教程中,PI將用作中斷Arduino Uno的N 2,而PIN 3僅用作常規輸入。
#define encoder0PinA 2
#define encoder0PinB 3
#define encoder0Btn 4
int encoder0Pos = 0;
void setup() {
Serial.begin(9600);
pinMode(encoder0PinA, INPUT_PULLUP);
pinMode(encoder0PinB, INPUT_PULLUP);
pinMode(encoder0Btn, INPUT_PULLUP);
attachInterrupt(0, doEncoder, CHANGE);
}
int valRotary,lastValRotary;
void loop() {
int btn = digitalRead(encoder0Btn);
Serial.print(btn);
Serial.print(“ ”);
Serial.print(valRotary);
if(valRotary》lastValRotary)
{
Serial.print(“ CW”);
}
if(valRotary {
Serial.print(“ CCW”);
}
lastValRotary = valRotary;
Serial.println(“ ”);
delay(250);
}
void doEncoder()
{
if (digitalRead(encoder0PinA) == digitalRead(encoder0PinB))
{
encoder0Pos++;
}
else
{
encoder0Pos--;
}
valRotary = encoder0Pos/2.5;
}
上面草圖的第10行用于啟用Arduino Uno的2號插針的中斷。在“ doEncoder”功能中,由旋轉編碼器計算得出。如果DT和CLK(Arduino Uno的引腳中斷)的值相同,則“ encoder0Pos”變量將增加/添加,除此條件外,“ encoder0Pos”變量將減少。
步驟5:說明
ValRotary值是已運行的步驟數的值。 ValRotary值由旋轉傳感器編碼器讀數值除以2.5獲得。從測試中獲得的值為2.5,因為旋轉編碼器的一個步驟可能會超過1,因此請根據每個步長以及讀取延遲的增加將其值除以2.5。
第19-25行是確定旋轉旋轉編碼器是CW還是CCW的程序。第19-25行的解釋是當前的旋轉編碼器讀數大于先前的旋轉數據,然后表示為CW。
步驟6:輸出
責任編輯:wv
-
編碼器
+關注
關注
45文章
3786瀏覽量
137564 -
Arduino
+關注
關注
189文章
6495瀏覽量
190426
發布評論請先 登錄
磁旋轉編碼器在永磁同步電機位置測量中的應用(可下載)
軸編碼器與無軸承編碼器,到底如何選擇?

磁環編碼器:精準定位與高效旋轉控制的創新解決方案
用于 SPI 絕對編碼器的 Arduino 示例代碼

編碼器種類大觀:探索技術前沿與應用創新
二進制編碼器與絕對編碼器的區別
磁電編碼器和光電編碼器的區別
旋轉編碼器的類型以及選擇與設計注意要點

旋轉編碼器可以收集并發出什么信號,旋轉編碼器信號異常怎么處理
帶Arduino的旋轉編碼器設計 旋轉編碼器的工作原理和特點

評論