Koja je razlika između Arduino potenciometra i rotacijskog enkodera

Koja Je Razlika Izmedu Arduino Potenciometra I Rotacijskog Enkodera



I potenciometri i rotacijski enkoderi koriste se za otkrivanje rotacije ili očitavanje položaja. Oni su elektromehanički uređaji koji se koriste za različite primjene u području elektronike. Također se mogu povezati s Arduinom za izradu različitih projekata. Ovaj članak treba pokazati temeljne razlike između potenciometra i rotacijskog kodera.

Što je potenciometar

Potenciometar je reostat ili možemo ga nazvati promjenjivi otpornik. Vrijednost otpora varira ovisno o okretanju osovine potenciometra. Potenciometri se mogu okrenuti samo na zadanu udaljenost. Postoje i analogni i digitalni potenciometri, ali su gotovo slični. Analogni potenciometri mogu se povezati s mikrokontrolerima na Arduino, Raspberry Pi i drugim uređajima. Potenciometar ima tri pina koji su pin za ulazni napon Vcc, pin za uzemljenje GND i pin za ulazni signal. Signalni pin daje ulaz u Arduino.









Što je rotacijski enkoder

Rotacijski enkoderi bilježe kutni položaj okretnog gumba i šalju signal mikrokontroleru ili bilo kojem drugom uređaju na koji su spojeni. Ima disk s ravnomjerno raspoređenim kontaktnim površinama koje su spojene na zajednički klin. Rotacijski enkoderi također imaju ugrađeni gumb ili okretni prekidač koji daje signale ON i OFF prema specifičnim zahtjevima.







Dijagram pinova i opis pinova rotacijskog kodera

Donji dijagram prikazuje pinove rotacijskog kodera. Ove igle su opisane na sljedeći način:

Van B ili CLK



Ovaj pin daje izlaz koliko se puta gumb ili rotacijski enkoder okrenuo. Svaki put kada se gumb okrene, CLK dovršava ciklus HIGH i LOW. Računa se kao jedna rotacija.

Van A ili DT

Ovo je drugi izlazni pin rotacijskog enkodera koji određuje smjer vrtnje. Zaostaje 90° za CLK signalom. Stoga, ako njegovo stanje nije jednako stanju CLK-a tada je smjer rotacije u smjeru kazaljke na satu, u suprotnom, u suprotnom smjeru.

Sklopka

Zatik prekidača služi za provjeru je li tipka pritisnuta ili ne.

Vcc

Ovaj pin je spojen na napajanje od 5 V

GND

Ovaj pin je spojen na masu

Razlika između potenciometra i rotacijskog kodera

Specifikacija Potenciometar Rotacijski enkoder
Rotacija Potenciometar se može okretati samo u jednom smjeru, i to za tri četvrtine kruga. Rotacijski enkoder može se neprekidno okretati za 360° u smjeru kazaljke na satu iu suprotnom smjeru.
Analogni ili digitalni uređaj Potenciometar je uglavnom analogni ulazni uređaj koji mjeri promjenu položaja kroz promjenu vrijednosti otpornika Rotacijski enkoder je digitalni ulazni uređaj koji očitava kutni položaj i daje digitalne vrijednosti.

Broj ulaznih pozicija Potenciometar ima beskonačan broj ulaznih pozicija na kojima se mogu uzimati vrijednosti jer je analogni uređaj Rotacijski enkoderi imaju konačan broj ulaznih pozicija.

Postavljanje potenciometra s Arduinom

Potenciometar je lakše postaviti s Arduinom nego s rotacijskim koderom. Potenciometar ima samo tri pina VCC, GND i INPUT pin koji je spojen na Arduino. Dolje je prikazano sučelje potenciometra s Arduinom:

Programiranje potenciometra u Arduinu lakše je od programiranja rotacijskog kodera. U nastavku su dati primjeri kodova sintakse za oba.

Uzorak koda za potenciometar

const int pot = A0; // Deklarirajte ulazni pin
void setup ( ) {
   pinMode ( lonac, ULAZ ) ; // Postavljena vrijednost preuzeta s potenciometra kao ulazni
Serijski.početi ( 9600 ) ;
}
void petlja ( ) {
int PotValue = analogRead ( lonac ) ; // Očitajte vrijednost ulaza potenciometra
karta ( PotVrijednost, 0 , 1023 , 0 , 255 ) ; // Skaliranje vrijednosti unosa za podudaranje 8 -bit
Serijski.println ( PotVrijednost ) ; // Ispisuje vrijednost koja je unesena u potenciometar
odgoditi ( 100 ) ;
}

