V tej vadnici bomo povezali modul igralne palice z mikrokrmilnikom atmega8. Igralna palica je vhodni modul za uporablja za komunikacijo. V bistvu olajša komunikacijo med uporabnikom in strojem. Na spodnji sliki je prikazana krmilna palica.
Modul krmilne palice ima dve osi - ena je vodoravna, druga pa navpična. Vsaka os krmilne palice je pritrjena na potenciometer ali lonec ali spremenljiv upor. Srednji točki sta podrejeni kot Rx in Ry. Ti zatiči so kot izhodni signalni zatiči za JOYSTICK. Ko se palico premika vzdolž vodoravne osi, pri prisotni napajalni napetosti se napetost na zatiču Rx spremeni.
Napetost na Rx se poveča, če se premakne naprej, napetost na Rx zatiču pa se zmanjša, če se premakne nazaj. Podobno se napetost na Ry poveča, ko se premakne navzgor, napetost na Ry zatiču pa se zmanjša, če se premakne navzdol.
Tako imamo na dveh kanalih ADC štiri smeri JOYSTICK- a. V običajnih primerih imamo v normalnih okoliščinah na vsakem zatiču 1 volt. Ko premaknete palico, napetost na vsakem zatiču postane visoka ali nizka, odvisno od smeri. Torej štiri smeri kot (0V, 5V na kanalu 0) za os x; (0V, 5V na kanalu 1) za os y.
Za delo bomo uporabili dva ADC kanala ATMEGA8. Uporabili bomo kanal 0 in kanal 1.
Potrebne komponente
Strojna oprema: ATMEGA8, napajalnik (5v), AVR-ISP PROGRAMER, LED (4 kosi), kondenzator 1000uF, kondenzator 100nF (5 kosov), upor 1KΩ (6 kosov).
Programska oprema: Atmel studio 6.1, progisp ali flash magic.
Shema vezja in delovna razlaga
Napetost na JOYSTICK ni popolnoma linearna; bo hrupno. Za filtriranje hrupa so kondenzatorji nameščeni čez vsak upor v vezju, kot je prikazano na sliki.
Kot je prikazano na sliki, so v vezju štiri LED. Vsaka LED predstavlja vsako smer JOYSTICK. Ko se palico premaknete v smeri, potem ustrezna LED sveti.
Pred nadaljevanjem se moramo pogovoriti o ADC ATMEGA8, V ATMEGA8 lahko damo analogni vhod na katerega koli od ŠTIRIH kanalov PORTC-a, ni pomembno, kateri kanal bomo izbrali, saj so vsi enaki, izbrali bomo kanal 0 ali PIN0 PORTC-a.
V ATMEGA8 je ADC 10-bitne ločljivosti, tako da lahko krmilnik zazna najmanjšo spremembo Vref / 2 ^ 10, tako da če je referenčna napetost 5V, dobimo prirast digitalnega izhoda za vsakih 5/2 ^ 10 = 5mV. Tako bomo za vsakih 5mV prirastka na vhodu imeli prirastek enega pri digitalnem izhodu.
Zdaj moramo nastaviti register ADC na podlagi naslednjih pogojev, 1. Najprej moramo v ADC omogočiti funkcijo ADC.
2. Tu bomo dobili največjo vhodno napetost za pretvorbo ADC + 5V. Tako lahko nastavimo največjo vrednost ali referenco ADC na 5V.
3. Krmilnik ima funkcijo pretvorbe sprožilca, kar pomeni, da se pretvorba ADC izvede šele po zunanjem sprožilcu, saj ne želimo, da bi morali registrirati, da ADC deluje v neprekinjenem načinu prostega teka.
4. Za kateri koli ADC sta frekvenca pretvorbe (analogna vrednost v digitalno vrednost) in natančnost digitalnega izhoda obratno sorazmerna. Za boljšo natančnost digitalnega izhoda moramo izbrati manj pogostost. Za običajno uro ADC nastavimo predprodajo ADC na največjo vrednost (2). Ker uporabljamo interno uro 1MHZ, bo ura ADC (1000000/2).
To so edine štiri stvari, ki jih moramo vedeti za začetek uporabe ADC.
Vse zgornje štiri značilnosti nastavita dva registra:
RDEČA (ADEN): Ta bit je treba nastaviti, da omogočite funkcijo ADC ATMEGA.
MODRA (REFS1, REFS0): Ta dva bita se uporabljata za nastavitev referenčne napetosti (ali največje vhodne napetosti, ki jo bomo podali). Ker želimo imeti referenčno napetost 5V, je treba v tabeli nastaviti REFS0.
RUMENA (ADFR): Ta bit mora biti nastavljen, da ADC deluje neprekinjeno (način prostega teka).
PINK (MUX0-MUX3): Ti štirje biti služijo za sporočanje vhodnemu kanalu. Ker bomo uporabili ADC0 ali PIN0, nam ni treba nastaviti nobenih bitov kot v tabeli.
BROWN (ADPS0-ADPS2): ti trije biti so namenjeni nastavitvi predkalarja za ADC. Ker uporabljamo preskalar 2, moramo nastaviti en bit.
DARK GREEN (ADSC): ta bit je nastavljen za ADC, da začne pretvorbo. Ta bit lahko v programu onemogočite, ko moramo pretvorbo ustaviti.