一個旋轉編碼器或軸編碼器是一種機電裝置,用于改變軸的運動,角度位置。這些編碼器有兩種類型,絕對式編碼器和增量式編碼器。這 絕對值編碼器 輸出指示軸的當前位置,而 增量編碼器 輸出提供有關軸運動的數(shù)據(jù),這些數(shù)據(jù)可以是與速度、距離和位置相關的數(shù)據(jù)。旋轉編碼器主要用于機械系統(tǒng)和計算機輸入設備中需要監(jiān)視和控制的地方。因此,本文討論了旋轉編碼器的一種類型,即增量編碼器及其與應用的關系。
用于將軸的位置或角運動轉換為模擬代碼或數(shù)字代碼以識別運動或位置的編碼器稱為增量編碼器。這些 編碼器的類型 是最常用的旋轉編碼器。這些編碼器主要用于基于定位和電機速度反饋的應用,如工業(yè)、輕型或伺服、重型等。
增量編碼器的工作原理是,它的工作原理是通過光盤將軸的角位置改變?yōu)槊}沖或數(shù)字信號。每轉一圈,就會產(chǎn)生脈沖數(shù),其中每個脈沖都是與定義的分辨率相關的增量。
這 增量編碼器規(guī)格包括以下內(nèi)容。
?工作電壓范圍為 5V 至 24V。
?脈沖為 500 P/R。
?輸出波形為方波。
?回轉速度為 6000 RPM。
?軸的直徑為4mm。
?機身直徑為25毫米。
有不同的 增量編碼器輸出類型.選擇此編碼器時,應確定需要哪種輸出才能與將使用編碼器信號的應用設備完美匹配。選擇不正確的輸出類型將影響無法正常工作的系統(tǒng),硬件可能會損壞。 因此,在這里我們解釋了三種輸出類型的增量解碼器,如TTL,HTL和開放收集器。
術語“HTL”代表“高晶體管邏輯”。這些電路可以在圖騰設計中設計有兩個晶體管,以產(chǎn)生輸出通道,以確保信號為低或高。這些電路的電源電壓范圍通常為 8V 至 30 VDC。該電路的輸出電壓電平等于接通后施加的電壓。同樣,一旦關閉,信號將被拉出以提供。
這種輸出型電路用于PLC、運動控制器等其他接收設備需要12V或24V電平信號的地方。
RS422電路提供穩(wěn)定的5V信號,不依賴于電源電壓。TTL(晶體管-晶體管邏輯)提供 RS422 輸出信號,該信號為 +5VDC。對于任何輸入電壓,您將獲得輸出,例如在低條件下為0V,否則在高條件下為5V。
RS422 的差分輸出將提供出色的抗噪性、快速的信號響應以及利用長電纜的能力。不同型號編碼器的電源電壓范圍為 4.5 至 5.5VDC 或 10V 至 30VDC。
此輸出類型是一旦輸出停用且信號在激活時被拉低,則通過浮動信號電平的灌電流輸出。這種電路設計簡單,因此用于基于短電纜長度的應用。與HTL或TTL相比,集電極開路通常更容易受到電噪聲的影響。
增量編碼器用作基于 Arduino 的電路中的輸入。這些可用于增加或減少不同任務的變量值,例如 電機速度控制 或控制 LED 亮度。這里用于Arduino的旋轉編碼器模塊是KY-040。該模塊的引腳配置包括五個引腳,將在下面討論。
?GND是一個地線連接。
?VCC 為 5V 或 3.3V 電源。
?SW 是按鈕開關的輸出(按下時為 0V,靜止時為 5V。
?DT 是數(shù)據(jù)輸出。
?CLK 是時鐘輸出。
增量式編碼器接線圖如下所示。
在這個增量編碼器接線電路中,增量編碼器簡單地連接到Arduino UNO板。該模塊的SW引腳可以直接連接到Arduino的引腳4,CLK引腳連接到引腳2,DT引腳連接到Arduino板的引腳-3。該模塊的 VCC 直接連接到 +5V,該模塊的 GND 引腳連接到 Arduino 的 GND 引腳,如下所示。
旋轉增量編碼器的旋鈕后,Arduino 程序將檢測 CLK 線內(nèi)的變化。之后,它會驗證 DT 引腳的狀況。
如果兩者相似,則表示編碼器在 CLK 方向上腐爛,否則,它逆時針旋轉。對于同時進行的每次檢測,變量計數(shù)器的值也可以根據(jù)方向增加或減少。
帶增量編碼器的 Arduino 接口示例程序
以下程序用于旋轉編碼器的按鈕條件。如果按下按鈕,則程序將作為“按下按鈕”打印到監(jiān)視器上,并打印計數(shù)脈沖數(shù)的現(xiàn)值。
旋轉編碼器輸入
#define CLK 2
#define DT 3
#define SW 4
整數(shù)計數(shù)器 = 0;
int currentStateCLK;
int lastStateCLK;
字符串當前目錄 =“”;
無符號長最后按鈕按 = 0;
void setup() {
將編碼器引腳設置為輸入
引腳模式(CLK,輸入);
引腳模式(DT,輸入);
引腳模式(軟件,INPUT_PULLUP);
設置串行監(jiān)視器
串行開始(9600);
讀取 CLK 的初始狀態(tài)
lastStateCLK = digitalRead(CLK);
}
void loop() {
讀取 CLK 的當前狀態(tài)
currentStateCLK = digitalRead(CLK);
如果 CLK 的上次狀態(tài)和當前狀態(tài)不同,則發(fā)生脈沖
僅對 1 個狀態(tài)更改做出反應,以避免重復計數(shù)
if (currentStateCLK != lastStateCLK && currentStateCLK == 1){
// 如果 DT 狀態(tài)不同于 CLK 狀態(tài),則
// 編碼器正在逆時針旋轉,因此遞減
if (digitalRead(DT) != currentStateCLK) {
counter –;
currentDir =”逆時針”;
} 別的 {
// 編碼器正在順時針旋轉,因此遞增
計數(shù)器 ++;
currentDir =”CW”;
}
Serial.print(“方向:”);
Serial.print(currentDir);
Serial.print(” | 計數(shù)器:”);
Serial.println(計數(shù)器);
}
// 記住最后的 CLK 狀態(tài)
lastStateCLK = currentStateCLK;
// 讀取按鈕狀態(tài)
int btnState = digitalRead(SW);
//如果我們檢測到 LOW 信號,則按下按鈕
if (btnState == LOW) {
//如果自上次 LOW 脈沖以來已經(jīng)過去 50 毫秒,則意味著
//按鈕已被按下、釋放并再次按下
if (millis() – lastButtonPress > 50) {
Serial.println(“按下按鈕!”);
}
// 記住最后一個按鈕按下事件
lastButtonPress = millis();
}
// 稍微延遲一下以幫助消除讀取
延遲(1);
}
相關傳感器產(chǎn)品型號
?Baumer OptoTurn EN580E.ML絕對式工業(yè)編碼器
?Baumer GM400- SSI絕對值工業(yè)編碼器
?Baumer EN580C Profibus絕對式工業(yè)編碼器
?Baumer ITD 01 A4Y1增量式工業(yè)編碼器
?Baumer OptoPulse EN580E.IL增量式工業(yè)編碼器
?Baumer optoPulse EIL580-B增量式工業(yè)編碼器
?Baumer EIL580P-SC增量式工業(yè)編碼器。
相關閱讀:
相關閱讀:
?IMU 傳感器工作原理及其應用
?電壓傳感器購買指南,電壓傳感器購買注意事項
?應變片的工作原理及應變片的種類類型有哪些?