Jak funguje rotační kodér a jeho propojení s Arduinem

Jak Funguje Rotacni Koder A Jeho Propojeni S Arduinem



Rotary Encoder je důležité elektromechanické zařízení, které má rozmanité využití v oblasti elektroniky. Tento článek vysvětlí typy a fungování rotačního kodéru spolu s jeho propojením s Arduinem.

Co je rotační kodér

Otočný kodér je digitální vstupní zařízení, které snímá úhlovou polohu otočného knoflíku a posílá signály do mikrokontroléru nebo jakéhokoli jiného zařízení, ke kterému jsou připojeny. Mohou se otáčet o 360° bez zastavení. Říká se mu také hřídelový kodér. Používá se v tiskárnách, audio elektronice, motorech a ovladačích.









Typy rotačních kodérů

Existují hlavně dva typy rotačních kodérů, které se rozhodují na základě výstupního signálu, který generují. Tyto typy se jmenují:



Inkrementální rotační kodér

Tento typ kodéru počítá otáčky otočného knoflíku ve formě impulsů. Když jednou otočíte knoflíkem, generuje se pulz. Pro každý impuls se počítadlo zvyšuje, aby indikovalo úhlovou polohu hřídele.





Absolutní rotační kodér

Tento typ kodéru udává absolutní úhlovou polohu hřídele, protože má samostatný kód pro každou polohu hřídele a měří úhel přes tento kód. Pro výstup úhlové polohy nepotřebuje čítač. I když je absolutní rotační kodér bez napětí, příslušné hodnoty úhlových poloh zůstanou zachovány. Je to také levný kodér.



Práce rotačního kodéru

Rotační kodér se skládá z disku se stejně rozmístěnými oblastmi připojeného ke společnému kolíku C, který je uzemněn. Dva další kolíky A a B jsou kontaktní kolíky, které jsou v kontaktu s C při otáčení otočného knoflíku. Když se pin A nebo B spojí se zemí, generuje se signál. Tyto signály generované z výstupních pinů jsou fázově posunuty o 90°. Je to proto, že kolík A se připojí k zemi, když otočíte knoflíkem ve směru hodinových ručiček, a kolík B se připojí k zemi jako první, když otočíte knoflíkem proti směru hodinových ručiček. Směr otáčení knoflíku je tedy určen těmito spoji.

Pokud je stav B se nerovná A , pak se knoflík otočil ve směru hodinových ručiček.


Pokud je stav B roven A, knoflík se otočil proti směru hodinových ručiček.

Konfigurace kolíků otočného kodéru

Níže uvedené schéma ukazuje vývod otočného kodéru, který ukazuje výstupní kolíky A a B, otočný přepínač, který lze použít jako tlačítko, a kolíky pro napájení.

Pin Popis rotačního kodéru

Následuje popis všech kolíků otočného kodéru.

Out B nebo CLK

Tento kolík udává, kolikrát se knoflík nebo otočný kodér otočil. Pokaždé, když otočíte knoflíkem, CLK dokončí cyklus HIGH a LOW. Počítá se to jako jedno otočení.

Out A nebo DT

Toto je druhý výstupní kolík otočného kodéru, který určuje směr otáčení. Za signálem CLK zaostává o 90°. Pokud se tedy jeho stav nerovná stavu CLK, směr otáčení je ve směru hodinových ručiček, v opačném případě proti směru hodinových ručiček.

Přepínač

Spínací špendlík se používá ke kontrole, zda je tlačítko stisknuto nebo ne.

VCC

Tento pin je připojen k napájení 5V

GND

Tento kolík je připojen k zemi

Propojení rotačního kodéru s Arduinem

Otočný kodér má pět kolíků. VCC a GND rotačního kodéru jsou připojeny k Arduinu. Zbývající piny CLK, DT a SW jsou připojeny k digitálním vstupním pinům Arduina.

Arduino kód pro rotační kodér

// Vstupy otočného kodéru
#define CLK_PIN 2
#define DT_PIN 3
#define SW_PIN 4
int čítač = 0 ;
int aktuálníCLKStav;
int lastCLKSate;
Směr proudu řetězce = '' ;
unsigned long lastButtonPressTime = 0 ;
neplatné nastavení ( ) {
// Nastavte piny kodéru tak jako vstupy
    pinMode ( CLK_PIN, INPUT ) ;
    pinMode ( DT_PIN, INPUT ) ;
    pinMode ( SW_PIN, INPUT_PULLUP ) ;
// Nastavení sériového monitoru
Serial.begin ( 9600 ) ;
// Přečtěte si počáteční stav CLK
lastCLKSate = digitalRead ( CLK_PIN ) ;
}
prázdná smyčka ( ) {
// Přečtěte si aktuální stav ČLK
currentCLKSate = digitalRead ( CLK_PIN ) ;
// Pokud poslední a současný stav CLK je jiný, pak došlo k pulzu
// Reagovat pouze na 1 změna stavu, aby se zabránilo dvojímu započtení
-li ( aktuální stav CLKS ! = poslední CLKSstav && aktuální CLKStav == 1 ) {
// Pokud je stav DT jiný než stav CLK, pak
// Kodér se otáčí proti směru hodinových ručiček, takže se snižuje
-li ( digitální čtení ( DT_PIN ) ! = aktuální stav CLKS ) {
čelit--;
currentDirection = 'CCW' ;
} jiný {
// Kodér se otáčí ve směru hodinových ručiček, takže zvyšujte
čítač++;
currentDirection = 'CW' ;
}
Sériový.tisk ( 'Směr otáčení:' ) ;
Sériový.tisk ( currentDirection ) ;
Sériový.tisk ( ' | Protihodnota: ' ) ;
Serial.println ( čelit ) ;
}
// Pamatujte si poslední stav CLK
lastCLKState = aktuálníCLKSstav;
// Přečtěte si stav tlačítka
int buttonState = digitalRead ( SW_PIN ) ;
// Pokud detekujeme signál LOW, je tlačítko stisknuto
-li ( buttonState == NÍZKÁ ) {
// Pokud uplynulo 50 ms od poslední NÍZKÝ puls, to znamená, že
// bylo stisknuto, uvolněno a znovu stisknuto tlačítko
-li ( milis ( ) - lastButtonPressTime > padesáti ) {
Serial.println ( 'Tlačítko stisknuto!' ) ;
}
// Pamatujte si poslední událost stisknutí tlačítka čas
lastButtonPressTime = milis ( ) ;
}
// Dát v mírné zpoždění Pomoc odrazit čtení
zpoždění ( 1 ) ;
}


Ve výše uvedeném kódu se stav pinu CLK kontroluje ve funkci loop(). Pokud se nerovná předchozímu stavu, ukazuje, že se otočný knoflík otočil. Nyní, pro kontrolu směru otáčení knoflíku, je aktuální stav CLK porovnán se stavem DT. Pokud jsou oba stavy nestejné, ukazuje to, že se knoflík otočil ve směru hodinových ručiček a počitadlo zvyšuje jeho hodnotu, aby se zobrazila poloha otočného knoflíku. V opačném případě počítadlo snižuje.

Závěr

Rotační snímače jsou pokročilé snímače polohy, které se mohou otáčet nepřetržitě. Jsou k dispozici ve dvou typech: přírůstkové a absolutní. Otočný kodér funguje tak, že počítá impulsy generované otáčením knoflíku. Má různé aplikace v každodenní elektronice až po průmyslovou automatizaci.