
Sisällysluettelo:
2025 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2025-01-23 14:42



Tässä ohjeessa kuvataan yksinkertainen menetelmä peräkkäisen pyörivän kooderin dekoodaamiseksi Arduino Uno R3: lla.
Pieniä ohjelmistorutiineja käytetään siirtymien lukumäärän laskemiseen, kosketuksen poistumisen poistamiseen ja pyörimissuunnan määrittämiseen. Lisäkomponentteja ja hakutaulukoita ei tarvita.
Koodista on saatavana keskeytys- ja keskeytymättömät versiot.
Koodin keskeytysversio vaatii vain yhden keskeytysnastan.
Kuvat:
- Avauskuvassa näkyy koottu anturi.
- Kuvakaappaus näyttää keskeytysversion koodin ja laskurin, kun anturin akselia pyöritetään myötä- ja vastapäivään.
- Videossa näkyy lasku nopean pyörimisen aikana.
Vaihe 1: Piirikaavio

Anturin kytkentäkaavio on esitetty kuvassa 1.
Hyppyjohdot on juotettu suoraan anturin nastoihin.
Vaihda kaksi sinistä johtoa, jos laskusuunta on päinvastainen.
Vaihe 2: Osaluettelo
Seuraavat osat on hankittu osoitteesta
- 1 vain Arduino UNO R3 USB -kaapelilla.
- 1 vain peräkkäinen pyörivä anturi (EC11 tai vastaava) kytkimellä.
- 1 vain akselille sopiva nuppi.
- 3 vain Arduinon uros-uros-hyppyjohdinta.
Vaihe 3: Teoria

