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