V tomto výučbe sa chystáme prepojiť modul joysticku s mikrokontrolérom atmega8. Ovládačom je vstupný modul použitý pre komunikáciu. V zásade to uľahčuje komunikáciu používateľa a stroja. Na dolnom obrázku je znázornený joystick.
Modul joysticku má dve osi - jednu vodorovnú a druhú zvislú. Každá os joysticku je pripevnená k potenciometru alebo banke alebo premenlivému odporu. Stredové body sú znížené ako Rx a Ry. Tieto piny nesú výstupné signálne piny pre JOYSTICK. Keď sa páčka pohybuje pozdĺž vodorovnej osi, je prítomné napájacie napätie, mení sa napätie na kolíku Rx.
Napätie na Rx sa zvyšuje pri pohybe dopredu, napätie na kolíku Rx sa znižuje pri pohybe dozadu. Podobne sa zvyšuje napätie na Ry, keď sa pohybuje nahor, napätie na kolíku Ry sa znižuje, keď sa pohybuje dole.
Takže máme štyri smery JOYSTICKU na dvoch ADC kanáloch. Za normálnych okolností máme na každých pinoch 1Volt za normálnych okolností. Keď sa pohybuje páčkou, napätie na každom kolíku klesá alebo stúpa v závislosti od smeru. Takže štyri smery ako (0V, 5V na kanáli 0) pre os x; (0V, 5V na kanáli 1) pre os y.
Na vykonanie úlohy použijeme dva kanály ADC ATMEGA8. Budeme používať kanál 0 a kanál 1.
Súčasti sú povinné
Hardvér: ATMEGA8, napájací zdroj (5 V), AVR-ISP PROGRAMÁTOR, LED (4 kusy), kondenzátor 1000 uF, kondenzátor 100 nF (5 kusov), rezistor 1 KΩ (6 kusov).
Softvér: Atmel studio 6.1, progisp alebo flash magic.
Schéma zapojenia a pracovné vysvetlenie
Napätie cez JOYSTICK nie je úplne lineárne; bude to hlučný. Na odfiltrovanie šumu sú cez každý rezistor v obvode umiestnené kondenzátory, ako je to znázornené na obrázku.
Ako je znázornené na obrázku, v obvode sú štyri LED diódy. Každá LED dióda predstavuje každý smer zariadenia JOYSTICK. Ak sa páčkou pohnete v smere, príslušná LED dióda sa rozsvieti.
Než pôjdeme ďalej, musíme si pohovoriť o ADC ATMEGA8, V ATMEGA8 môžeme dať analógový vstup na ktorýkoľvek zo ŠTYROCH kanálov PORTC, nezáleží na tom, ktorý kanál si vyberieme, pretože všetky sú rovnaké, vyberieme kanál 0 alebo PIN0 PORTC.
V ATMEGA8 má ADC 10-bitové rozlíšenie, takže radič dokáže detekovať pocit minimálnej zmeny Vref / 2 ^ 10, takže ak je referenčné napätie 5 V, dostaneme digitálny výstupný prírastok za každých 5/2 ^ 10 = 5mV. Takže pre každý prírastok 5mV na vstupe budeme mať prírastok jedného na digitálnom výstupe.
Teraz musíme nastaviť register ADC na základe nasledujúcich podmienok, 1. Najprv musíme povoliť funkciu ADC v ADC.
2. Tu získate maximálne vstupné napätie pre prevod ADC je + 5V. Môžeme teda nastaviť maximálnu hodnotu alebo referenciu ADC na 5V.
3. Kontrolér má funkciu prevodu spúšťača, čo znamená, že prevod ADC sa uskutoční až po externom spúšťači, pretože nechceme, aby sme museli nastavovať registre, aby ADC bežal v režime nepretržitého voľného chodu.
4. Pre akýkoľvek ADC je frekvencia prevodu (analógová hodnota na digitálnu hodnotu) a presnosť digitálneho výstupu nepriamo úmerná. Pre lepšiu presnosť digitálneho výstupu teda musíme zvoliť menšiu frekvenciu. Pre bežné hodiny ADC nastavujeme predpredaj ADC na maximálnu hodnotu (2). Pretože používame interné hodiny 1MHZ, hodiny ADC budú (10 000 000/2).
To sú jediné štyri veci, ktoré musíme vedieť, aby sme mohli začať s ADC.
Všetky vyššie uvedené štyri funkcie sú nastavené dvoma registrami:
ČERVENÁ (ADEN): Tento bit musí byť nastavený pre povolenie funkcie ADC v ATMEGA.
MODRÁ (REFS1, REFS0): Tieto dva bity sa používajú na nastavenie referenčného napätia (alebo maximálneho vstupného napätia, ktoré dáme). Pretože chceme mať referenčné napätie 5V, mala by byť tabuľka nastavená na REFS0.
ŽLTÁ (ADFR): Tento bit musí byť nastavený, aby ADC bežal nepretržite (režim voľného chodu).
PINK (MUX0-MUX3): Tieto štyri bity slúžia na rozpoznanie vstupného kanálu. Pretože budeme používať ADC0 alebo PIN0, nemusíme nastavovať žiadne bity ako v tabuľke.
BROWN (ADPS0-ADPS2): tieto tri bity slúžia na nastavenie predskaláru pre ADC. Pretože používame prescalar 2, musíme nastaviť jeden bit.
DARK GREEN (ADSC): tento bit nastavený pre ADC na začatie konverzie. Tento bit je možné v programe deaktivovať, keď potrebujeme zastaviť prevod.