Përmbajtje:

Dekodues i thjeshtë rrotullues: 4 hapa
Dekodues i thjeshtë rrotullues: 4 hapa

Video: Dekodues i thjeshtë rrotullues: 4 hapa

Video: Dekodues i thjeshtë rrotullues: 4 hapa
Video: Gjuha Shqipe 12 Filara Mesimi 6 1 Ligjërimi i thjeshtë dhe ligjërimi bisedor 2024, Nëntor
Anonim
Image
Image
Dekodues i thjeshtë rrotullues
Dekodues i thjeshtë rrotullues

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 qarkut
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

Teori
Teori

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: