Jaka jest różnica między potencjometrem Arduino a enkoderem obrotowym

Jaka Jest Roznica Miedzy Potencjometrem Arduino A Enkoderem Obrotowym



Potencjometry i enkodery obrotowe służą do wykrywania obrotu lub wykrywania pozycji. Są to urządzenia elektromechaniczne stosowane mające różnorodne zastosowania w dziedzinie elektroniki. Można je również połączyć z Arduino w celu tworzenia różnych projektów. Ten artykuł ma na celu zademonstrowanie podstawowych różnic między potencjometrem a enkoderem obrotowym.

Co to jest potencjometr

Potencjometr jest reostatem lub możemy go nazwać rezystorem zmiennym. Wartość rezystancji zmienia się w zależności od obrotu wałka potencjometru. Potencjometry mogą obracać się tylko na określoną odległość. Istnieją zarówno potencjometry analogowe, jak i cyfrowe, ale są one prawie podobne. Potencjometry analogowe można łączyć z mikrokontrolerami w Arduino, Raspberry Pi i innych urządzeniach. Potencjometr posiada trzy piny, którymi są pin napięcia wejściowego Vcc, pin uziemienia GND i pin sygnału wejściowego. Pin sygnałowy zapewnia wejście do Arduino.









Co to jest enkoder obrotowy

Enkodery wyczuwają położenie kątowe pokrętła i wysyłają sygnał do mikrokontrolera lub innego urządzenia, do którego są podłączone. Posiada dysk z równomiernie rozmieszczonymi obszarami styków, które są połączone wspólnym pinem. Enkodery obrotowe mają również wbudowany przycisk lub przełącznik obrotowy, który podaje sygnały WŁ. i WYŁ. zgodnie z określonymi wymaganiami.







Schemat pinów i opis pinów enkodera obrotowego

Poniższy schemat przedstawia piny enkodera obrotowego. Te piny są opisane w następujący sposób:

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

Różnica między potencjometrem a enkoderem obrotowym

Specyfikacja Potencjometr Enkoder obrotowy
Obrót Potencjometr można obracać tylko w jednym kierunku i to również przez trzy czwarte okręgu. Rotary Encoder może obracać się w sposób ciągły o 360° zarówno w kierunku zgodnym z ruchem wskazówek zegara, jak i przeciwnym do ruchu wskazówek zegara.
Urządzenie analogowe lub cyfrowe Potencjometr jest w większości analogowym urządzeniem wejściowym, które mierzy zmianę położenia poprzez zmianę wartości rezystora Enkoder obrotowy to cyfrowe urządzenie wejściowe, które wykrywa położenie kątowe i dostarcza wartości cyfrowe.

Liczba pozycji wejściowych Potencjometr ma nieskończoną liczbę pozycji wejściowych, na których można przyjmować wartości, ponieważ jest to urządzenie analogowe Enkodery obrotowe mają skończoną liczbę pozycji wejściowych.

Konfigurowanie potencjometru z Arduino

Potencjometr jest łatwiejszy do skonfigurowania za pomocą Arduino niż enkoder obrotowy. Potencjometr ma tylko trzy piny VCC, GND i pin INPUT, który jest podłączony do Arduino. Interfejs potencjometru z Arduino pokazano poniżej:

Programowanie potencjometru w Arduino jest łatwiejsze niż w przypadku enkodera obrotowego. Poniżej podano przykładowe kody składni dla obu z nich.

Przykładowy kod dla potencjometru

const int pot = A0; // Zadeklaruj pin wejściowy
unieważnić konfigurację ( ) {
Tryb pinów ( garnek, WEJŚCIE ) ; // Wartość nastawy pobierana z potencjometru Jak wejście
Serial.początek ( 9600 ) ;
}
pusta pętla ( ) {
int potValue = analogRead ( garnek ) ; // Odczytać wartość wejścia pobranego przez potencjometr
mapa ( wartość puli, 0 , 1023 , 0 , 255 ) ; // Skalowanie wartości wejściowej w celu dopasowania 8 -fragment
Serial.println ( Wartość puli ) ; // Drukuje wartość wprowadzoną do potencjometru
opóźnienie ( 100 ) ;
}

Kod potencjometru jest bardzo łatwy i prosty. Pin wejścia analogowego Arduino jest po prostu deklarowany do pobierania danych wejściowych z potencjometru, a następnie funkcje analogRead() i map() są używane do odczytu i podania dokładnej wartości odczytu z potencjometru.

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;
Ciąg bieżącyKierunek = '' ;
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 i aktualny stan CLK są różne, 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 zmniejszaj
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 = aktualnyCLKStan;
// 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 wciś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ę.

Aplikacje

Potencjometry są stosowane głównie tam, gdzie wymagana jest funkcja sterowania. Stosowane są w regulacji głośności, regulacji jasności diod LED. Z drugiej strony enkodery obrotowe oferują szeroki zakres zastosowań. Znajdują zastosowanie w robotyce, sprzęcie medycznym, automatyce i grach.

Wniosek

Potencjometry i enkodery obrotowe są szczególnie przydatnymi urządzeniami w dziedzinie elektroniki. Enkodery obrotowe są zaawansowane w porównaniu z potencjometrami, ponieważ mogą obracać się w sposób ciągły do ​​360°. Podobnie mają więcej zastosowań we współczesnej elektronice i są nieco trudniejsze w obsłudze niż potencjometry .