Kazalo:
Video: Preprost rotacijski dekoder: 4 koraki
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:05
Ta navodila opisujejo preprosto metodo dekodiranja zaporednega rotacijskega dajalnika z uporabo Arduino Uno R3.
Kompaktne programske rutine se uporabljajo za štetje števila prehodov, odpravo odklona stikov in določanje smeri vrtenja. Dodatne komponente in iskalne tabele niso potrebne.
Na voljo sta različici kode s prekinitvami in neprekinjeno.
Prekinitvena različica kode zahteva le en prekinitveni zatič.
Slike:
- Odprta fotografija prikazuje sestavljen kodirnik.
- Posnetek zaslona prikazuje kodo za različico prekinitve in štetje, ko se gred kodirnika vrti v smeri urinega kazalca in v nasprotni smeri urinega kazalca.
- Videoposnetek prikazuje štetje med hitrim vrtenjem.
1. korak: Shema vezja
Shema ožičenja dajalnika je prikazana na sliki 1.
Mostične žice so spajkane neposredno na zatiče dajalnika.
Zamenjajte dve modri žici, če je smer štetja obratna.
2. korak: Seznam delov
Naslednji deli so bili pridobljeni s spletnega mesta
- 1 samo Arduino UNO R3 s kablom USB.
- 1 samo zaporedni vrtljivi dajalnik (EC11 ali enakovreden) s stikalom.
- 1 samo gumb, ki ustreza gredi.
- 3 samo Arduino moške žice za moške.
3. korak: Teorija
Zaporedni rotacijski dajalniki ustvarjajo dva kvadratna vala, od katerih se vsak premakne za 90 stopinj, kot je prikazano na sliki 1.
Logični vzorci na kontaktu A in kontaktu B so različni, če se gred obrača v smeri urinega kazalca (CW) in v nasprotni smeri urinega kazalca (CCW) skozi položaje od 1 do 6.
Skupne metode določanja smeri vrtenja vključujejo:
- strojna oprema
- dvojček prekine
- tabele za iskanje vzorcev
Ta projekt uporablja programsko metodo, ki ne zahteva iskalnih tabel. [1]
Smer
Namesto da bi gledali izhodne vzorce iz stikov A in kontakta B, se osredotočimo na stik A.
Če vzorec stika B po vsakem prehodu stika A opazimo, da:
- Stik A in kontakt B imata nasprotna logična stanja, ko je dajalnik zasukan CW
- Stik A in kontakt B imata enako logično stanje, ko dajalnik zavrtite CCW
Dejanska koda:
// ----- Štej prehode
CurrentStateA = stateContactA (); if (CurrentStateA! = LastStateA) {CurrentStateB = digitalRead (ContactB); if (CurrentStateA == CurrentStateB) Count ++; if (CurrentStateA! = CurrentStateB) Število--; LastStateA = CurrentStateA; }
Ta metoda ima naslednje prednosti:
- iskalne tabele niso potrebne
- potrebna je samo ena prekinitvena linija
Debounce
Vsi mehanski dajalniki trpijo zaradi "odboja stika".
Če stikalni kontakt ne naredi/prekine čisto, bo njegovo logično stanje hitro nihalo od VISOKEGA do NIZKEGA, dokler se stikalni stik ne ustali. To povzroči napačno štetje.
Eden od načinov za preprečevanje odklona stika je, da se čez vsak stikalni kontakt doda majhen kondenzator. Kondenzator in z njim povezan vlečni upor tvorita integrator, ki učinkovito skrajša visoke frekvence in omogoča prefinjeno naraščanje/padanje napetosti stikala.
Slaba stran tega pristopa je, da lahko prehodi zamudimo, če se gred dajalnika hitro vrti.
Razveljavitev programske opreme
Ta metoda uporablja dva števca (odprta, zaprta), ki sta nastavljena na nič. [2]
Ko zaznate prehod na stiku A:
- Nenehno anketirajte stik A.
- Povečajte odprti števec in ponastavite zaprti števec, kadar koli je kontakt A VISOK.
- Povečajte zaprti števec in ponastavite odprti števec, kadar je kontakt A NIZK.
- Zapustite zanko, ko eden od števcev doseže vnaprej določeno število. Učinkovito iščemo obdobje dinamičnega ravnovesja po vsakem odklonu stikov.
Dejanska koda:
// ----- Odpravite stik A
while (1) {if (digitalRead (ContactA)) {// ----- ContactA je odprto zaprto = 0; // Prazen nasprotni integrator Open ++; // Integriraj if (Open> MaxCount) return HIGH; } else {// ----- ContactA je zaprta Odprta = 0; // Prazen nasprotni integrator Zaprto ++; // Integriraj if (Zaprto> MaxCount) vrne LOW; }}
Kontakta B ni treba odvrniti, saj prehoda kontakta A in kontakta B ne sovpadata.
Štetje
Mehanski "zapor" učinkovito podvoji vaše število, saj sta med kliki zabeležena dva štetja (glej sliko 1).
Število "detentov" se lahko določi z aritmetiko po modulu 2, kot je prikazano spodaj.
Dejanska koda:
// ----- Štej "detente"
if (Count % 2 == 0) {Serial.print ("Count:"); Serial.println (Število / 2); }
Reference
Dodatne informacije so na voljo na:
[1]
howtomechatronics.com/tutorials/arduino/ro…
[2]
newbiehack.com/ButtonorSwitchDebounceinSof…
4. korak: Programska oprema
Ta projekt zahteva najnovejšo različico Ardino Uno R3 IDE (integrirano razvojno okolje), ki je na voljo na
Prenesite vsako od naslednjih dveh skic Arduino (priloženo)
- rotary_encoder_1.ino (različica za glasovanje)
- rotary_encoder_2.no (prekinitvena različica)
Dvokliknite želeno različico in sledite navodilom na zaslonu.
Uživajte…
Kliknite tukaj, če si želite ogledati moja druga navodila.
Priporočena:
LabDroid: kodirnik/dekoder Morsejeve kode: 4 koraki
LabDroid: kodirnik/dekoder Morsejeve kode: Opomba: Tega navodila ni mogoče uresničiti 1: 1 v najnovejši različici LabDroida. Kmalu ga bom posodobil. Ta projekt vam bo pokazal, kaj lahko storite z LabDroidom. Ker Hello World običajno temelji na besedilu, svetlobi ali zvoku, sem pomislil na LabDr
Kako: brezstični rotacijski dajalnik: 3 koraki
Kako do: brezstičnega rotacijskega dajalnika: Ta opomba o uporabi opisuje, kako oblikovati vrtljivo stikalo ali kodirnik z visoko zanesljivostjo z uporabo Dialog GreenPAK ™. Ta oblika stikala je brezkontaktna, zato zanemarja oksidacijo in obrabo stikov. Idealen je za uporabo na prostem, kjer je dolgo
Rotacijski dajalnik - Razumejte in ga uporabite (Arduino/drug Μ krmilnik): 3 koraki
Rotacijski dajalnik - razumejte in ga uporabite (Arduino/drug Μkrmilnik): rotacijski dajalnik je elektromehanska naprava, ki pretvarja rotacijsko gibanje v digitalne ali analogne informacije. Lahko se obrača v smeri urinega kazalca ali v nasprotni smeri. Obstajata dve vrsti rotacijskih kodirnikov: absolutni in relativni (inkrementalni) dajalniki
Rotacijski dajalnik z uporabo Arduino Nano: 4 koraki
Rotacijski dajalnik z uporabo Arduino Nano: Pozdravljeni, v tem članku bom naredil vadnico o tem, kako uporabljati rotacijski dajalnik z uporabo Arduino Nano. Za uporabo tega rotacijskega kodirnika ne potrebujete zunanje knjižnice. Tako lahko neposredno ustvarjamo programe, ne da bi najprej dodali knjižnice. ok začnimo
Boljši rotacijski kodirnik: 4 koraki
Boljši rotacijski kodirnik: Če ste kdaj za svoj projekt poskusili uporabiti rotacijski dajalnik, ki ste ga našli na polici, ste bili najverjetneje razočarani. Ali je to bilo zaradi težav pri nastavitvi ali nenatančnih kontrol. Imel sem enak problem, zato sem se odločil, da ga odpravim. Oblikoval sem 3D pr