- Tarvittavat materiaalit
- Kuinka pyörivä kooderi toimii?
- Rotary Encoder -tyypit
- KY-040-pyörivän kooderin pinout ja kuvaus
- Arduino-kiertokooderin piirikaavio
- Arduino for Rotary Encoderin ohjelmointi
- Rotary Encoderin toiminta Arduinon kanssa
Pyörivä kooderi on syöttölaite, jonka avulla käyttäjä voi olla vuorovaikutuksessa järjestelmän kanssa. Se näyttää enemmän kuin radio-potentiometriltä, mutta se tuottaa pulssijonon, mikä tekee sovelluksesta ainutlaatuisen. Kun enkooderin nappulaa käännetään, se pyörii pienten vaiheiden muodossa, mikä auttaa sitä käyttämään askelmoottorin / servomoottorin ohjausta, navigointia valikkosarjassa ja luvun arvon lisäämistä / vähentämistä ja paljon muuta.
Tässä artikkelissa opit erityyppisistä Rotary Encodereista ja niiden toiminnasta. Olemme myös liitäntä se Arduino ja valvoa arvo kokonaisluku pyörittämällä Encoder ja näyttää sen arvo on 16 * 2 LCD-näyttö. Tämän opetusohjelman lopussa voit käyttää Rotary Encoderia projektissasi. Joten aloitetaan…
Tarvittavat materiaalit
- Pyörivä kooderi (KY-040)
- Arduino UNO
- 16 * 2 aakkosnumeerinen LCD-näyttö
- Potentiometri 10k
- Leipälauta
- Johtojen liittäminen
Kuinka pyörivä kooderi toimii?
Rotary Encoder on sähkömekaaninen anturi, mikä tarkoittaa, että se muuntaa mekaaniset liikkeet elektronisiksi pulsseiksi. Se koostuu nupista, joka pyöriessään liikkuu askel askeleelta ja tuottaa sarjan pulssijunia, joilla on ennalta määritelty leveys kullekin vaiheelle. Enkoodereita on monen tyyppisiä, joista jokaisella on oma toimintamekanisminsa, opimme tyypistä myöhemmin, mutta keskitykäämme nyt vain KY040-inkrementtianturiin, koska käytämme sitä opetusohjelmaamme.
Kooderin sisäinen mekaaninen rakenne on esitetty alla. Se koostuu periaatteessa pyöreästä levystä (harmaa väri), jossa on johtavat tyynyt (kuparinväriset), jotka on asetettu tämän pyöreän levyn päälle. Nämä johtavat tyynyt sijoitetaan tasaiselle etäisyydelle alla olevan kuvan mukaisesti. Lähtötapit on kiinnitetty tämän pyöreän levyn päälle siten, että kun nuppi pyörii, johtavat tyynyt joutuvat kosketukseen ulostulotappien kanssa. Tässä on kaksi lähtöliitintä, lähtö A ja lähtö B, kuten alla olevassa kuvassa on esitetty.
Lähtötapin A ja B tuottama lähtöaaltomuoto näkyy vastaavasti sinisenä ja vihreä. Kun johtava tyyny on suoraan tapin alla, se nousee korkealle aiheuttaen sen ajoissa ja kun johtava tyyny siirtyy poispäin, tappi laskee matalaksi, mikä johtaa yllä esitetyn aaltomuodon sammumisaikaan. Nyt kun laskemme pulssien lukumäärän, voimme määrittää, kuinka monta vaihetta kooderi on siirretty.
Nyt voi syntyä kysymys, miksi tarvitsemme kahta pulssisignaalia, kun yksi riittää laskemaan nuppia pyöritettäessä suoritettujen vaiheiden määrän. Tämä johtuu siitä, että meidän on tunnistettava, mihin suuntaan nappulaa on käännetty. Kun katsot kahta pulssiä, huomaat, että molemmat ovat 90 ° vaiheen ulkopuolella. Siksi kun nappulaa käännetään myötäpäivään, lähtö A menee ensin korkealle ja kun nappulaa käännetään vastapäivään, lähtö B nousee ensin korkealle.
Rotary Encoder -tyypit
Markkinoilla on monenlaisia kiertokoodereita, jotka suunnittelija voi valita yhden sovelluksensa mukaan. Yleisimmät tyypit on lueteltu alla
- Inkrementtianturi
- Absoluuttinen kooderi
- Magneettinen kooderi
- Optinen kooderi
- Laserkooderi
Nämä kooderit luokitellaan lähtösignaalin ja tunnistustekniikan perusteella, inkrementtianturi ja absoluuttianturit luokitellaan lähtösignaalin perusteella ja magneettinen, optinen ja laserkooderi tunnistustekniikan perusteella. Tässä käytetty kooderi on inkrementtityyppinen kooderi.
KY-040-pyörivän kooderin pinout ja kuvaus
KY-040-inkrementtityyppisen anturin pinouts on esitetty alla
Kahta ensimmäistä nastaa (maadoitus ja Vcc) käytetään kooderin virtalähteeseen, tyypillisesti käytetään + 5 V: n syöttöä. Sen lisäksi, että kooderia pyöritetään myötäpäivään ja vastapäivään, kooderissa on myös kytkin (aktiivinen matala), jota voidaan painaa painamalla sisäpuolella olevaa nuppia. Tämän kytkimen signaali saadaan tapin 3 (kytkin) kautta. Lopuksi siinä on kaksi ulostulotappia, jotka tuottavat aaltomuodot, kuten edellä on jo keskusteltu. Anna meidän oppia, miten se liitetään Arduinoon.
Arduino-kiertokooderin piirikaavio
Täydellinen kytkentäkaavio Interfacing Rotary Encoder with Arduinon kanssa on esitetty alla olevassa kuvassa
Kiertokooderissa on 5 nastaa yllä olevassa tarrassa esitetyssä järjestyksessä. Kaksi ensimmäistä nastaa ovat Ground ja Vcc, jotka on kytketty Arduinon Ground- ja + 5V-nastaan. Anturin kytkin on kytketty digitaaliseen tapiin D10 ja vedetty myös korkealle 1 k: n vastuksen kautta. Kaksi ulostulonasta on kytketty vastaavasti D9: ään ja D8: een.
Tarvitsemme näyttömoduulin, jotta voimme näyttää muuttujan arvon, jota korotetaan tai pienennetään kiertokooderia kiertämällä. Tässä käytettävä on yleisesti saatavana 16 * 2-kirjaiminen numeerinen LCD-näyttö. Olemme yhdistäneet näytön käytettäväksi 4-bittisessä tilassa ja saaneet virran Arduinon + 5 V: n nastasta. Potentiometriä käytetään nestekidenäytön kontrastin säätämiseen. Seuraa linkkiä, jos haluat lisätietoja LCD-näytön liittämisestä Arduinoon. Koko piiri voidaan rakentaa leipälevyn päälle, näytin jotain tällaista alla, kun kaikki liitännät oli tehty.
Arduino for Rotary Encoderin ohjelmointi
Arduino-kortin ohjelmointi kiertokooderin liittämiseen sen kanssa on melko helppoa ja suoraviivaista, jos olisit ymmärtänyt pyörivän kooderin toimintaperiaatteen. Meidän on yksinkertaisesti luettava pulssin määrä sen määrittämiseksi, kuinka monta kierrosta kooderi on tehnyt, ja tarkistettava, mikä pulssi nousi korkealle, jotta löydettäisiin mihin suuntaan kooderia pyöritettiin. Tässä opetusohjelmassa näytetään numero, jota lisätään tai vähennetään nestekidenäytön ensimmäisellä rivillä ja kooderin suunta toisella rivillä. Täydellinen ohjelma toimittaessa samalla löytyy alareunassa tämän sivun kanssa esittelyvideo, se ei vaadi kirjaston. Jaetaan nyt ohjelma pieniksi paloiksi ymmärtämään työskentelyä.
Koska olemme käyttäneet LCD-näyttöä, sisällytämme nestekidekirjaston, joka on oletusarvoisesti Arduino IDE: ssä. Sitten määritetään nastat LCD-laitteen liittämiseksi Arduinoon. Lopuksi alustamme LCD-näytön näille nastoille.
#sisältää
Seuraavaksi asetustoiminnon sisällä näytämme johdantoviestin LCD-näytöllä ja odotamme sitten 2 sekuntia, jotta viesti on käyttäjän luettavissa. Näin varmistetaan, että LCD-näyttö toimii oikein.
lcd.print ("Rotary Encoder"); // Johdeviestirivi 1 lcd.setCursor (0, 1); lcd.print ("Arduinon kanssa"); // Intro Message line 2 delay (2000); lcd.clear ();
Pyörivässä enkooderissa on kolme lähtönastaa, jotka ovat Arduinon INPUT-nastoja. Nämä kolme nastaa ovat kytkin, lähtö A ja lähtö B. Nämä ilmoitetaan syötteiksi käyttämällä pinMode- toimintoa alla olevan kuvan mukaisesti.
// pin- tilailmoitus pinMode (Encoder_OuputA, INPUT); pinMode (Encoder_OuputB, INPUT); pinMode (Encoder_Switch, INPUT);
Void-asetustoiminnon sisällä luemme A-ulostulon tilan tarkistaaksesi tapin viimeisen tilan. Tämän jälkeen verrataan uuteen arvoon näitä tietoja tarkistaaksemme, mikä nasta (lähtö A tai lähtö B) on noussut korkealle.
Previous_Output = digitalRead (Encoder_OuputA); // Lue tuotoksen A alkuarvo
Lopuksi pääsilmukka- toiminnon sisällä meidän on verrattu lähdön A ja lähdön B arvoa edelliseen lähtöön tarkistaaksemme, kumpi nousee ensin. Tämä voidaan tehdä yksinkertaisesti vertaamalla A: n ja B: n nykyisen lähdön arvoa edelliseen lähtöön alla olevan kuvan mukaisesti.
if (digitalRead (Encoder_OuputA)! = Previous_Output) { if (digitalRead (Encoder_OuputB)! = Previous_Output) { Encoder_Count ++; lcd.clear (); lcd.print (kooderin_luku); lcd.setCursor (0, 1); lcd.print ("myötäpäivään"); }
Yllä olevassa koodissa toinen, jos ehto suoritetaan, jos lähtö B on muuttunut edellisestä lähdöstä. Siinä tapauksessa enkooderin muuttujan arvoa lisätään ja nestekidenäyttö näyttää, että kooderia pyöritetään myötäpäivään . Samoin jos että jos ehto ei, seuraavassa muu ehto me pienentämiseksi muuttuja ja näyttö siitä, että kooderi pyöritetään vastapäivään suuntaan. Saman koodi näkyy alla.
else { Encoder_Count--; lcd.clear (); lcd.print (Encoder_Count); lcd.setCursor (0, 1); lcd.print ("vastapäivään"); } }
Lopuksi, pääsilmukan lopussa meidän on päivitettävä edellinen lähtöarvo nykyisellä lähtöarvolla, jotta silmukka voidaan toistaa samalla logiikalla. Seuraava koodi tekee saman
Previous_Output = digitalRead (Encoder_OuputA);
Toinen valinnainen asia on tarkistaa, painetaanko kooderin kytkintä. Tätä voidaan valvoa tarkistamalla kiertokooderin kytkintappi. Tämä tappi on aktiivinen matala tappi, mikä tarkoittaa, että se menee matalalle, kun painiketta painetaan. Ellei sitä paineta, tappi pysyy korkealla, olemme myös käyttäneet ylösvetovastusta varmistaaksemme, että se pysyy korkealla, kun kytkintä ei paineta, jotta vältetään liukuluku.
if (digitalRead (kooderin_kytkin) == 0) {lcd.clear (); lcd.setCursor (0, 1); lcd.print ("Kytkin painettu"); }
Rotary Encoderin toiminta Arduinon kanssa
Kun laitteisto ja koodi ovat valmiit, lataa koodi Arduino-kortille ja käynnistä Arduino Board. Voit joko virtaa USB-kaapelilla tai käyttää 12 V: n sovitinta. Virran ollessa kytkettynä nestekidenäyttöön tulee näyttää johdantoviesti ja tyhjentyä. Kierrä nyt kiertokooderia ja sinun pitäisi nähdä, että arvo alkaa kasvaa tai laskea kiertosuunnan perusteella. Toinen rivi näyttää, pyörivätkö kooderia myötä- tai vastapäivään. Alla oleva kuva osoittaa saman
Myös kun painiketta painetaan, toinen rivi näyttää, että painiketta painetaan. Koko työ löytyy alla olevasta videosta. Tämä on vain esimerkkiohjelma, joka yhdistää kooderin Arduinoon ja tarkistaa, toimiiko se odotetusti. Kun olet täällä, sinun pitäisi pystyä käyttämään kooderia missä tahansa projektissasi ja ohjelmasi vastaavasti.
Toivottavasti olet ymmärtänyt opetusohjelman ja asiat toimineet niin kuin sen pitäisi. Jos sinulla on ongelmia, käytä kommenttiosaa tai foorumeita tekniseen apuun.