
2025 Autor: John Day | [email protected]. Zadnja promjena: 2025-01-23 14:47



Ova uputa opisuje jednostavnu metodu dekodiranja sekvencijalnog rotacijskog kodera pomoću Arduino Uno R3.
Kompaktne softverske rutine koriste se za brojanje broja prijelaza, uklanjanje odbijanja kontakta i određivanje smjera rotacije. Dodatne komponente i tablice za pretraživanje nisu potrebne.
Dostupne su verzije koda s prekidom i bez prekida.
Verzija koda za prekid zahtijeva samo jedan pin prekida.
Slike:
- Fotografija na početku prikazuje sklopljeni enkoder.
- Snimka zaslona prikazuje kôd za verziju prekida i broj kada se vratilo davača okreće u smjeru kazaljke na satu i u suprotnom smjeru.
- Videozapis prikazuje brojanje tijekom brze rotacije.
Korak 1: Dijagram kruga

Shema ožičenja davača prikazana je na sl.1.
Žice kratkospojnika lemljene su izravno na pinove davača.
Zamijenite dvije plave žice ako je smjer brojanja obrnut.
Korak 2: Popis dijelova
Sljedeći dijelovi su nabavljeni sa
- 1 samo Arduino UNO R3 s USB kabelom.
- 1 samo sekvencijalni rotacijski davač (EC11 ili ekvivalent) s prekidačem.
- 1 samo gumb za prilagođavanje osovine.
- 3 samo Arduino spojne žice za muškarce.
Korak 3: Teorija

