Hogyan működik a Rotary Encoder és illessze össze az Arduino-val

Hogyan Mukodik A Rotary Encoder Es Illessze Ossze Az Arduino Val



A Rotary Encoder egy fontos elektromechanikus eszköz, amely sokrétű felhasználással rendelkezik az elektronika területén. Ez a cikk elmagyarázza a forgó kódoló típusait és működését, valamint az Arduino-val való interfészét.

Mi az a Rotary Encoder

A forgó jeladó egy digitális bemeneti eszköz, amely érzékeli a forgatógomb szöghelyzetét, és jeleket küld a mikrokontrollernek vagy bármely más eszköznek, amelyhez csatlakoztatva vannak. Megállás nélkül 360°-ban elforgathatók. Tengelykódolónak is nevezik. Nyomtatókban, audioelektronikában, motorokban és vezérlőkben használják.









A forgó jeladók típusai

Főleg kétféle forgójeladó létezik, amelyeket az általuk generált kimeneti jel alapján határoznak meg. Ezeknek a típusoknak a neve:



Inkrementális forgó jeladó

Az ilyen típusú jeladó a forgatógomb fordulatait impulzusok formájában számolja. A gomb egyszeri elforgatásakor impulzus generálódik. Minden impulzusnál a számláló növekszik, jelezve a tengely szöghelyzetét.





Absolute Rotary Encoder

Ez a típusú jeladó megadja a tengely abszolút szöghelyzetét, mivel minden tengelyhelyzethez külön kódja van, és ezen keresztül méri a szöget. Nincs szüksége számlálóra a szöghelyzet kimenetének megadásához. Még ha az abszolút forgójeladó feszültségmentes is van, a szöghelyzetek megfelelő értékei megmaradnak. Ez is egy alacsony költségű kódoló.



A Rotary Encoder működése

A forgó jeladó egy olyan lemezből áll, amelyek egyenlő távolságra vannak elhelyezve egy földelt közös C érintkezőhöz csatlakoztatva. A másik két tüske A és B érintkezőcsapok, amelyek a forgatógomb elforgatásakor érintkeznek a C-vel. Amikor az A vagy B érintkező a földhöz kapcsolódik, jel generálódik. Ezek a kimeneti érintkezők által generált jelek 90°-ban fázison kívül vannak. Ennek az az oka, hogy az A tű csatlakozik a földhöz, amikor a gombot az óramutató járásával megegyező irányba forgatja, és a B érintkező először a földhöz kapcsolódik, amikor a gombot az óramutató járásával ellentétes irányba forgatja. Ezért ezeken a csatlakozásokon keresztül határozzák meg a gomb forgásirányát.

Ha az állam a B nem egyenlő A , majd a gomb az óramutató járásával megegyező irányban elfordult.


Ha B állapota egyenlő A-val, akkor a gomb az óramutató járásával ellentétes irányba fordult.

A Rotary Encoder pin-konfigurációja

Az alábbi diagram a forgó jeladó kivezetését mutatja, amelyen láthatók az A és B kimeneti érintkezők, egy nyomógombként használható forgókapcsoló, valamint a tápegység érintkezői.

A Rotary Encoder tűs leírása

Az alábbiakban az összes forgó jeladó érintkezőjének leírása található.

Out B vagy CLK

Ez a tű jelzi, hogy a gomb vagy a forgó jeladó hányszor fordult el. Minden alkalommal, amikor a gombot elforgatják, a CLK befejezi a HIGH és LOW ciklust. Egy fordulatnak számít.

Out A vagy DT

Ez a forgó jeladó második kimeneti érintkezője, amely meghatározza a forgásirányt. 90°-kal elmarad a CLK jeltől. Ezért, ha az állapota nem egyenlő a CLK állapotával, akkor a forgásirány az óramutató járásával megegyező, ellenkező esetben az óramutató járásával ellentétes.

Kapcsoló

A kapcsolócsap segítségével ellenőrizhető, hogy a nyomógomb meg van-e nyomva vagy sem.

VCC

Ez a tű 5 V-os tápegységhez van csatlakoztatva

GND

