Turinys:
- 1 žingsnis: grandinės schema
- 2 žingsnis: dalių sąrašas
- 3 žingsnis: teorija
- 4 žingsnis: programinė įranga
Video: Paprastas rotacinis dekoderis: 4 žingsniai
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:47
Šioje instrukcijoje aprašomas paprastas nuoseklaus sukamojo kodavimo įrenginio dekodavimo metodas naudojant „Arduino Uno R3“.
Kompaktiška programinė įranga naudojama skaičiuojant perėjimų skaičių, pašalinant kontaktinį atšokimą ir nustatant sukimosi kryptį. Papildomi komponentai ir peržiūros lentelės nereikalingi.
Pateikiamos nepertraukiamos ir nepertraukiamos kodo versijos.
Norint pertraukti kodo versiją, reikia tik vieno pertraukimo kaiščio.
Vaizdai:
- Atidarymo nuotraukoje parodytas surinktas kodavimo įrenginys.
- Ekrano nuotraukoje rodomas pertraukimo versijos kodas ir skaičius, kai kodavimo velenas pasukamas pagal laikrodžio rodyklę ir prieš laikrodžio rodyklę.
- Vaizdo įraše rodomas skaičius greito sukimosi metu.
1 žingsnis: grandinės schema
Kodavimo įrenginio prijungimo schema parodyta 1 pav.
Perjungimo laidai yra lituojami tiesiai prie kodavimo kaiščių.
Pakeiskite du mėlynus laidus, jei skaičiavimo kryptis pasikeičia.
2 žingsnis: dalių sąrašas
Šios dalys buvo gautos iš
- 1 tik „Arduino UNO R3“su USB kabeliu.
- 1 tik nuoseklusis sukamasis kodavimo įrenginys (EC11 arba lygiavertis) su jungikliu.
- 1 tik rankenėlė, tinkanti velenui.
- 3 tik „Arduino“jungiamieji laidai.
3 žingsnis: teorija
Nuoseklūs sukamieji kodavimo įrenginiai sukuria dvi kvadratines bangas, kurių kiekviena pasislenka 90 laipsnių, kaip parodyta 1 pav.
A ir B kontaktų loginiai modeliai skiriasi, kai velenas pasukamas pagal laikrodžio rodyklę (CW) ir prieš laikrodžio rodyklę (CCW) per 1–6 pozicijas.
Įprasti sukimosi krypties nustatymo metodai yra šie:
- aparatinė įranga
- - pertraukia dvyniai
- modelio paieškos lentelės
Šiame projekte naudojamas programinės įrangos metodas, kuriam nereikia peržvalgos lentelių. [1]
Kryptis
Užuot žiūrėję į kontaktų A ir B kontaktų išvesties modelius, sutelkime dėmesį į kontaktą A.
Jei po kiekvieno „A“kontakto perėjimo imame B kontakto pavyzdį, pastebime, kad:
- Kontaktas A ir kontaktas B turi priešingas logines būsenas, kai kodavimo įrenginys pasukamas CW
- Kontaktas A ir kontaktas B turi tą pačią loginę būseną, kai kodavimo įrenginys yra pasuktas CCW
Tikrasis kodas:
// ----- Skaičiuokite perėjimus
CurrentStateA = stateContactA (); if (CurrentStateA! = LastStateA) {CurrentStateB = digitalRead (ContactB); if (CurrentStateA == CurrentStateB) Count ++; if (CurrentStateA! = CurrentStateB) Count--; LastStateA = CurrentStateA; }
Šis metodas suteikia šiuos privalumus:
- paieškos lentelių nereikia
- reikia tik vienos pertraukos linijos
Debounce
Visi mechaniniai kodavimo įrenginiai kenčia nuo „kontaktinio atšokimo“.
Jei jungiklio kontaktas nesigauna/nesuyra švariai, jo loginė būsena greitai svyruos nuo HIGH iki LOW, kol jungiklio kontaktas nusistovės. Dėl to gaunami klaidingi skaičiavimai.
Vienas iš kontaktų atšokimo slopinimo būdų yra pridėti mažą kondensatorių prie kiekvieno jungiklio kontakto. Kondensatorius ir su juo susijęs traukiamasis rezistorius sudaro integratorių, kuris efektyviai sutrumpina aukštus dažnius ir leidžia jungiklio įtampai grakščiai kilti/kristi.
Šio metodo trūkumas yra tas, kad perėjimai gali būti praleisti, jei kodavimo velenas greitai pasukamas.
Programinės įrangos išjungimas
Šis metodas naudoja du skaitiklius (atidaryti, uždaryti), kurie buvo nustatyti į nulį. [2]
Kai kontaktas A aptinka perėjimą:
- Nuolatinė apklausa Susisiekite su A.
- Padidinkite atidarymo skaitiklį ir iš naujo nustatykite uždarytą skaitiklį, kai kontaktas A yra AUKŠTAS.
- Padidinkite uždarytą skaitiklį ir iš naujo nustatykite atidarymo skaitiklį, kai kontaktas A yra žemas.
- Išeikite iš ciklo, kai vienas iš skaitiklių pasiekia iš anksto nustatytą skaičių. Mes efektyviai ieškome pastovios būsenos laikotarpio po bet kokio kontakto atmetimo.
Tikrasis kodas:
// ----- Debounce Contact A
nors (1) {if (digitalRead (ContactA)) {// ----- ContactA is Open Closed = 0; // Tuščias priešingas integratorius Open ++; // Integruoti, jei (Open> MaxCount) return HIGH; } else {// ----- ContactA is Closed Open = 0; // Tuščias priešingas integratorius Uždarytas ++; // Integruoti, jei (uždaryta> MaxCount) grąžina LOW; }}
Nereikia atjungti B kontakto, nes kontaktai A ir B kontaktai nesutampa.
Skaičiavimas
Mechaninis „sulaikymas“efektyviai padvigubina jūsų skaičių, nes tarp paspaudimų registruojami du skaičiai (žr. 1 pav.).
„Sulaikymų“skaičius gali būti nustatytas naudojant 2 modulio aritmetiką, kaip parodyta žemiau.
Tikrasis kodas:
// ----- suskaičiuokite „sulaikymus“
if (Count % 2 == 0) {Serial.print ("Count:"); Serial.println (Count / 2); }
Nuorodos
Daugiau informacijos galima rasti adresu:
[1]
howtomechatronics.com/tutorials/arduino/ro…
[2]
newbiehack.com/ButtonorSwitchDebounceinSof…
4 žingsnis: programinė įranga
Šiam projektui reikalinga naujausia „Ardino Uno R3 IDE“(integruotos kūrimo aplinkos) versija, kurią galima rasti adresu
Atsisiųskite kiekvieną iš šių dviejų „Arduino“eskizų (pridedama)
- rotary_encoder_1.ino (apklausos versija)
- rotary_encoder_2.no (pertraukimo versija)
Dukart spustelėkite norimą versiją ir vykdykite ekrane pateikiamas instrukcijas.
Mėgautis …
Spustelėkite čia, jei norite peržiūrėti kitus mano nurodymus.
Rekomenduojamas:
„LabDroid“: Morzės kodo koduotojas/dekoderis: 4 žingsniai
LabDroid: Morzės kodo koduotojas/dekoderis: Pastaba: šios instrukcijos negalima įgyvendinti 1: 1 naujausioje „LabDroid“versijoje. Netrukus jį atnaujinsiu. Šis projektas parodys, ką galite padaryti naudodami „LabDroid“. Kadangi „Hello World“paprastai kuriamas remiantis tekstu, šviesa ar garsu, aš galvojau apie „LabDr“
Dvejetainis medžio morzės dekoderis: 7 žingsniai (su paveikslėliais)
Dvejetainis medžio morzės dekoderis: a. Straipsniai {šrifto dydis: 110,0%; šrifto svoris: paryškintas; šrifto stilius: kursyvas; teksto dekoravimas: nėra; fono spalva: raudona;} a. straipsniai: užveskite pelės žymeklį {background-color: black;} Šioje instrukcijoje paaiškinta, kaip iššifruoti Morzės kodą naudojant „Arduino Uno R3.T“
RC5 nuotolinio valdymo protokolo dekoderis be bibliotekos: 4 žingsniai
RC5 nuotolinio valdymo protokolo dekoderis be bibliotekos: prieš dekoduojant rc5 pirmiausia aptariame, kas yra rc5 komanda ir kokia jos struktūra. Taigi iš esmės „rc5“komanda naudojama nuotolinio valdymo pultuose, naudojamuose televizoriuose, kompaktinių diskų grotuvuose, „d2h“, namų kino sistemose ir tt, ji turi 13 arba 14 bitų, išdėstytų
IR nuotolinio valdymo pulto dekoderis naudojant „Arduino“: 7 žingsniai
IR nuotolinio valdymo pulto dekoderis naudojant „Arduino“: Sveiki kūrėjai, tai yra visa pamoka, kaip iššifruoti bet kokį IR nuotolinio valdymo pultą. Tiesiog atlikite mano veiksmus žemiau
„Arduino“RF jutiklio dekoderis: 5 žingsniai
„Arduino“RF jutiklių dekoderis: Mano ankstesniuose namuose buvo iš anksto įdiegta apsaugos sistema, kurioje buvo durų jutikliai, judesio jutiklis ir valdymo skydelis. Viskas buvo tvirtai prijungta prie didelės elektroninės dėžutės spintoje ir buvo instrukcijos, kaip prijungti fiksuotojo ryšio telefoną prie automato