Satura rādītājs:
Video: Vienkāršs rotācijas dekodētājs: 4 soļi
2024 Autors: John Day | [email protected]. Pēdējoreiz modificēts: 2024-01-30 10:56
Šajā pamācībā ir aprakstīta vienkārša secīga rotējošā kodētāja atšifrēšanas metode, izmantojot Arduino Uno R3.
Kompakta programmatūra tiek izmantota, lai saskaitītu pāreju skaitu, novērstu kontakta atlēcienu un noteiktu rotācijas virzienu. Papildu sastāvdaļas un uzmeklēšanas tabulas nav nepieciešamas.
Tiek piedāvātas koda versijas ar pārtraukumiem un nepārtraukumiem.
Koda pārtraukšanas versijai ir nepieciešama tikai viena pārtraukšanas tapa.
Attēli:
- Sākuma fotoattēlā ir redzams samontētais kodētājs.
- Ekrānuzņēmumā ir redzams pārtraukuma versijas kods un skaits, kad kodētāja vārpsta tiek pagriezta pulksteņrādītāja virzienā un pretēji pulksteņrādītāja virzienam.
- Video parāda skaitu ātras rotācijas laikā.
1. darbība: shēmas shēma
Kodētāja elektroinstalācijas shēma ir parādīta 1. attēlā.
Džempera vadi ir pielodēti tieši pie kodētāja tapām.
Nomainiet abus zilos vadus, ja skaitīšanas virziens ir pretējs.
2. darbība: detaļu saraksts
Šādas daļas tika iegūtas vietnē
- 1 tikai Arduino UNO R3 ar USB kabeli.
- 1 tikai secīgs rotējošais kodētājs (EC11 vai līdzvērtīgs) ar slēdzi.
- 1 tikai poga, kas piemērota vārpstai.
- 3 tikai Arduino džemperi no vīriešiem līdz vīriešiem.
3. solis: teorija
Secīgi rotējošie kodētāji ģenerē divus kvadrātveida viļņus, no kuriem katrs ir pārvietots par 90 grādiem, kā parādīts 1. attēlā.
Loģikas modeļi kontaktā A un kontaktā B ir atšķirīgi, ja vārpstu rotē pulksteņrādītāja virzienā (CW) un pretēji pulksteņrādītāja virzienam (CCW) pozīcijās no 1 līdz 6.
Parastās rotācijas virziena noteikšanas metodes ietver:
- aparatūra
- dvīņi pārtrauc
- modeļu uzmeklēšanas tabulas
Šajā projektā tiek izmantota programmatūras metode, kurai nav nepieciešamas uzmeklēšanas tabulas. [1]
Virziens
Tā vietā, lai aplūkotu kontaktpersonu A un kontakta B izvades modeļus, pievērsīsimies kontaktam A.
Ja pēc katras A kontakta pārejas mēs izvēlamies kontaktpersonu B, mēs atzīmējam, ka:
- Kontaktam A un kontaktam B ir pretēji loģiskie stāvokļi, kad kodētājs tiek pagriezts CW
- Kontaktam A un kontaktam B ir tāds pats loģiskais stāvoklis, kad kodētājs tiek pagriezts CCW
Faktiskais kods:
// ----- Skaitīt pārejas
CurrentStateA = stateContactA (); if (CurrentStateA! = LastStateA) {CurrentStateB = digitalRead (ContactB); ja (CurrentStateA == CurrentStateB) Count ++; if (CurrentStateA! = CurrentStateB) Count--; LastStateA = CurrentStateA; }
Šī metode piedāvā šādas priekšrocības:
- uzmeklēšanas tabulas nav nepieciešamas
- ir nepieciešama tikai viena pārtraukuma līnija
Atlekšana
Visi mehāniskie kodētāji cieš no “kontakta atlēciena”.
Ja slēdža kontakts neveidojas/nesadalās tīri, tā loģiskais stāvoklis strauji svārstīsies no HIGH uz LOW, līdz slēdža kontakts nostāsies. Tā rezultātā tiek iegūti nepatiesi skaitījumi.
Viena metode kontaktu atlēcienu novēršanai ir pievienot nelielu kondensatoru katram slēdža kontaktam. Kondensators un ar to saistītais pievilkšanas rezistors veido integratoru, kas efektīvi saīsina augstās frekvences un ļauj slēdža spriegumam graciozi paaugstināties/samazināties.
Šīs pieejas negatīvie aspekti ir tādi, ka pārejas var tikt izlaistas, ja kodētāja vārpsta tiek ātri pagriezta.
Programmatūras atcelšana
Šī metode izmanto divus skaitītājus (atvērts, slēgts), kas ir iestatīti uz nulli. [2]
Kad kontaktā A ir konstatēta pāreja:
- Nepārtraukti aptauja Sazinieties ar A.
- Palieliniet atvērto skaitītāju un atiestatiet slēgto skaitītāju, kad kontakts A ir HIGH.
- Palieliniet slēgto skaitītāju un atiestatiet atvērto skaitītāju, kad kontakts A ir LOW.
- Iziet no cilpas, kad viens no skaitītājiem sasniedz iepriekš noteiktu skaitu. Mēs efektīvi meklējam līdzsvara stāvokļa periodu pēc kontakta atlēciena.
Faktiskais kods:
// ----- Debounce Contact A
while (1) {if (digitalRead (ContactA)) {// ----- ContactA is Open Closed = 0; // Tukšs pretējs integrētājs Open ++; // Integrēt, ja (Open> MaxCount) atgriežas HIGH; } cits {// ----- ContactA is Closed Open = 0; // Tukšs pretējs integrētājs Slēgts ++; // Integrēt, ja (Closed> MaxCount) atgriežas LOW; }}
Nav nepieciešams atslēgt kontaktu B, jo kontakta A un kontakta B pārejas nesakrīt.
Skaitīšana
Mehānisks “aizturētājs” efektīvi dubulto jūsu skaitu, jo starp klikšķiem tiek reģistrēti divi skaitļi (sk. 1. attēlu).
“Aizturēto” skaitu var noteikt, izmantojot 2. moduļa aritmētiku, kā parādīts zemāk.
Faktiskais kods:
// ----- saskaitiet "aizturētos"
if (Count % 2 == 0) {Serial.print ("Count:"); Serial.println (Count / 2); }
Atsauces
Papildu informāciju var atrast:
[1]
howtomechatronics.com/tutorials/arduino/ro…
[2]
newbiehack.com/ButtonorSwitchDebounceinSof…
4. solis: programmatūra
Šim projektam ir nepieciešama jaunākā Ardino Uno R3 IDE versija (integrēta izstrādes vide), kas ir pieejama vietnē
Lejupielādējiet katru no šīm divām Arduino skicēm (pievienots)
- rotary_encoder_1.ino (aptaujas versija)
- rotary_encoder_2.no (pārtraukuma versija)
Veiciet dubultklikšķi uz vēlamās versijas un izpildiet ekrānā redzamos norādījumus.
Izbaudi …
Noklikšķiniet šeit, lai skatītu citus manus norādījumus.
Ieteicams:
LabDroid: Morzes koda kodētājs/dekodētājs: 4 soļi
LabDroid: Morzes koda kodētājs/dekodētājs: Piezīme. Šo norādījumu nevar izpildīt 1: 1 jaunākajā LabDroid versijā. Es drīz to atjaunināšu. Šis projekts parādīs, ko jūs varat darīt ar LabDroid. Tā kā Hello World parasti tiek veidots, pamatojoties uz tekstu, gaismu vai skaņu, es domāju par LabDr
Binārais koku morzes dekodētājs: 7 soļi (ar attēliem)
Bināro koku morzes dekodētājs: a. Raksti {font-size: 110,0%; fonta svars: treknraksts; fontu stils: slīpraksts; teksta dekorēšana: nav; fona krāsa: sarkana;} a. raksti: virziet kursoru {fona krāsa: melna;} Šajā pamācībā ir paskaidrots, kā atšifrēt Morzes kodu, izmantojot Arduino Uno R3.T
RC5 tālvadības protokola dekodētājs bez bibliotēkas: 4 soļi
RC5 tālvadības protokola dekodētājs bez bibliotēkas: pirms rc5 dekodēšanas vispirms apspriežam, kas ir rc5 komanda un kāda ir tās struktūra. tāpēc pamatā rc5 komanda tiek izmantota tālvadības pultīs, ko izmanto televizoros, cd atskaņotājos, d2h, mājas kinozāles sistēmās utt., tai ir 13 vai 14 biti, kas sakārtoti
IR tālvadības pults dekodētājs, izmantojot Arduino: 7 soļi
IR tālvadības pults dekodētājs, izmantojot Arduino: Sveiki veidotāji, šī ir pilna apmācība par to, kā atšifrēt jebkuru IR tālvadības pulti. Vienkārši izpildiet manus soļus zemāk
Vienkāršs elektroniskais ātruma regulators (ESC) bezgalīgai rotācijas servo: 6 soļi
Vienkāršs elektroniskais ātruma regulators (ESC) bezgalīgai rotācijas servo: Ja mūsdienās mēģināt prezentēt elektronisko ātruma regulatoru (ESC), jums jābūt nekaunīgam vai drosmīgam. Lētās elektroniskās ražošanas pasaule ir pilna ar dažādu kvalitātes regulatoriem ar plašu funkciju spektru. Tomēr mans draugs jautā man