Kako se Koristi Rotary Encoder – Rotacioni Enkoder
Ne postoji osoba u 21 stoljeću koja se nije susrela sa rotacionim enkoderom. Ovi senzori se koriste u 3D štampačima, CNC mašinama, robotici, džojsticima itd.. Najčešća primjena rotacionog enkodera je dugme za jačinu zvuka ili promjena frekvencije u autoradiju.
U ovoj lekciji ćemo objasniti:
- Šta je to Rotary encoder ili Rotacioni enkoder?
- Šema povezivanja i kod za kontrolu Rotacionog enkodera
- Specifikacija materijala
Šta je to Rotary Encoder ili Rotacioni Enkoder?
Rotacioni enkoder je senzor koji konvertuje ugaoni položaj ili rotaciju nekog objekta u električni signal. Ovaj uređaj se koristi za precizno merenje ugla, brzine i smjera rotacije, a široko je primjenjen u industrijskim mašinama, robotici, servomotorima i mnogim drugim aplikacijama. Navedeni senzori se dijele u dvije skupine, a to su: Apsolutni i Inkrementalni. Glavna razlika je u tome što Apsolutni rotacioni enkoder očitava tačan položaj (ugao) u kojem se enkoder nalazi, dok inkrementali izvještava o broju koraka. U ovoj lekciji koristit ćemo inkrementalni rotacioni enkoder.
Iz svega gore navedenoga, možemo zaključiti da je velika razlika između rotacionog enkodera i potenciometara koje smo koristili u prethodnim lekcijama (link lekcije potenciometar).
Potenciometar je rezistivni uređaj koji mjeri ugaoni pomak tako što mjenja otpor u zavisnosti od pozicije rotacionog klizača. Potenciometar iz prethodne lekcije ima fizički kontakt između klizača i otpornika. Ovaj fizički kontakt izaziva habanje tokom vremena, što može dovesti do pada preciznosti. Na slici ispod možete vidjeti fizičke razlike.
Sada kada znamo šta je to rotacioni enkoder, prije nego što krenemo sa praktičnim primjerima, vrijeme je da objasnimo i sam princip rada šta se to dešava u samom enkoderu kada pomičemo rotacionu osovinu.
Princip rada enkodera možemo da vidimo na slici ispod:
Kao što možete vidjeti na slici iznad, unutar enkodera je disk s prorezima koji je spojen na pin C što označava zajedničko uzemljenje. Također vidimo dva kontaktna pina A i B, kao što je prikazano. Naš zadatak je da pratimo u kojem se smjeru okreće osovina potenciometra i na osnovu rezultata povećavamo ili smanjujemo vrijednost varijable. Kada se osovina okrene u smjeru kazaljke na satu, A pin se spaja na masu prije B pina. Kada je osovina okrenuto u smjeru suprotnom od kazaljke na satu, B pin se spaja na masu prije A pina. Praćenjem kada se svaki pin spaja ili isključuje sa zemlje, možemo odrediti smjer u kojem se osovina okreće. To se može postići jednostavnim posmatranjem stanja B kada se stanje A promijeni.
Kada kontakt A promijeni stanje:
if B != A, kada se osnovina okrene u smjeru kazaljke na satu.
if B = A, osovina se okreće u kontra smjeru kazaljke na satu.
Za one koji žele više detalja, na kraju lekcije ostavit ćemo link za tutorial na engleskom jeziku koji smo koristili kao primjer.
Šema povezivanja i kod za kontrolu Rotacionog Enkodera
Pa da krenemo sa Šemom i kodom. U slučaju da ne želite prepisivati kod sa slike, kliknite na ovaj GITHUB link i preuzmite kod iz ovog tutorijala, kao i od ostalih Tutorijala.
Nakon što smo upoznati sa glavnim karakteristikama enkodera došlo je vrijeme i za praktični dio. Pored pomicanja osovine u smjeru kazaljke na satu, kao i kontra smjeru, enokoder ima i mogućnost dugmeta (Button). On se koristi tako što se pritisne osovina prema dole.
Na slici ispod možete vidjeti koji pin enkodera ide na koji pin od Arduino mikrokontrolera. Ovako povezan enkoder će raditi na svim Arduino mikrokontrolerima.
Šema za povezivanje:
Nakon što smo povezali enkoder kao na šemi iznad, upišimo kod:
Kao što možete vidjeti na slici iznad, kod i šema savršeno rade. Kako ne bi izazvali zabunu, kod i napomene smo ostavili namjerno na engleskom jeziku. Ono po čemu se ovaj kod razlikuje od mnogih drugih je to da smo korstili uspoređivanje sa internim vremenom millis(), a ne sa komandom delay(). Prednost ovakvog pristupa problemu je u tome što korištenje internog uspoređivanja vremena ne utiče na rad ostatka sistema!
Iako naizgled jednostavan, korištenjem rotacionog enkodera uveliko ćete unaprijediti svoje projekte. Ovaj kod je odličan primjer za kreiranje menija (Menu) na ekranima (Display) za upravljanje mašinama, kao i za precizano podešavanje vrijednosti varijabli. Pomoću rotacionog enkodera možete vrtiti do beskonačnog broja u jednom smjeru, kao i smanjivati vrijednosti u drugom smjeru, a sa dugmetom potvrđivati podešene vrijednosti, kretati se kroz meni itd..
U slučaju da je potreban prevod ili bilo kakvo objašnjenje, stojimo Vam na raspolaganju!
Specifikacija materijala:
- 1x Arduino Uno
- 1x Breadboard (enkoder se može direktno povezati)
- 1x Rotacioni enkoder
- 5x Komunikacijski kablovi
Napomena: Nakon što pročitate bilo koji Tutorijal na internetu, uvijek pogledajte Datasheet bilo koje komponente ili senzora, jer se tu nalaze svi bitni fabrički detalji!
Link originalnog koda, kao i objašnjenja : https://lastminuteengineers.com/rotary-encoder-arduino-tutorial/