- Potrebni materiali
- Kako deluje rotacijski dajalnik?
- Vrste rotacijskega dajalnika
- KY-040 Rotacijski dajalnik Izrez in opis
- Diagram rotacijskega dajalnika Arduino
- Programiranje vašega Arduina za rotacijski dajalnik
- Delo rotacijskega dajalnika z Arduinom
Dajalnik je vhodna naprava, ki omogoča uporabniku, da komunicira s sistemom. Izgleda bolj kot radijski potenciometer, vendar oddaja niz impulzov, zaradi česar je njegova uporaba edinstvena. Ko se gumb dajalnika zasuka, se vrti v obliki majhnih korakov, kar mu pomaga pri uporabi koračnega / servo motorja, krmarjenju po zaporedju menijev in povečanju / zmanjšanju vrednosti števila in še veliko več.
V tem članku bomo spoznali različne vrste rotacijskih dajalnikov in njihovo delovanje. Povezali ga bomo tudi z Arduinom in nadzirali vrednost celotnega števila z vrtenjem dajalnika in njegovo vrednost prikazali na 16 * 2 LCD zaslonu. Na koncu te vadnice boste udobno uporabljali rotacijski kodirnik za svoje projekte. Začnimo torej…
Potrebni materiali
- Rotacijski dajalnik (KY-040)
- Arduino UNO
- 16 * 2 alfanumerični LCD
- Potenciometer 10k
- Breadboard
- Priključne žice
Kako deluje rotacijski dajalnik?
Rotacijski dajalnik je elektromehanski pretvornik, kar pomeni, da mehanske gibe pretvori v elektronske impulze. Sestavljen je iz gumba, ki se pri vrtenju premika korak za korakom in ustvarja zaporedje impulznih vlakov z vnaprej določeno širino za vsak korak. Obstaja veliko vrst kodirnikov, vsak s svojim delovnim mehanizmom, o vrstah bomo izvedeli kasneje, zaenkrat pa se osredotočimo le na inkrementalni kodirnik KY040, saj ga uporabljamo za vadnico.
Notranja mehanična struktura dajalnika je prikazana spodaj. V bistvu je sestavljen iz krožnega diska (siva barva) s prevodnimi blazinicami (bakrena barva), nameščenega na vrhu tega krožnega diska. Te prevodne blazinice so nameščene na enaki razdalji, kot je prikazano spodaj. Izhodni zatiči so pritrjeni na vrh tega krožnega diska tako, da ko se gumb zavrti, prevodne blazinice pridejo v stik z izhodnimi zatiči. Tu sta dva izhodna zatiča, izhod A in izhod B, kot je prikazano na spodnji sliki.
Izhodna valovna oblika, ki jo ustvarjata izhodni zatič A in izhod B, je prikazana v modri oziroma zeleni barvi. Ko je prevodna blazinica neposredno pod zatičem, gre visoko, kar pravočasno doseže in ko se prevodna obloga odmakne, se zatič spusti nizko, kar povzroči zgoraj prikazano valovno obliko. Zdaj, če preštejemo število impulzov, bomo lahko ugotovili, za koliko korakov je bil premaknjen dajalnik.
Zdaj se lahko pojavi vprašanje, zakaj potrebujemo dva impulzna signala, ko je en dovolj za štetje števila korakov med vrtenjem gumba. To je zato, ker moramo ugotoviti, v katero smer je bil gumb zasukan. Če si ogledate dva impulza, lahko opazite, da sta oba za 90 ° izven faze. Ko se gumb zavrti v smeri urinega kazalca, se bo izhod A najprej dvignil visoko, ko pa se bo gumb zavrtel v nasprotni smeri urnega kazalca, pa se bo izhod B najprej dvignil visoko.
Vrste rotacijskega dajalnika
Na trgu obstaja veliko vrst rotacijskih dajalnikov, ki jih lahko oblikovalec izbere glede na svojo aplikacijo. Spodaj so navedeni najpogostejši tipi
- Inkrementalni kodirnik
- Absolutni kodirnik
- Magnetni dajalnik
- Optični dajalnik
- Laserski dajalnik
Ti dajalniki so razvrščeni na podlagi izhodnega signala in zaznavalne tehnologije, inkrementalni dajalnik in absolutni dajalniki so razvrščeni na podlagi izhodnega signala, magnetni, optični in laserski dajalniki pa na podlagi senzorske tehnologije. Tu uporabljen dajalnik je inkrementalni dajalnik.
KY-040 Rotacijski dajalnik Izrez in opis
Izpusti rotacijskega dajalnika inkrementalnega tipa KY-040 so prikazani spodaj
Prva dva zatiča (Ground in Vcc) se uporabljata za napajanje dajalnika, običajno se uporablja napajanje + 5V. Dajalnik poleg vrtenja gumba v smeri urnega kazalca in v nasprotni smeri urnega kazalca ima tudi stikalo (Active low), ki ga lahko pritisnete s pritiskom gumba v notranjosti. Signal s tega stikala dobimo prek zatiča 3 (stikalo). Nazadnje ima še dva izhodna zatiča, ki tvorita valovne oblike, kot je bilo že omenjeno zgoraj. Zdaj pa se naučimo, kako ga povezati z Arduinom.
Diagram rotacijskega dajalnika Arduino
Popoln diagram vezja za povezovanje rotacijskega dajalnika z Arduinom je prikazan na spodnji sliki
Rotacijski dajalnik ima 5 nožic v vrstnem redu, kot je prikazano na zgornji nalepki. Prva dva zatiča sta Ground in Vcc, ki je povezan z ozemljitvenim in + 5V zatičem Arduino. Stikalo dajalnika je priključeno na digitalni zatič D10 in je prav tako povlečeno visoko s pomočjo 1k upora. Oba izhodna zatiča sta priključena na D9 oziroma D8.
Za prikaz vrednosti spremenljivke, ki se bo povečala ali zmanjšala z vrtenjem vrtljivega dajalnika, potrebujemo prikazovalni modul. Tu uporabljeni je običajno na voljo 16 * 2 alfa številčni LCD zaslon. Zaslon smo povezali v 4-bitni način in ga napajali s pomočjo + 5V zatiča Arduino. Potenciometer se uporablja za nastavitev kontrasta LCD zaslona. Če želite izvedeti več o povezovanju LCD zaslona z Arduinom, sledite povezavi. Celotno vezje je mogoče zgraditi na vrhu plošče, spodaj sem izgledal približno takole, ko so bile vse povezave opravljene.
Programiranje vašega Arduina za rotacijski dajalnik
Preprosto in enostavno je programirati ploščo Arduino za povezovanje rotacijskega dajalnika, če ste razumeli načelo delovanja rotacijskega kodirnika. Preprosto moramo prebrati število impulzov, da ugotovimo, koliko obratov je napravil dajalnik, in preverimo, kateri impulz je šel najprej visoko, da ugotovimo, v katero smer je zasukal dajalnik. V tej vadnici bomo prikazali število, ki se v prvi vrstici LCD-ja povečuje ali zmanjšuje, v drugi vrstici pa smer dajalnika. Celoten program za to isto lahko najdete na dnu te strani z predstavitvene video, da ne zahteva nobene knjižnice. Zdaj pa razdelimo program na majhne koščke, da bomo razumeli delovanje.
Ker smo uporabili LCD zaslon, smo vključili knjižnico tekočih kristalov, ki je privzeto prisotna v Arduino IDE. Nato določimo nožice za povezavo LCD-ja z Arduinom. Na koncu inicializiramo LCD zaslon na teh nožicah.
#include
Nato v nastavitveni funkciji na LCD zaslonu prikažemo uvodno sporočilo in nato počakamo 2 sekundi, da je sporočilo uporabniku berljivo. S tem želimo zagotoviti, da LCD deluje pravilno.
lcd.print ("rotacijski dajalnik"); // Uvodna vrstica sporočila 1 lcd.setCursor (0, 1); lcd.print ("Z Arduinom"); // Zakasnitev uvodne vrstice sporočila 2 (2000); lcd.clear ();
Rotacijski dajalnik ima tri izhodne zatiče, ki bodo vhodni zatiči za Arduino. Ti trije zatiči so stikalo, izhod A in izhod B. Ti so prijavljeni kot vhodni s pomočjo funkcije pinMode, kot je prikazano spodaj.
// deklaracija načina pin pinMode (Encoder_OuputA, INPUT); pinMode (Encoder_OuputB, INPUT); pinMode (Encoder_Switch, INPUT);
Znotraj funkcije nastavitve praznine beremo stanje izhodnega pin-a, da preverimo zadnje stanje pin-a. Nato bomo te podatke uporabili za primerjavo z novo vrednostjo, da preverimo, kateri zatič (izhod A ali izhod B) je šel visoko.
Prejšnji_izhod = digitalRead (Encoder_OuputA); // Preberemo začetno vrednost izhoda A
Končno znotraj funkcije glavne zanke moramo primerjati vrednost izhoda A in izhoda B s prejšnjim izhodom, da preverimo, katera se najprej uvrsti visoko. To lahko storite s preprosto primerjavo vrednosti trenutnega izhoda A in B s prejšnjim izhodom, kot je prikazano spodaj.
if (digitalRead (Encoder_OuputA)! = Previous_Output) { if (digitalRead (Encoder_OuputB)! = Previous_Output) { Encoder_Count ++; lcd.clear (); lcd.print (Encoder_Count); lcd.setCursor (0, 1); lcd.print ("v smeri urnega kazalca"); }
V zgornjo kodo drugi , če postane pogoj izvede, če je izhod B spremenila od prejšnje proizvodnje. V tem primeru se vrednost spremenljivke dajalnika poveča in LCD prikaže, da je dajalnik zasukan v smeri urnega kazalca . Podobno, če to, če pogoj ne uspe, v naslednjem pogoju else spremenljivko zmanjšamo in prikažemo, da je dajalnik zasukan v nasprotni smeri urnega kazalca . Koda za isto je prikazana spodaj.
else { Encoder_Count--; lcd.clear (); lcd.print (Encoder_Count); lcd.setCursor (0, 1); lcd.print ("v nasprotni smeri urnega kazalca"); } }
Na koncu moramo na koncu glavne zanke posodobiti prejšnjo izhodno vrednost s trenutno izhodno vrednostjo, tako da lahko zanko ponovimo z isto logiko. Naslednja koda naredi enako
Prejšnji_izhod = digitalRead (Encoder_OuputA);
Druga neobvezna stvar je preveriti, ali je pritisnjeno stikalo na dajalniku. To lahko nadzirate s preverjanjem stikalnega zatiča na rotacijskem kodirniku. Ta zatič je aktiven nizki zatič, kar pomeni, da se bo ob pritisku gumba spustil nizko. Če nož ni pritisnjen, ostane visok, smo uporabili tudi uporovni upor, da zagotovimo, da ostane visok, ko stikalo ni pritisnjeno, s čimer se izognemo stanju s plavajočo vejico.
if (digitalRead (Encoder_Switch) == 0) {lcd.clear (); lcd.setCursor (0, 1); lcd.print ("Stikalo pritisnjeno"); }
Delo rotacijskega dajalnika z Arduinom
Ko je strojna oprema in koda pripravljena, jo preprosto naložite na ploščo Arduino in vklopite ploščo Arduino. Napajate ga lahko prek kabla USB ali uporabite 12V adapter. Ko se LCD vklopi, mora prikazati uvodno sporočilo in se nato izprazniti. Zdaj zavrtite vrtljivi dajalnik in videli bi, da se vrednost začne povečevati ali zniževati glede na smer vrtenja. Druga vrstica vam bo pokazala, ali se dajalnik vrti v smeri urnega kazalca ali v nasprotni smeri urnega kazalca. Na spodnji sliki je prikazano enako
Tudi ob pritisku na gumb se v drugi vrstici prikaže, da je gumb pritisnjen. Celotno delo najdete v spodnjem videoposnetku. To je le vzorec programa za povezovanje dajalnika z Arduinom in preverjanje, ali deluje po pričakovanjih. Ko pridete sem, lahko uporabljate kodirnik za kateri koli svoj projekt in ustrezno programirate.
Upam, da ste razumeli vadnico in stvari so delovale tako, kot naj bi se. Če imate kakršne koli težave, za tehnično pomoč uporabite razdelek za komentarje ali forume.