Sekvencijalni rotacijski enkoderi generiraju dva kvadratna vala od kojih je svaki pomaknut za 90 stupnjeva kako je prikazano na slici 1.
Logički obrasci na kontaktu A i kontaktu B različiti su kada se vratilo okreće u smjeru kazaljke na satu (CW) i suprotno od smjera kazaljke na satu (CCW) kroz položaje 1 do 6.
Uobičajene metode određivanja smjera rotacije uključuju:
- hardver
- blizanac prekida
- tablice za traženje uzoraka
Ovaj projekt koristi softversku metodu koja ne zahtijeva tablice za pretraživanje. [1]
Smjer
Umjesto da gledamo izlazne obrasce iz kontakta A i kontakta B, fokusirajmo se na kontakt A.
Ako uzorkujemo kontakt B nakon svakog prijelaza kontakta A, primjećujemo da:
- Kontakt A i Kontakt B imaju suprotna logička stanja kada se davač okreće CW
- Kontakt A i Kontakt B imaju isto logičko stanje kada se davač okreće CCW
Stvarni kod:
// ----- Brojanje prijelaza
CurrentStateA = stateContactA (); if (CurrentStateA! = LastStateA) {CurrentStateB = digitalRead (ContactB); if (CurrentStateA == CurrentStateB) Broj ++; if (CurrentStateA! = CurrentStateB) Broj--; LastStateA = CurrentStateA; }
Ova metoda nudi sljedeće prednosti:
- tablice za pretraživanje nisu potrebne
- potrebna je samo jedna linija prekida
Debounce
Svi mehanički enkoderi pate od "odbijanja kontakta".
Ako kontakt prekidača ne napravi/prekine čisto, njegovo logičko stanje će brzo oscilirati od VISOKOG do NISKOG dok se kontakt prekidača ne smiri. To dovodi do lažnih brojeva.
Jedna metoda za suzbijanje odbijanja kontakta je dodavanje malog kondenzatora preko svakog kontakta prekidača. Kondenzator i pripadajući pull-up otpornik tvore integrator koji učinkovito skraćuje visoke frekvencije i omogućuje drastičan rast/pad napona sklopke.
Nedostatak ovog pristupa je što se prijelazi mogu propustiti ako se vratilo davača brzo okreće.
Debouncing softvera
Ova metoda koristi dva brojača (otvorena, zatvorena) koja su postavljena na nulu. [2]
Nakon što se na kontaktu A otkrije prijelaz:
- Stalno anketiranje Kontakt A.
- Povećajte otvoreni brojač i resetirajte zatvoreni brojač, kad god je kontakt A VISOK.
- Povećajte zatvoreni brojač i poništite otvoreni brojač kad god je kontakt A nizak.
- Napustite petlju kada jedan od brojača dosegne unaprijed određeni broj. Učinkovito tražimo stacionarno razdoblje nakon svakog odbijanja kontakta.
Stvarni kod:
// ----- Debounce Contact A
while (1) {if (digitalRead (ContactA)) {// ----- ContactA je otvoren Zatvoren = 0; // Prazan suprotni integrator Open ++; // Integriraj if (Otvori> MaxCount) return HIGH; } else {// ----- ContactA je zatvoren Otvoren = 0; // Prazan suprotni integrator Zatvoren ++; // Integriraj if (Zatvoreno> MaxCount) return LOW; }}
Nema potrebe odbacivati kontakt B jer se prijelazi kontakta A i kontakta B ne podudaraju.
Brojanje
Mehaničko “zadržavanje” učinkovito udvostručuje vaš broj jer se dva broja registriraju između klikova (vidi sliku 1).
Broj "deteknata" može se odrediti korištenjem modulo 2 aritmetike kao što je prikazano u nastavku.
Stvarni kod:
// ----- Broji "detente"
if (Broj % 2 == 0) {Serial.print ("Broj:"); Serial.println (Broj / 2); }
Reference
Dodatne informacije mogu se pronaći na:
[1]
howtomechatronics.com/tutorials/arduino/ro…
[2]
newbiehack.com/ButtonorSwitchDebounceinSof…
Korak 4: Softver
Ovaj projekt zahtijeva noviju verziju Ardino Uno R3 IDE (integrirano razvojno okruženje) koja je dostupna na
Preuzmite svaku od sljedeće dvije Arduino skice (u privitku)
- rotary_encoder_1.ino (verzija za glasanje)
- rotary_encoder_2.no (verzija s prekidom)
Dvaput kliknite na željenu verziju i slijedite upute na zaslonu.
Uživati …
Kliknite ovdje da biste vidjeli moje ostale upute.
Preporučeni:
Gumb za rotacijski davač: 6 koraka

Gumb za rotacijski davač: Ovo je rotacijski daljinski upravljač koji se temelji na rotacijskom davaču. Ima sljedeće značajke: Baterija radi s vrlo niskom potrošnjom struje kada je aktivirana Automatsko aktiviranje kada se kontrola okreće Automatsko spavanje nakon razdoblja neaktivnosti Konfiguriraj
Još jedan rotacijski prekidač koji je uglavnom 3D ispisan: 7 koraka (sa slikama)

Još jedan rotacijski prekidač koji je uglavnom 3D ispisan: Prije nekog vremena stvorio sam uglavnom 3D tiskani rotacijski prekidač posebno za svoj projekt Minivac 601 Replica. Za moj novi Think-a-Tron 2020 projekt, smatram da mi treba još jedan rotacijski prekidač. Tražim prekidač za montažu na ploču SP5T. Dodatak
Linearni i rotacijski aktuator: 11 koraka

Linearni i rotacijski pokretač: Ovo uputstvo govori o tome kako napraviti linearni pogon s okretnom osovinom. To znači da možete pomicati objekt prema naprijed i natrag te ga istovremeno rotirati. Moguće je pomicati objekt 45 mm (1,8 inča) naprijed -natrag i rotirati ga
Kako napraviti jednostavan DTMF (ton) dekoder telefonske linije: 3 koraka

Kako napraviti jednostavan DTMF (tonski) dekoder telefonske linije: Ovo je jednostavan projekt koji vam omogućuje dekodiranje DTMF signala u osnovi bilo koje telefonske linije. U ovom vodiču koristimo dekoder MT8870D. Koristimo unaprijed ugrađeni dekoder tonova jer, vjerujte, bol je straga pokušavati to učiniti s
(Jednostavan) jednostavan način dobivanja analognog/pwm zvuka s Raspberry PI Zero -a i povezivanja na Crt TV: 4 koraka

(Jednostavan) jednostavan način za dobivanje analognog/pwm zvuka s Raspberry PI Zero -a i povezivanje s Crt TV -om: Ovdje sam upotrijebio najjednostavniji način za unos zvuka na televizor uz kompim video