Përmbajtje:
Video: Dekodues i thjeshtë rrotullues: 4 hapa
2024 Autor: John Day | [email protected]. E modifikuara e fundit: 2024-01-30 12:19
Ky udhëzues përshkruan një metodë të thjeshtë të deshifrimit të një koduesi rrotullues vijues duke përdorur një Arduino Uno R3.
Rutinat kompakte të softuerit përdoren për të numëruar numrin e kalimeve, për të eleminuar kërcimin e kontaktit dhe për të përcaktuar drejtimin e rrotullimit. Komponentët shtesë dhe tabelat e kërkimit nuk kërkohen.
Ofrohen versione të ndërprera dhe pa ndërprerje të kodit.
Versioni i ndërprerjes së kodit kërkon vetëm një kunj të vetëm ndërprerjeje.
Imazhet:
- Fotografia e hapjes tregon koduesin e montuar.
- Pamja e ekranit tregon kodin për versionin e ndërprerë dhe numërimin kur boshti i koduesit rrotullohet në drejtim të akrepave të orës dhe në drejtim të kundërt.
- Video tregon numërimin gjatë rrotullimit të shpejtë.
Hapi 1: Diagrami i Qarkut
Diagrami i instalimeve të koduesit është treguar në fig.1.
Telat e kërcyesit ngjiten drejtpërdrejt në kunjat e koduesit.
Ndërroni dy telat blu nëse drejtimi i numërimit është i kundërt.
Hapi 2: Lista e Pjesëve
Pjesët e mëposhtme janë marrë nga
- 1 vetëm Arduino UNO R3 me kabllo USB.
- 1 vetëm kodifikues rrotullues vijues (EC11 ose ekuivalent) me ndërprerës.
- 1 çelës i vetëm që i përshtatet boshtit.
- 3 vetëm telat bluzë Arduino nga burra në meshkuj.
Hapi 3: Teoria
Koduesit rrotullues të njëpasnjëshëm gjenerojnë dy valë katrore secila prej të cilave zhvendosen me 90 gradë siç tregohet në Fig.1.
Modelet logjike në Kontaktin A dhe Kontaktin B janë të ndryshme kur boshti rrotullohet në drejtim të akrepave të orës (CW) dhe kundër akrepave të orës (CCW) përmes pozicioneve 1 deri në 6.
Metodat e zakonshme të përcaktimit të drejtimit të rrotullimit përfshijnë:
- harduer
- binjake ndërpret
- tabelat e kërkimit të modeleve
Ky projekt përdor një metodë softuerike që nuk kërkon tabela kërkimi. [1]
Drejtimi
Në vend që të shikojmë modelet e daljes nga Kontakti A dhe Kontakti B, le të përqëndrohemi në Kontaktin A.
Nëse marrim mostrën e Kontaktit B pas çdo kalimi të Kontaktit A vërejmë se:
- Kontakti A dhe Kontakti B kanë gjendje të kundërta logjike kur kodifikuesi rrotullohet CW
- Kontakti A dhe Kontakti B kanë të njëjtën gjendje logjike kur kodifikuesi rrotullohet CCW
Kodi aktual:
// ----- Numëroni kalimet
CurrentStateA = stateContactA (); nëse (CurrentStateA! = LastStateA) {CurrentStateB = digitalRead (KontaktB); nëse (CurrentStateA == CurrentStateB) Numëroni ++; nëse (CurrentStateA! = CurrentStateB) Numëroni--; LastStateA = CurrentStateA; }
Kjo metodë ofron përparësitë e mëposhtme:
- tabelat e kërkimit nuk janë të nevojshme
- kërkohet vetëm një linjë e vetme e ndërprerjes
Debounce
Të gjithë kodifikuesit mekanikë vuajnë nga "fryrja e kontaktit".
Nëse një kontakt ndërprerës nuk e bën/thyen pastër gjendja e tij logjike do të lëkundet me shpejtësi nga LART to në LOW derisa kontakti i kalimit të vendoset. Kjo rezulton në numërime të rreme.
Një metodë për të shtypur kërcimin e kontaktit është shtimi i një kondensatori të vogël në çdo kontakt ndërprerës. Kondensatori dhe rezistenca e lidhur tërheqëse formojnë një integrues i cili shkurton në mënyrë efektive frekuencat e larta dhe lejon që tensioni i ndërprerës të rritet/të bjerë me hijeshi.
Ana negative e kësaj qasjeje është se kalimet mund të humbasin nëse boshti i koduesit rrotullohet me shpejtësi.
Debouncing Software
Kjo metodë përdor dy numërues (të hapur, të mbyllur) që janë vendosur në zero. [2]
Pasi të zbulohet një kalim në Kontaktin A:
- Sondazh i vazhdueshëm Kontaktoni A.
- Rritni numëruesin e hapur dhe rivendosni numëruesin e mbyllur, sa herë që Kontakti A është i Lartë.
- Rritni numëruesin e mbyllur dhe rivendosni numëruesin e hapur, sa herë që Kontakti A është i ULT.
- Dilni nga laku kur një nga numëruesit arrin një numër të paracaktuar. Ne po kërkojmë në mënyrë efektive periudhën e gjendjes së qëndrueshme pas çdo kërcimi të kontaktit.
Kodi aktual:
// ----- Debounce Kontakti A
ndërsa (1) {nëse (digitalRead (ContactA)) {// ----- ContactA është e hapur e mbyllur = 0; // Integruesi i zbrazët përballë Open ++; // Integroni nëse (Open> MaxCount) kthehet HIGH; } else {// ----- ContactA është e mbyllur e hapur = 0; // Integruesi i zbrazët përballë Closed ++; // Integroni nëse (Mbyllur> MaxCount) kthehet LOW; }}
Nuk ka nevojë të anuloni Kontaktin B pasi kalimet e Kontaktit A dhe Kontaktit B nuk përkojnë.
Duke numëruar
Një "ndalim" mekanik në mënyrë efektive dyfishon numrin tuaj pasi dy akuza regjistrohen midis klikimeve (shiko fig. 1).
Numri i "ndaluesve" mund të përcaktohet duke përdorur aritmetikën modulo 2 siç tregohet më poshtë.
Kodi aktual:
// ----- Numëroni "të ndaluarit"
if (Count % 2 == 0) {Serial.print ("Count:"); Serial.println (Numërimi / 2); }
Referencat
Informacione të mëtejshme mund të gjenden në:
[1]
howtomechatronics.com/tutorials/arduino/ro…
[2]
newbiehack.com/ButtonorSwitchDebounceinSof…
Hapi 4: Softuer
Ky projekt kërkon një version të fundit të Ardino Uno R3 IDE (mjedisi i integruar i zhvillimit) i cili është në dispozicion nga
Shkarkoni secilën nga dy skicat e mëposhtme Arduino (bashkangjitur)
- rotary_encoder_1.ino (versioni i sondazhit)
- rotary_encoder_2.no (versioni i ndërprerjes)
Klikoni dy herë në versionin tuaj të preferuar dhe ndiqni udhëzimet në ekran.
Shijoni…
Klikoni këtu për të parë udhëzimet e mia të tjera udhëzuese.
Recommended:
Si të bëni një Dekodues të Thjeshtë të DTMF (toni) të linjës telefonike: 3 hapa
Si të bëni një Dekodues të Thjeshtë të Linjës Telefonike DTMF (ton): Ky është një projekt i thjeshtë që ju lejon të deshifroni sinjalet DTMF në thelb çdo linjë telefonike. Në këtë tutorial, ne po përdorim deshifruesin MT8870D. Ne po përdorim një dekodues të paravendosur të tonit, sepse, më besoni, është një dhimbje në pjesën e pasme të provosh dhe ta bësh atë me
Si të Programoni Dekodues IR për Kontrollin e Motorit AC me shumë shpejtësi: 7 hapa
Si të Programoni Dekoduesin IR për Kontrollin e Motorit AC me shumë shpejtësi: Motorët me një fazë të rrymës alternative gjenden zakonisht në sendet shtëpiake siç janë tifozët dhe shpejtësia e tyre mund të kontrollohet lehtësisht kur përdorni një numër dredha-dredha për shpejtësi të caktuara. Në këtë Instructable ne ndërtojmë një kontrollues dixhital i cili një
Dekodues i telekomandës IR duke përdorur Arduino: 7 hapa
Dekoduesi i telekomandës IR duke përdorur Arduino: Përshëndetje krijues, ky është një mësim i plotë se si të deshifroni çdo telekomandë IR. Ndiqni hapat e mi më poshtë
Dekodues i sensorit Arduino RF: 5 hapa
Dekoduesi i sensorit Arduino RF: Shtëpia ime e mëparshme erdhi me një sistem sigurie të para-instaluar që kishte sensorë të dyerve, një sensor lëvizjeje dhe një panel kontrolli. Çdo gjë ishte e lidhur fort në një kuti të madhe elektronike në një dollap dhe kishte udhëzime për lidhjen e një telefoni fiks në automjet
Monitor rrotullues ose rrotullues LCD: 6 hapa
Monitor Rotate ose Pivot Lcd: Ky pajisje është shumë i dobishëm për rrotullimin e monitorit 90 gradë në mënyrë që të shihni ose lexoni dokumente në mënyrë portrete, ka drejtues për kartën video që mbështesin këtë mënyrë, në rastin tim unë e përdor atë për të lexuar pdf