u rotacijski enkoderi To su elektronske komponente koje su stekle popularnost u DIY projektima iu Arduino ekosistemu. Ovi uređaji omogućavaju očitavanje kretanje ose, što se prevodi u mogućnost praćenja brzina i ugaoni položaj različitih sistema. Međutim, unatoč tome koliko mogu biti korisni, često se miješaju s drugim uređajima kao što su npr potenciometri, što može dovesti do nesporazuma oko njegove upotrebe i funkcionalnosti.
U ovom članku ćemo detaljno objasniti šta rotacijski enkoderi, kako rade i kako možete koristiti jedan s Arduinom. Također ćemo pregledati veze, korištenje koda i neke praktične primjere koji će vam pomoći da ga integrirate u svoje projekte na efikasan način. Ali prije nego što uđemo u tehničke detalje, važno je razumjeti što ovaj uređaj čini jednim od favorita u projektima elektronike.
Šta je rotacijski enkoder?

Un rotacioni enkoder To je elektromehanički uređaj koji pretvara rotacijsko kretanje osovine u niz signala, obično digitalnih. Ove signale može koristiti sistem kao što je Arduino za tumačenje informacija koje se odnose na brzina okretanja, u pozicija ose pa čak i smjer rotacije. Za razliku od potenciometara, koji imaju ograničenje broja okreta, enkoderi se mogu rotirati neograničeno.
Postoje različite vrste rotacijskih enkodera, ali se mogu podijeliti u dvije velike kategorije: apsolutni e inkrementalni. Apsolutni enkoderi pružaju tačno očitavanje položaja osovine u svakom trenutku, bez obzira na to koliko je okretaja napravila. S druge strane, inkrementalni koderi samo snimaju relativno kretanje iz početne pozicije, bez apsolutne reference ugla.
Najčešći tip enkodera u DIY ili Arduino projektima je inkrementalni enkoder. Oni su jeftini, lako se nalaze i mogu se koristiti za širok spektar aplikacija kao što su kontrola jačine zvuka, podešavanje svjetline LCD ekrana, između ostalog. Osim toga, mnogi od njih uključuju dugme za pritiskanje, koje pomaže integrirati dodatne kontrolne radnje u vaše projekte.
Kako radi rotacijski enkoder
Srce rotacionog enkodera se sastoji od niza prekidi koji se aktiviraju svaki put kada se osovina okreće. Ovo generiše digitalni signal koji se može očitati elektronskim uređajem. Ovaj tip enkodera obično ima dva glavna izlaza, koji generišu signale u kvadraturnoj fazi. To znači da postoji pomak od 90 stepeni između oba signala, što omogućava ne samo brojanje zavoja, već i određivanje smjer rotacije (u smjeru kazaljke na satu ili suprotno od kazaljke na satu).
Uređaj obezbeđuje broj impulsa po okretu, a prema broju impulsa možemo preciznije odrediti kretanje ose. Standardni enkoder može imati od 20 do više od 256 impulsa po okretu, ovisno o modelu. The broje se impulsi koristeći kvadraturni sistem, koji takođe omogućava određivanje da li je rotacija bila u smeru kazaljke na satu (CW) ili suprotno od kazaljke na satu (CCW), što ga čini veoma praktičnim za sisteme rotacije. kontrola i navigacija.
Dodatno, ovi uređaji mogu uključivati dugme koje djeluje prilikom pritiskanja osovine. Ovo dugme vam omogućava da registrujete radnju kao da je dugme, što proširuje mogućnosti korišćenja. Ukratko, enkoder ne samo da omogućava snimanje rotacije ose, već i njene adresu y položaj u stvarnom vremenu.
Razlike između rotacionog enkodera i potenciometra
Vrlo je uobičajeno zbuniti a rotacioni enkoder sa a potenciometar zbog sličnog izgleda, ali postoje fundamentalne razlike koje ih razdvajaju. Potenciometar podešava vrijednost otpora prema kutu rotacije, osiguravajući analogni izlaz. Nasuprot tome, rotacijski enkoder generiše seriju digitalnih impulsa koji predstavljaju rotaciju osovine. Još jedna ključna razlika je u enkoderima može rotirati beskonačno, dok potenciometri imaju fizičko ograničenje broja zavoja.
Iz ovih razloga, koderi su idealni za situacije u kojima je potrebna kontinuirana i precizna kontrola rotacije, kao što su sistemi upravljanja motorima, dok se potenciometri obično koriste za podešavanje statičkih parametara kao što su jačina zvuka ili svjetlina.
Povezivanje enkodera na Arduino
Spojite rotacijski enkoder na a Arduino To je relativno jednostavno. Ovisno o modelu, enkoder će imati tri glavna izlaza: dva za kanale A i B i jedan za dugme. Taster se povezuje na Arduino digitalni ulaz, dok se kanali A i B povezuju na dva druga digitalna ulaza.
Za precizno očitavanje kretanja enkodera, preporučljivo je koristiti igle prekid na Arduinu za kanale A i B. Međutim, to nije uvijek potrebno. Ako vam je potrebna samo jednostruka ili dvostruka preciznost, očitavanja možete dobiti periodičnim prozivanjem ovih izlaza (polling), iako će to uticati na efikasnost koda.
Veza za tipičan projekat bi bila otprilike ovako:
- Kanal A spojen na D9
- Kanal B povezan na D10
- Taster spojen na D11
Važno je osigurati da su pinovi odabrani za prekide ispravni, jer svi pinovi na Arduino pločama ne podržavaju prekide. Ukratko, možete povezati enkoder bez prekida, ali preciznost će biti manja.
Kod za korištenje rotacijskog enkodera s Arduinom

