Jak działa enkoder obrotowy i łączy go z Arduino

Jak Dziala Enkoder Obrotowy I Laczy Go Z Arduino



Rotary Encoder to ważne urządzenie elektromechaniczne, które ma różnorodne zastosowania w dziedzinie elektroniki. Ten artykuł wyjaśni typy i działanie enkodera obrotowego wraz z jego interfejsem z Arduino.

Co to jest enkoder obrotowy

Enkoder obrotowy to cyfrowe urządzenie wejściowe, które wykrywa położenie kątowe pokrętła i wysyła sygnały do ​​mikrokontrolera lub innego urządzenia, do którego jest podłączone. Mogą obracać się o 360° bez zatrzymywania. Jest również nazywany enkoderem wału. Jest stosowany w drukarkach, elektronice audio, silnikach i kontrolerach.









Rodzaje enkoderów obrotowych

Istnieją głównie dwa typy enkoderów obrotowych, które są wybierane na podstawie generowanego przez nie sygnału wyjściowego. Te typy nazywają się:



Inkrementalny enkoder obrotowy

Ten typ enkodera zlicza obroty pokrętła w postaci impulsów. Gdy pokrętło zostanie raz obrócone, generowany jest impuls. Dla każdego impulsu licznik zwiększa się, wskazując położenie kątowe wału.





Absolutny enkoder obrotowy

Ten typ enkodera podaje bezwzględną pozycję kątową wału, ponieważ ma osobny kod dla każdej pozycji wału i mierzy kąt poprzez ten kod. Nie potrzebuje licznika, aby podać położenie kątowe. Nawet jeśli enkoder absolutny nie jest zasilany, odpowiednie wartości pozycji kątowych pozostają zachowane. Jest to również tani enkoder.



Działanie enkodera obrotowego

Enkoder obrotowy składa się z dysku z równo rozmieszczonymi obszarami, połączonego ze wspólnym wtykiem C, który jest uziemiony. Dwa pozostałe styki A i B to styki, które stykają się z C podczas obracania pokrętła. Gdy pin A lub B zostanie podłączony do masy, generowany jest sygnał. Te sygnały generowane z pinów wyjściowych są przesunięte w fazie o 90°. Dzieje się tak, ponieważ pin A zostaje podłączony do masy, gdy pokrętło jest obracane zgodnie z ruchem wskazówek zegara, a pin B zostaje podłączony do uziemienia jako pierwszy, gdy pokrętło jest obracane w kierunku przeciwnym do ruchu wskazówek zegara. Dlatego kierunek obrotu pokrętła jest określany przez te połączenia.

Jeśli stan B nie jest równy A , to pokrętło obróciło się zgodnie z ruchem wskazówek zegara.


Jeśli stan B jest równy A, pokrętło obróciło się w kierunku przeciwnym do ruchu wskazówek zegara.

Konfiguracja pinów enkodera obrotowego

Poniższy schemat przedstawia układ pinów enkodera obrotowego, który pokazuje piny wyjściowe A i B, przełącznik obrotowy, który może być używany jako przycisk, oraz piny do zasilania.

Pin Opis enkodera obrotowego

Poniżej podano opis wszystkich pinów enkodera obrotowego.

Wyjście B lub CLK

Ten pin podaje informację o tym, ile razy obróciło się pokrętło lub enkoder obrotowy. Za każdym razem, gdy pokrętło jest obracane, CLK kończy cykl HIGH i LOW. Jest to liczone jako jeden obrót.

Out A lub DT

Jest to drugi pin wyjściowy enkodera obrotowego, który określa kierunek obrotów. Opóźnia się o 90° za sygnałem CLK. Dlatego jeśli jego stan nie jest równy stanowi CLK, to kierunek obrotu jest zgodny z ruchem wskazówek zegara, w przeciwnym razie przeciwnie do ruchu wskazówek zegara.

Przełącznik

Kołek przełącznika służy do sprawdzenia, czy przycisk jest wciśnięty, czy nie.

VCC

Ten pin jest podłączony do zasilania 5V

GND

Ten pin jest podłączony do masy

Połączenie enkodera obrotowego z Arduino

