V tomto tutoriálu budeme propojovat modul joysticku s mikrokontrolérem atmega8. Ovladačem je vstupní modul použit pro komunikaci. V zásadě to usnadňuje komunikaci zařízení uživatele. Na níže uvedeném obrázku je zobrazen joystick.
Modul joysticku má dvě osy - jedna je vodorovná a druhá svislá. Každá osa joysticku je namontována na potenciometr nebo hrnec nebo proměnný odpor. Střední body jsou sesazeny jako Rx a Ry. Tyto piny nesou jako piny výstupního signálu pro JOYSTICK. Když se páčka pohybuje podél vodorovné osy, za přítomnosti napájecího napětí, se mění napětí na Rx pinu.
Napětí na Rx se zvyšuje při pohybu vpřed, napětí na Rx kolíku klesá při pohybu vpřed. Podobně se napětí na Ry zvyšuje, když se pohybuje nahoru, napětí na Ry pin klesá, když se pohybuje dolů.
Takže máme čtyři směry JOYSTICKU na dvou kanálech ADC. V normálních případech máme za normálních okolností na každém kolíku 1Volt. Když se hůl pohybuje, napětí na každém pinu klesá nebo klesá v závislosti na směru. Takže čtyři směry jako (0V, 5V na kanálu 0) pro osu x; (0V, 5V na kanálu 1) pro osu y.
K tomu použijeme dva kanály ADC ATMEGA8. Budeme používat kanál 0 a kanál 1.
Požadované komponenty
Hardware: ATMEGA8, napájecí zdroj (5 V), AVR-ISP PROGRAMÁTOR, LED (4 kusy), kondenzátor 1000 uF, kondenzátor 100 nF (5 kusů), rezistor 1 KΩ (6 kusů).
Software: Atmel studio 6.1, progisp nebo flash magic.
Schéma zapojení a pracovní vysvětlení
Napětí přes JOYSTICK není zcela lineární; bude to hlučný. K odfiltrování hluku jsou kondenzátory umístěny napříč každým odporem v obvodu, jak je znázorněno na obrázku.
Jak je znázorněno na obrázku, v obvodu jsou čtyři LED. Každá LED představuje každý směr JOYSTICKU. Pohybem páky ve směru se rozsvítí příslušná LED.
Než půjdeme dál, musíme si promluvit o ADC ATMEGA8, V ATMEGA8 můžeme dát analogový vstup kterémukoli ze ČTYŘI kanálů PORTC, nezáleží na tom, který kanál zvolíme, protože všechny jsou stejné, zvolíme kanál 0 nebo PIN0 PORTC.
V ATMEGA8 má ADC 10bitové rozlišení, takže regulátor dokáže detekovat smysl minimální změny Vref / 2 ^ 10, takže pokud je referenční napětí 5V, dostaneme digitální výstupní přírůstek pro každých 5/2 ^ 10 = 5mV. Takže pro každý přírůstek 5mV na vstupu budeme mít přírůstek jednoho na digitálním výstupu.
Nyní musíme nastavit registr ADC na základě následujících podmínek, 1. Nejprve musíme povolit funkci ADC v ADC.
2. Zde získáme maximální vstupní napětí pro převod ADC + 5V. Můžeme tedy nastavit maximální hodnotu nebo referenci ADC na 5V.
3. Řadič má funkci převodu spouštěče, což znamená, že převod ADC proběhne až po externím spouštěči, protože nechceme, abychom potřebovali nastavit registry pro provoz ADC v režimu nepřetržitého volného chodu.
4. U jakéhokoli ADC jsou frekvence převodu (analogová hodnota na digitální hodnotu) a přesnost digitálního výstupu nepřímo úměrné. Pro lepší přesnost digitálního výstupu tedy musíme zvolit nižší frekvenci. U normálních hodin ADC nastavujeme předprodej ADC na maximální hodnotu (2). Protože používáme vnitřní hodiny 1MHZ, hodiny ADC budou (10 000 000/2).
To jsou jediné čtyři věci, které potřebujeme vědět, abychom mohli začít s ADC.
Všechny výše uvedené čtyři funkce jsou nastaveny dvěma registry:
ČERVENÁ (ADEN): Tento bit musí být nastaven pro povolení funkce ADC ATMEGA.
MODRÁ (REFS1, REFS0): Tyto dva bity se používají k nastavení referenčního napětí (nebo maximálního vstupního napětí, které dáme). Protože chceme mít referenční napětí 5V, měl by být REFS0 nastaven podle tabulky.
ŽLUTÁ (ADFR): Tento bit musí být nastaven, aby ADC běžel nepřetržitě (režim volného chodu).
PINK (MUX0-MUX3): Tyto čtyři bity slouží ke sdělování vstupního kanálu. Protože budeme používat ADC0 nebo PIN0, nemusíme nastavovat žádné bity jako v tabulce.
BROWN (ADPS0-ADPS2): tyto tři bity slouží k nastavení prescalar pro ADC. Protože používáme prescalar 2, musíme nastavit jeden bit.
DARK GREEN (ADSC): tento bit nastaven pro ADC ke spuštění převodu. Tento bit lze v programu deaktivovat, když potřebujeme zastavit převod.