Kod za čitanje enkodera sa Arduinom je jednostavan. U nastavku vam pokazujemo osnovni primjer za očitavanje broja impulsa generiranih u kanalu A, također određujući smjer rotacije uz pomoć kanala B. Ovo je jednostavna aproksimacija pomoću metode biračkih, ali ako vam je potrebna veća preciznost, možete modificirati kod za rad prekidi.
const int channelPinA = 9;
const int channelPinB = 10;
int prevStateChannelA = 0;
int value = 0;
unsigned long currentTime = 0;
unsigned long prevTime = 0;
void setup() {
Serial.begin(9600);
pinMode(channelPinA, INPUT);
pinMode(channelPinB, INPUT);
prevStateChannelA = digitalRead(channelPinA);
}
void loop() {
currentTime = millis();
int currentStateChannelA = digitalRead(channelPinA);
if (currentStateChannelA != prevStateChannelA) {
if (digitalRead(channelPinB) != currentStateChannelA) {
value++;
} else {
value--;
}
Serial.println(value);
prevStateChannelA = currentStateChannelA;
currentTime = millis();
}
}
Ovaj kod detektuje promjenu stanja na kanalu A i procjenjuje kanal B kako bi odredio smjer u kojem je enkoder rotiran. Svaki put kada se vrijednost promijeni, kod će ažurirati broj snimljenih impulsa i ispisati vrijednost na serijski monitor.
Primjeri uobičajene upotrebe
u rotacijski enkoderi Koriste se u širokom spektru, kako profesionalnih tako i kućnih aplikacija. U području Arduino projekata, mogu se koristiti za podešavanje parametara u realnom vremenu, kao što je kontrola smjera kretanja mobilnog robota, reguliranje glasnoće zvučnika ili podešavanje svjetline LCD ekrana. Takođe se široko koriste u upravljačkim sistemima za koračne motore ili servo motore, gde je potrebna precizna kontrola položaja osovine.
Jedna od najzanimljivijih aplikacija je kreiranje interfejsa sa vizuelnim ili zvučnim povratnim informacijama, gde enkoder ne samo da podešava parametar, već i pruža korisniku fizičke povratne informacije okretanjem, nešto što se ne može postići tradicionalnim dugmadima.
Osim toga, enkoderi su izuzetno korisni kao zamjena za potenciometre u sistemima koji zahtijevaju veći stepen izdržljivosti, jer nemaju ograničenja usporenja, smanjujući mehaničko habanje.
El upotreba enkodera u programiranju robota i autonomnih sistema takođe raste. Mogu se spojiti direktno na kotače robota kako bi se izmjerilo precizno kretanje, čime se optimiziraju proračuni pomaka i upravljanja, poboljšavaju efikasnost i sposobnost navigacije robota.
Rotacioni enkoderi su takođe našli svoj put u razvoju medicinskih uređaja i industrijskih kontrolnih panela, gde je potrebna stalna kontrola kretanja da bi se postigla milimetarska preciznost u mašinama.
Sve u svemu, enkoderi su svestrana i ekonomična opcija za projekte u kojima je ključno precizno mjerenje rotacije.
Ako tražite ekonomično i efikasno rješenje za svoje Arduino projekte, korištenje rotacijski enkoderi može vam pružiti odličnu alternativu drugim analognim metodama upravljanja, kao što su potenciometri. Njihova sposobnost da pruže preciznu kontrolu nad širokim rasponom rotacije čini ih idealnim za širok spektar primjena.