Kod potenciometra je vrlo lak i jednostavan. Analogni ulazni pin Arduina jednostavno je deklariran da prima ulaz od potenciometra, a zatim se funkcije analogRead() i map() koriste za očitavanje i davanje točne vrijednosti očitanja s potenciometra.

Povezivanje rotacijskog kodera s Arduinom

Rotacijski enkoder ima pet pinova. VCC i GND rotacijskog kodera spojeni su na Arduino. Preostali pinovi CLK, DT i SW spojeni su na digitalne ulazne pinove Arduina.

Arduino kod za rotacijski koder

// Ulazi za rotacijski koder
#define CLK_PIN 2
#define DT_PIN 3
#define SW_PIN 4
int brojač = 0 ;
int currentCLKState;
int lastCLKState;
String currentDirection = '' ;
unsigned long lastButtonPressTime = 0 ;
void setup ( ) {
// Postavite pinove kodera kao ulazi
    pinMode ( CLK_PIN, ULAZ ) ;
    pinMode ( DT_PIN, ULAZ ) ;
    pinMode ( SW_PIN, INPUT_PULLUP ) ;
// Postavljanje serijskog monitora
Serijski.početi ( 9600 ) ;
// Očitajte početno stanje CLK
lastCLKState = digitalRead ( CLK_PIN ) ;
}
void petlja ( ) {
// Pročitajte trenutno stanje CLK
currentCLKState = digitalRead ( CLK_PIN ) ;
// Ako posljednji i trenutno stanje CLK su različiti, zatim pojavio se puls
// Reagirajte samo na 1 promjena stanja kako bi se izbjeglo dvostruko brojanje
ako ( trenutno CLKS stanje ! = zadnje CLKS stanje && trenutno CLKS stanje == 1 ) {
// Ako je DT stanje različito od CLK stanja, zatim
// koder se okreće u smjeru suprotnom od kazaljke na satu, pa smanjite
ako ( digitalRead ( DT_PIN ) ! = trenutno CLKS stanje ) {
brojač--;
trenutni smjer = 'CCW' ;
} drugo {
// Enkoder se okreće u smjeru kazaljke na satu, pa povećavajte
brojač++;
trenutni smjer = 'CW' ;
}
Serijski.ispis ( 'Smjer rotacije: ' ) ;
Serijski.ispis ( trenutni smjer ) ;
Serijski.ispis ( ' | Protuvrijednost: ' ) ;
Serijski.println ( brojač ) ;
}
// Zapamtite posljednji CLK stanje
lastCLKState = trenutnoCLKSstate;
// Pročitajte stanje gumba
int buttonState = digitalRead ( SW_PIN ) ;
// Ako detektiramo LOW signal, tipka se pritisne
ako ( buttonState == LOW ) {
// Ako je prošlo 50 ms od posljednji NIZAK puls, znači da je
// tipka je pritisnuta, otpuštena i ponovno pritisnuta
ako ( millis ( ) - lastButtonPressTime > pedeset ) {
Serijski.println ( 'Gumb pritisnut!' ) ;
}
// Zapamtite posljednji događaj pritiska gumba vrijeme
lastButtonPressTime = millis ( ) ;
}
// Staviti u malo kašnjenje do Pomozite debounce čitanje
odgoditi ( 1 ) ;
}

U gore navedenom kodu, stanje CLK pina provjerava se u funkciji loop(). Ako nije jednak prethodnom stanju, to znači da se okretni gumb okrenuo. Sada, za provjeru smjera rotacije gumba, trenutno stanje CLK se uspoređuje sa stanjem DT. Ako su oba stanja nejednaka, to pokazuje da se gumb zakrenuo u smjeru kazaljke na satu, a brojač povećava svoju vrijednost kako bi pokazao položaj okretnog gumba. U suprotnom slučaju, brojač se smanjuje.

Prijave

Potenciometri se uglavnom koriste tamo gdje je potrebna funkcija upravljanja. Koriste se za kontrolu glasnoće, kontrolu svjetline LED dioda. S druge strane, rotacijski enkoderi nude širok raspon primjena. Koriste se u robotici, medicinskoj opremi, automatizaciji i igricama.

Zaključak

Potenciometri i rotacijski enkoderi posebno su korisni uređaji u području elektronike. Rotacijski enkoderi su napredniji u usporedbi s potenciometrima jer se mogu kontinuirano okretati do 360°. Slično tome, imaju više primjena u modernoj elektronici, a malo ih je teže koristiti od potenciometara .