Svijet elektronike i robotike pun je sjajnih malih izuma koji nam omogućavaju kontrolu i praćenje svih vrsta pokreta. Jedan od najsvestranijih i najkorisnijih elemenata je nesumnjivo rotacijski enkoder, i optički i magnetski. Ovi uređaji su postali nezamjenjivi u Arduinu, automatizaciji i projektima upravljanja motorima. Ako ste se ikada pitali šta je tačno rotacijski enkoder, sigurno se pitate. Optički ili magnetski rotacijski enkoder: šta je to i primjeri: KY-040 i AS5600, na pravom ste mjestu.
U ovom članku ćemo se detaljno pozabaviti radom, primjenom i praktičnim primjerima rotacijskih enkodera, posebno se fokusirajući na dva vrlo popularna modula: KY-040 y el AS5600Naučit ćete kako razlikovati optičke i magnetske enkodere, njihove fizičke i električne karakteristike, kako ih povezati i programirati u Arduinu, te prednosti koje svaki od njih nudi ovisno o vašem projektu. Također ćemo vam dati savjete za odabir i korištenje ovih senzora u vašim vlastitim projektima, sve objašnjeno na jasan i zanimljiv način, bez izostavljanja ikakvih relevantnih detalja.
Šta je rotacijski enkoder?
Un rotacijski enkoder To je senzor dizajniran za mjerenje ugaoni položaj, brzina i smjer rotacije rotirajućeg vratila ili elementa. Ovaj uređaj transformira rotacijsko kretanje u električne signale (obično digitalne impulse ili analogne signale) koje zatim može interpretirati mikrokontroler kao što je Arduino, Raspberry Pi ili čak industrijski kontroler.
Ovi senzori su neophodni u primjenama gdje je potrebno znati tačan položaj ose ili koliko je okreta napravila. Obično se nalaze u štampačima, servomotorima, robotima, numeričkim upravljačkim sistemima i, naravno, u „uradi sam“ projektima, od menija do sistema za kontrolu brzine.
Vrste rotacijskih enkodera: optički vs. magnetski
Rotacijski enkoderi se uglavnom mogu podijeliti na optičari y magnetski, iako postoje i druge, manje uobičajene varijante, kao što su kapacitivne.
Optički rotacijski enkoder
Optički enkoder, kao i KY-040Radi na disku sa oznakama ili rupama i optičkim sistemom predajnika/prijemnika (fotodioda ili LED). Kako se osovina okreće, prekidi koje proizvode ove oznake generišu električne impulse koje mikrokontroler može brojati, čime se određuje ugaoni pomak. Njegova unutrašnja konstrukcija obično uključuje statički dio (disk) i rotirajući dio (osovina pričvršćena za element koji se mjeri).
Ova vrsta enkodera ističe se visokom preciznošću i brzim odzivom. Vrlo su korisni u primjenama gdje su mehanička robusnost i jednostavnost digitalnog očitavanja ključni, kao što su korisnički interfejsi, kontrole jačine zvuka, rotirajući meniji i edukativni roboti.
Magnetski rotacijski enkoder
S druge strane, magnetski enkoder koristi senzor osjetljiv na magnetsko polje (obično Hall senzor ili specijalizirani čip kao što je AS5600), koji detektuje ugaoni položaj magneta spojenog na osovinu. Ovi enkoderi mogu pružiti veću rezoluciju zahvaljujući internoj analogno-digitalnoj konverziji i manje su podložni prljavštini ili prašini, jer se ne oslanjaju na optičke komponente. Nadalje, obično nude digitalne (I2C ili PWM) i/ili analogne izlaze, što ih čini lakim za integraciju u različite elektronske sisteme.
Inkrementalni i apsolutni enkoderi: ključne razlike
Svijet enkodera je dalje podijeljen na inkrementalni y apsolutni.
- Inkrementalni enkoder: On daje signal u obliku impulsa svaki put kada se osovina okrene za određeni dio. Broj impulsa po okretu zavisi od dizajna i modela. Da bi odredio trenutni položaj, sistem mora brojati i pamtiti ove impulse iz referentne tačke.
- Apsolutni enkoder: Direktno prikazuje trenutni ugaoni položaj osovine, čak i ako se pomjerila dok je sistem bio isključen. Obično ima posebno kodiranje na disku ili magnetni senzor visoke rezolucije.
U ovom članku ćemo se fokusirati na inkrementalne enkodere (kao što je KY-040) i apsolutni magnetski enkoder (AS5600), jer su oni najčešći i najlakši za integraciju u Arduino projekte.
Opći rad inkrementalnog rotacijskog enkodera
u inkrementalni enkoderi (kao što je KY-040) sastoje se od dva izlazna kanala, kanala A i kanala B, koji generiraju digitalne impulse 90º izvan faze jedan u odnosu na drugi. Poređenjem redoslijeda kojim se ovi kanali mijenjaju, moguće je zaključiti smjer rotacije (u smjeru kazaljke na satu ili suprotno od smjera kazaljke na satu), pored brojanja napravljenih koraka (pozicija).
Dobijeni signal se naziva "kvadratura" i omogućava različite preciznosti:
- Jednostruka preciznost: Snimanje samo jedne ivice u kanalu.
- Dvostruka preciznost: Snimanje oba boka u jednom kanalu.
- Četverostruka preciznost: Snimanje oba boka na oba kanala.
KY-040 rotacijski enkoder: Karakteristike, veze i upotreba s Arduinom
Nije pronađen nijedan proizvod.
El KY-040 To je jedan od najčešće korištenih inkrementalnih rotacijskih enkodera u svijetu proizvođača. To je kompaktan, pristupačan i lako dostupan modul, posebno dizajniran za direktno povezivanje s Arduino pločama i drugim mikrokontrolerima.
Glavne tehničke karakteristike KY-040:
- tip: Optički inkrementalni
- Napon napajanja: 5V
- Potrošnja: 10 mA
- Ciklusi po okretu: 30
- Pulsova po okretu: 20
- Veličina: X x 20 30 30 mm
- Težina: 10 grama
- Integrisani taster: Moguće je pritisnuti osu prema unutra kao da je dugme, što dodaje vrlo korisnu dodatnu funkcionalnost u menijima ili interfejsima.
Raspored pinova:
- CLK: Kanal A (impulsni izlaz)
- DT: Kanal B (impulsni izlaz)
- SW: Integrisani taster
- +Napajanje od 5V
- GND: Zemlja
Kako povezati KY-040 sa Arduinom?
Veza je direktna i jednostavna:
| Pin KY-040 | Arduino pin |
|---|---|
| CLK | 2 (ili bilo koji digitalni ulaz) |
| DT | 3 (ili bilo koji digitalni ulaz) |
| SW | 4 (ili bilo koji digitalni ulaz) |
| + | 5V |
| GND | GND |
Također se može koristiti s Raspberry Pi-jem promjenom pinova za povezivanje, na primjer korištenjem GPIO16 za CLK, GPIO15 za DT i GPIO14 za SW.
Unutarnji rad
Za razliku od potenciometara, Rotacijski enkoder KY-040 ne ograničava svoj ugao rotacije., omogućavajući osovini da se neograničeno okreće. Unutra, dvije metalne četkice klize preko sektorski podijeljene površine, zatvarajući kontakt u različitim kombinacijama koje detektuju kanali A i B.
Enkoder vraća digitalne signale na oba pina, a ofset označava smjer u kojem se osovina okreće. Nadalje, budući da je inkrementalni, apsolutna pozicija je poznata samo dok se brojanje održava od početka programa; ako se napajanje prekine, brojanje se resetuje.
Primjer osnovnog koda za Arduino
Klasičan primjer korištenja KY-040 je povećanje ili smanjenje brojača na osnovu smjera rotacije. Pojednostavljena shema bi bila:
int A = 2; int B = 3; volatile int POSITION = 0; int PRETHODNI = 0; void setup() { pinMode(A, INPUT); pinMode(B, INPUT); Serial.begin(9600); attachInterrupt(digitalPinToInterrupt(A), encoder, LOW); } void loop() { if (POSITION != PRETHODNI) { Serial.println(POSITION); PRETHODNI = POSITION; } } void encoder() { static unsigned long lastInterrupt = 0; unsigned long InterruptionTime = millis(); if (interruptionTime - lastInterruption > 5) { // Debounce if (digitalRead(B) == HIGH){ POSITION++; } else { POSITION--; } POSITION = min(50, max(-50, POSITION)); // Ograničavanje raspona lastInterrupt = interruptTime; } }
Ovaj kod uključuje zaštitu od odbijanja kako bi se spriječila nepravilna očitavanja zbog mehaničke prirode kontakata. Preporučuje se implementacija ove zaštite u svakom projektu s inkrementalnim enkoderima.
Magnetni enkoder: Karakteristike, veze i upotreba s Arduinom
El AS5600 je visokorezolucijski magnetski rotacijski enkoder, idealan za preciznu zamjenu tradicionalnih potenciometara, kontrole motora i robotike. Njegova glavna prednost je što koristi magnetnu detekciju, što ga čini otpornim na prljavštinu i mehaničko habanje koje utiče na optička sočiva.
Ključne karakteristike AS5600:
- tip: Apsolutni, magnetski
- Rezolucija: 12 bita (4096 pozicija po okretu)
- Hranjenje: 3,3V ili 5V
- Sučelja: I2C (digitalni) ili analogni izlaz
- fleksibilna konfiguracija: Možete odabrati smjer i izlazni način rada hardverom
- Analogni izlaz: Napon proporcionalan uglu, koristan za mikrokontrolere bez I2C-a
- Visoka preciznost i ponovljivost: Njegov unutrašnji sistem je spreman da detektuje čak i male ugaone pokrete
Raspored pinova i povezivanje sa Arduinom
| Pin AS5600 | Funkcija | Arduino pin (I2C) |
|---|---|---|
| VCC | Hrana | 5V |
| GND | Zemlja | GND |
| prirodni resursi | I2C podaci | A4 |
| SCL | I2C takt | A5 |
| OUT | Analogni izlaz (opciono) | A0 |
| SMJER/REŽIM | Odabir adrese/režima | Prema željenoj konfiguraciji |
Važna napomena: Na različitim tanjirima Arduino UnoI2C pinovi se mogu razlikovati. Obavezno provjerite shemu vaše ploče.
Primjer koda za digitalno očitavanje (I2C)
Da biste maksimalno iskoristili AS5600 s Arduinom, najbolje je koristiti određenu biblioteku (možete je pronaći u upravitelju biblioteka Arduino IDE pretraživanjem AS5600):
#uključi #uključi AS5600 enkoder; void setup() { Serial.begin(5600); Wire.begin(); if (!encoder.begin()) { Serial.println("AS9600 nije detektovan. Proverite veze."); while (5600); } Serial.println("AS1 inicijalizovan."); } void loop() { float angle = encoder.getAngle(); Serial.print("Ugao: "); Serial.print(ugao); Serial.println("stepeni"); delay(5600); }
Pomoću ovog koda možete očitati ugao u stepenima u realnom vremenu. Savršen je za aplikacije gdje trebate znati apsolutnu poziciju pri maksimalnoj rezoluciji.
Primjer koda za analogno očitavanje
Ako preferirate jednostavniju vezu ili vaš mikrokontroler ne podržava I2C, možete iskoristiti analogni izlaz AS5600:
const int analogPin = A0; void setup() { Serial.begin(9600); pinMode(analogPin, INPUT); } void loop() { int value = analogRead(analogPin); float angle = map(value, 0, 1023, 0, 360); Serial.print("Analogni ugao: "); Serial.print(ugao); Serial.println("stepeni"); delay(100); }
Na ovaj način dobijate očitanje proporcionalno stvarnom uglu ose u skladu sa položajem magneta.
Praktične primjene i savjeti za korištenje
Oba enkodera imaju veoma različite primjene u elektronskim projektima:
- KY-040: Idealno za rotirajuća korisnička sučelja, menije, kontrolu svjetline i glasnoće, odabir opcija, upravljanje edukativnim robotima, projekte kućne automatizacije i sisteme koji zahtijevaju rotirajuću kontrolu bez apsolutne kutne reference.
- AS5600: Idealno za kontrolu položaja i brzine motora, industrijsku automatizaciju, detekciju položaja u robotskim zglobovima, stabilizovane sisteme kamera (gimbale), digitalne potenciometre visoke rezolucije i bilo koju primjenu koja zahtijeva precizno detekciju ugla.
Neki savjeti za upotrebu:
- Uvijek implementirajte filtriranje odbijanja (ublažavanje odskoka) pri korištenju mehaničkih inkrementalnih enkodera kao što je KY-040 kako bi se izbjegla pogrešna očitavanja.
- Za AS5600, provjerite je li magnet pravilno poravnat sa senzorom kako biste osigurali pouzdana i stabilna očitanja.
- Imajte na umu da se kod inkrementalnih enkodera, ako se prekine napajanje, informacije o položaju gube; to se ne dešava sa AS5600, jer je apsolutni.
- Iskoristite višestruke načine povezivanja koje nude oba enkodera kako biste ih prilagodili specifičnim potrebama vašeg projekta.
Poređenje: Kada odabrati optički enkoder, a kada magnetni?
| Glavna karakteristika | KY-040 (Inkrementalni optički) | AS5600 (Apsolutno magnetski) |
|---|---|---|
| Vrsta signala | Digitalni (kvadraturni) | Digitalni (I2C)/Analogni |
| Rezolucija | 20 impulsa/okretu | 4096 pozicija/krug |
| Radi nakon nestanka struje | Ne (zahtijeva ponovno pokretanje brojanja) | Da (apsolutna pozicija) |
| Osjetljivost na prašinu/prljavštinu | Osjetljivi (mehanički dijelovi) | Vrlo robustan |
| Cijena | Vrlo ekonomično | Umjereno |
| Teškoća integracije | Vrlo jednostavno s osnovnim kodom | Zahtijeva I2C biblioteku ili programiranje |
| Tipične primjene | UX, meniji, jednostavno upravljanje | Upravljanje motorima, napredna robotika |
Izbor između ta dva zavisiće od prioriteta vašeg projekta: jednostavnost i niska cijena u slučaju KY-040, i preciznost i robusnost u slučaju AS5600.