Enkoder obrotowy ma pięć pinów. VCC i GND enkodera obrotowego są połączone z Arduino. Pozostałe piny CLK, DT i SW są podłączone do pinów wejścia cyfrowego Arduino.

Kod Arduino dla enkodera obrotowego

// Wejścia enkodera obrotowego
# zdefiniuj CLK_PIN 2
#definiuj DT_PIN 3
# zdefiniuj SW_PIN 4
int licznik = 0 ;
int bieżący CLKStan;
int ostatniCLKStan;
Kierunek prądu łańcucha = '' ;
unsigned long lastButtonPressTime = 0 ;
unieważnić konfigurację ( ) {
// Ustaw piny enkodera Jak wejścia
    tryb pin ( CLK_PIN, WEJŚCIE ) ;
    tryb pin ( DT_PIN, WEJŚCIE ) ;
    tryb pin ( SW_PIN, INPUT_PULLUP ) ;
// Skonfiguruj monitor szeregowy
Serial.początek ( 9600 ) ;
// Odczytaj stan początkowy CLK
lastCLKState = odczyt cyfrowy ( CLK_PIN ) ;
}
pusta pętla ( ) {
// Przeczytaj aktualny stan CLK
bieżący CLKStan = odczyt cyfrowy ( CLK_PIN ) ;
// jeśli ostatni a obecny stan CLK jest inny, Następnie pojawił się puls
// Reaguj tylko na 1 zmienić stan, aby uniknąć podwójnego liczenia
Jeśli ( bieżący CLKStan ! = ostatni stan CLK && bieżący CLKStan == 1 ) {
// Jeżeli stan DT jest inny niż stan CLK, Następnie
// Enkoder obraca się w kierunku przeciwnym do ruchu wskazówek zegara, więc dekrementacja
Jeśli ( cyfrowyCzytaj ( DT_PIN ) ! = bieżący CLKStan ) {
lada--;
bieżącyKierunek = „lewo w lewo” ;
} w przeciwnym razie {
// Enkoder obraca się zgodnie z ruchem wskazówek zegara, więc inkrementuj
licznik++;
bieżącyKierunek = „CW” ;
}
Wydruk.seryjny ( 'Kierunek obrotu: ' ) ;
Wydruk.seryjny ( bieżącyKierunek ) ;
Wydruk.seryjny ( ' | Wartość licznika: ' ) ;
Serial.println ( lada ) ;
}
// Zapamiętaj ostatni Stan CLK
ostatniCLKStan = bieżącyCLKStan;
// Odczytaj stan przycisku
int stan przycisku = cyfrowy odczyt ( SW_PIN ) ;
// Jeśli wykryjemy sygnał NISKI, przycisk zostanie wciśnięty
Jeśli ( Stan przycisku == NISKI ) {
// Jeśli minęło 50 ms od ostatni NISKI puls oznacza, że
// przycisk został naciśnięty, zwolniony i ponownie naciśnięty
Jeśli ( milis ( ) - lastButtonPressTime > pięćdziesiąt ) {
Serial.println ( „Przycisk wciśnięty!” ) ;
}
// Zapamiętaj ostatni zdarzenie naciśnięcia przycisku czas
lastButtonPressTime = milis ( ) ;
}
// Umieścić W małe opóźnienie do pomoc odrzucić odczyt
opóźnienie ( 1 ) ;
}


W powyższym kodzie stan pinu CLK sprawdzany jest w funkcji loop(). Jeśli nie jest równy poprzedniemu stanowi, oznacza to, że pokrętło się obróciło. Teraz, aby sprawdzić kierunek obrotu pokrętła, porównuje się aktualny stan CLK ze stanem DT. Jeśli oba stany są nierówne, oznacza to, że pokrętło obróciło się zgodnie z ruchem wskazówek zegara, a licznik zwiększa swoją wartość, aby pokazać położenie pokrętła. W przeciwnym przypadku licznik zmniejsza się.

Wniosek

Enkodery obrotowe to zaawansowane czujniki położenia, które mogą obracać się w sposób ciągły. Dostępne są w dwóch rodzajach: przyrostowym i bezwzględnym. Enkoder obrotowy działa na zasadzie zliczania impulsów generowanych w wyniku obracania pokrętła. Ma różnorodne zastosowania w codziennej elektronice do automatyki przemysłowej.