Ez a tű csatlakozik a földhöz

A Rotary Encoder összekapcsolása az Arduino-val

A forgó jeladó öt érintkezős. A forgó kódoló VCC-je és GND-je csatlakozik az Arduino-hoz. A fennmaradó CLK, DT és SW érintkezők az Arduino digitális bemeneti érintkezőihez csatlakoznak.

Arduino kód a Rotary Encoderhez

// Rotary Encoder bemenetek
#define CLK_PIN 2
#define DT_PIN 3
#define SW_PIN 4
int számláló = 0 ;
int currentCLKState;
int lastCLKState;
Húráram iránya = '' ;
aláíratlan long lastButtonPressTime = 0 ;
üres beállítás ( ) {
// Állítsa be a kódoló érintkezőit mint bemenetek
    pinMode ( CLK_PIN, INPUT ) ;
    pinMode ( DT_PIN, BEMENET ) ;
    pinMode ( SW_PIN, INPUT_PULLUP ) ;
// Soros monitor beállítása
Serial.begin ( 9600 ) ;
// Olvassa el a CLK kezdeti állapotát
lastCLKState = digitalRead ( CLK_PIN ) ;
}
üres hurok ( ) {
// Olvassa el a CLK aktuális állapotát
currentCLKState = digitalRead ( CLK_PIN ) ;
// Ha a utolsó és a CLK jelenlegi állapota más, akkor pulzus keletkezett
// Csak erre reagáljon 1 állapotváltoztatás a kétszeres számítás elkerülése érdekében
ha ( jelenlegiCLKSállapot ! = lastCLKState && currentCLKState == 1 ) {
// Ha a DT állapota eltér a CLK állapottól, akkor
// A kódoló az óramutató járásával ellentétes irányban forog, így a csökkenés
ha ( digitalRead ( DT_PIN ) ! = aktuálisCLKSállapot ) {
számláló--;
currentDirection = 'CCW' ;
} más {
// A kódoló az óramutató járásával megegyező irányban forog, ezért növelje
számláló++;
currentDirection = 'CW' ;
}
Serial.print ( 'Forgatás iránya:' ) ;
Serial.print ( aktuálisDirection ) ;
Serial.print ( ' | Ellenérték: ' ) ;
Serial.println ( számláló ) ;
}
// Emlékezzen a utolsó CLK állapot
lastCLKState = jelenlegiCLKState;
// Olvassa el a gomb állapotát
int buttonState = digitalRead ( SW_PIN ) ;
// Ha LOW jelet észlelünk, megnyomjuk a gombot
ha ( buttonState == ALACSONY ) {
// Ha 50 ms telt el azóta utolsó LOW impulzus, ez azt jelenti, hogy a
// gombot megnyomta, felengedte, majd újra megnyomta
ha ( millis ( ) - lastButtonPressTime > ötven ) {
Serial.println ( 'A gomb megnyomva!' ) ;
}
// Emlékezzen a utolsó gombnyomás esemény idő
lastButtonPressTime = millis ( ) ;
}
// Tedd ban ben enyhe késéssel Segítség visszaverni az olvasást
késleltetés ( 1 ) ;
}


A fent megadott kódban a CLK láb állapotát a loop() függvényben ellenőrizzük. Ha nem egyezik meg az előző állapotával, az azt mutatja, hogy a forgatógomb elfordult. Most a gomb forgásirányának ellenőrzéséhez a CLK jelenlegi állapotát összehasonlítjuk a DT állapotával. Ha mindkét állapot nem egyenlő, akkor ez azt mutatja, hogy a gomb az óramutató járásával megegyező irányban elfordult, és az ellenérték növeli az értékét, hogy megjelenítse a forgatógomb helyzetét. Ellenkező esetben a számláló csökken.

Következtetés

A forgójeladók fejlett helyzetérzékelők, amelyek folyamatosan foroghatnak. Két típusban kaphatók: növekményes és abszolút. A forgó jeladó a gomb forgása miatt generált impulzusok számlálásával működik. Sokrétű alkalmazási területe van a mindennapi élet elektronikájában az ipari automatizálásig.