Peräkkäiset pyörivät enkooderit tuottavat kaksi neliöaaltoa, joista kukin siirtyy 90 astetta, kuten kuvassa 1 on esitetty.
Logiikkamallit koskettimessa A ja koskettimessa B ovat erilaisia, kun akselia pyöritetään myötäpäivään (CW) ja vastapäivään (CCW) asentojen 1-6 kautta.
Yleisiä menetelmiä pyörimissuunnan määrittämiseksi ovat:
- laitteisto
- kaksois keskeyttää
- kuvion hakutaulukot
Tämä projekti käyttää ohjelmistomenetelmää, joka ei vaadi hakutaulukoita. [1]
Suunta
Sen sijaan, että katsot kontaktin A ja kontaktin B tulostusmalleja, keskitytään yhteystietoon A.
Jos otamme kontaktin B näytteen jokaisen A -kontaktin siirtymisen jälkeen, huomaamme, että:
- Koskettimella A ja koskettimella B on päinvastaiset logiikkatilat, kun anturia käännetään CW
- Koskettimella A ja koskettimella B on sama logiikkatila, kun anturia käännetään CCW
Todellinen koodi:
// ----- Laske siirtymät
CurrentStateA = stateContactA (); if (CurrentStateA! = LastStateA) {CurrentStateB = digitalRead (ContactB); if (CurrentStateA == CurrentStateB) Count ++; if (CurrentStateA! = CurrentStateB) Count--; LastStateA = Nykyinen tilaA; }
Tällä menetelmällä on seuraavat edut:
- hakutaulukoita ei tarvita
- tarvitaan vain yksi keskeytyslinja
Pudota
Kaikki mekaaniset enkooderit kärsivät "kosketuksen pomppimisesta".
Jos kytkinkosketin ei tee/rikkoudu puhtaasti, sen logiikkatila värähtelee nopeasti HIGH: sta LOW: iin, kunnes kytkinkosketin asettuu. Tämä johtaa vääriin laskelmiin.
Yksi tapa estää kontaktin pomppiminen on lisätä pieni kondensaattori jokaisen kytkinkoskettimen väliin. Kondensaattori ja siihen liittyvä vetovastus muodostavat integraattorin, joka oikosulkee tehokkaasti korkeat taajuudet ja mahdollistaa kytkimen jännitteen nousun/laskun.
Tämän lähestymistavan haittapuoli on, että siirtymät voivat jäädä väliin, jos anturin akselia pyöritetään nopeasti.
Ohjelmiston purkaminen
Tämä menetelmä käyttää kahta laskuria (avoin, suljettu), jotka on asetettu nollaan. [2]
Kun yhteys A on havainnut siirtymän:
- Jatkuva kysely Ota yhteyttä A.
- Nosta auki -laskuria ja nollaa suljettu laskuri aina, kun kosketin A on KORKEA.
- Suurenna Suljettu -laskuria ja nollaa Avaa -laskuri aina, kun kosketin A on MATALA.
- Poistu silmukasta, kun yksi laskureista saavuttaa ennalta määrätyn määrän. Etsimme tehokkaasti vakaan tilan ajanjaksoa kontaktien poistumisen jälkeen.
Todellinen koodi:
// ----- Kytkentäyhteys A
while (1) {if (digitalRead (ContactA)) {// ----- ContactA is Open Closed = 0; // Tyhjä vastakkainen integraattori Open ++; // Integroi, jos (Avaa> MaxCount) palaa HIGH; } else {// ----- ContactA is Closed Open = 0; // Tyhjä vastakkainen integraattori Suljettu ++; // Integroi, jos (Suljettu> MaxCount) palaa LOW; }}
Ei tarvitse purkaa kontaktia B, koska yhteydet A ja B siirtyvät toisiinsa.
Laskenta
Mekaaninen "pidätin" kaksinkertaistaa laskusi, koska napsautusten väliin rekisteröidään kaksi lukua (katso kuva 1).
”Pysäytysten” määrä voidaan määrittää käyttämällä modulo 2: n aritmeettista menetelmää, kuten alla on esitetty.
Todellinen koodi:
// ----- Laske "pidätykset"
if (Count % 2 == 0) {Serial.print ("Count:"); Serial.println (Count / 2); }
Viitteet
Lisätietoja löytyy osoitteesta:
[1]
howtomechatronics.com/tutorials/arduino/ro…
[2]
newbiehack.com/ButtonorSwitchDebounceinSof…
Vaihe 4: Ohjelmisto
Tämä projekti vaatii viimeisimmän version Ardino Uno R3 IDE: stä (integroitu kehitysympäristö), joka on saatavilla osoitteesta
Lataa seuraavat kaksi Arduino -luonnosta (liitteenä)
- rotary_encoder_1.ino (äänestysversio)
- rotary_encoder_2.no (keskeytysversio)
Kaksoisnapsauta haluamaasi versiota ja noudata näytön ohjeita.
Nauttia …
Napsauta tätä nähdäksesi muut ohjeeni.
Suositeltava:
Binaarinen puumorse -dekooderi: 7 vaihetta (kuvilla)

Binaarinen puumorse-dekooderi: a. Artikkelit {font-size: 110,0%; fontin paino: lihavoitu; fontti-tyyli: kursivoitu; tekstin koristelu: ei mitään; taustaväri: punainen;} a. artikkelit: hover {background-color: black;} Tässä ohjeessa selitetään, kuinka Morse-koodi puretaan Arduino Uno R3.T -laitteella
RC5 -kaukosäätimen protokollan dekooderi ilman kirjastoa: 4 vaihetta

RC5 Remote Control Protocol -dekooderi ilman kirjastoa: ennen rc5: n dekoodausta keskustelemme ensin siitä, mikä on rc5 -komento ja mikä on sen rakenne. joten pohjimmiltaan rc5 -komentoa käytetään kaukosäätimissä, joita käytetään televisioissa, cd -soittimissa, d2h: ssa, kotiteatterijärjestelmissä jne., siinä on 13 tai 14 bittiä järjestettynä
IR -KAUKO -DEKOODERI ARDUINO -KÄYTTÖÖN: 4 vaihetta (kuvien kanssa)

IR -KAUKODEKOODERI ARDUINOA KÄYTTÄMÄLLÄ: Tämä on toinen käyttäjäystävällinen opetusohjelma erittäin yksinkertaisen IR -kauko -dekooderin tekemiseen Arduino- ja IR -vastaanottimen avulla. Tämä opetusohjelma kattaa kaiken ohjelmiston asentamisesta infrapunavastaanottimen käyttöön ja signaalien purkamiseen. Nämä
IR -kaukosäätimen dekooderi Arduinon avulla: 7 vaihetta

IR -kaukosäätimen dekooderi Arduinon avulla: Hei Makers, Tämä on täydellinen opetusohjelma minkä tahansa IR -kaukosäätimen purkamisesta. Seuraa vain alla olevia vaiheitani
Basys 3 Morse -dekooderi: 11 vaihetta

Basys 3 Morse -dekooderi: Tämä on projekti college -luokalle. Tämä projekti on kirjoitettu VHDL -muodossa Vivado -ohjelmassa. Tehtävät kaikkien tarvittavien moduulien luomiseksi Morse -dekooderin käyttöön Basys 3 -levyä käyttäen. Taulua käytetään ottamaan morse -koodi swi