W tym samouczku zamierzamy połączyć moduł joysticka z mikrokontrolerem atmega8. JOY kija jest modułem wejściowym wykorzystywanym do komunikacji. Zasadniczo ułatwia komunikację użytkownika z maszyną. Joystick pokazano na poniższym rysunku.
Moduł joysticka ma dwie osie - jedna jest pozioma, a druga pionowa. Każda oś joysticka jest zamocowana do potencjometru lub potencjometru lub zmiennej rezystancji. Punkty środkowe są obniżane jako Rx i Ry. Te piny służą jako piny sygnału wyjściowego dla JOYSTICK. Gdy drążek jest przesuwany wzdłuż osi poziomej, przy obecnym napięciu zasilania, zmienia się napięcie na pinie Rx.
Napięcie na Rx rośnie, gdy jest przesuwany do przodu, napięcie na styku Rx maleje, gdy jest przesuwany do tyłu. Podobnie, napięcie na Ry rośnie, gdy jest przesuwany w górę, napięcie na szpilce Ry spada, gdy jest przesuwany w dół.
Mamy więc cztery kierunki JOYSTICK na dwóch kanałach ADC. W normalnych przypadkach mamy 1 V na każdym pinie w normalnych warunkach. Gdy drążek jest poruszany, napięcie na każdym pinie spada lub spada w zależności od kierunku. Czyli cztery kierunki jako (0 V, 5 V na kanale 0) dla osi x; (0 V, 5 V na kanale 1) dla osi y.
Będziemy używać dwóch kanałów ADC ATMEGA8 do wykonania tego zadania. Użyjemy kanału 0 i kanału 1.
Wymagane składniki
Sprzęt: ATMEGA8, zasilacz (5v), PROGRAMATOR AVR-ISP, LED (4 sztuki), kondensator 1000uF, kondensator 100nF (5 sztuk), rezystor 1KΩ (6 sztuk).
Oprogramowanie: Atmel studio 6.1, progisp lub flash magic.
Schemat obwodu i objaśnienie robocze
Napięcie na JOYSTICK nie jest całkowicie liniowe; będzie głośno. Aby odfiltrować szum, kondensatory są umieszczone na każdym oporniku w obwodzie, jak pokazano na rysunku.
Jak pokazano na rysunku, w obwodzie są cztery diody LED. Każda dioda LED reprezentuje każdy kierunek JOYSTICK. Gdy drążek zostanie przesunięty w określonym kierunku, odpowiednia dioda LED zaświeci się.
Zanim przejdziemy dalej, musimy porozmawiać o ADC ATMEGA8, W ATMEGA8 możemy podać wejście analogowe do dowolnego z CZTERECH kanałów PORTC, nie ma znaczenia, który kanał wybierzemy, ponieważ wszystkie są takie same, wybieramy kanał 0 lub PIN0 PORTC.
W ATMEGA8 przetwornik ADC ma rozdzielczość 10 bitów, więc kontroler może wykryć wyczucie minimalnej zmiany Vref / 2 ^ 10, więc jeśli napięcie odniesienia wynosi 5 V, otrzymujemy przyrost wyjścia cyfrowego co 5/2 ^ 10 = 5mV. Tak więc dla każdego przyrostu 5mV na wejściu będziemy mieć przyrost o jeden na wyjściu cyfrowym.
Teraz musimy ustawić rejestr ADC na podstawie następujących warunków, 1. Przede wszystkim musimy włączyć funkcję ADC w ADC.
2. Tutaj uzyskamy maksymalne napięcie wejściowe do konwersji ADC wynosi + 5V. Możemy więc ustawić maksymalną wartość lub odniesienie ADC do 5V.
3. Kontroler posiada funkcję konwersji wyzwalacza, co oznacza, że konwersja ADC ma miejsce tylko po wyzwoleniu zewnętrznym, ponieważ nie chcemy, abyśmy musieli ustawiać rejestry, aby ADC działał w trybie ciągłej pracy swobodnej.
4. Dla dowolnego przetwornika ADC częstotliwość konwersji (wartość analogowa na wartość cyfrową) i dokładność wyjścia cyfrowego są odwrotnie proporcjonalne. Więc dla lepszej dokładności wyjścia cyfrowego musimy wybrać mniejszą częstotliwość. Dla normalnego zegara ADC ustawiamy przedsprzedaż ADC na maksymalną wartość (2). Ponieważ używamy wewnętrznego zegara 1 MHZ, zegar ADC będzie (1000000/2).
To jedyne cztery rzeczy, które musimy wiedzieć, aby rozpocząć pracę z ADC.
Wszystkie powyższe cztery funkcje są ustawiane przez dwa rejestry:
CZERWONY (ADEN): Ten bit musi być ustawiony, aby włączyć funkcję ADC ATMEGA.
NIEBIESKI (REFS1, REFS0): Te dwa bity służą do ustawiania napięcia odniesienia (lub maksymalnego napięcia wejściowego, które zamierzamy podać). Ponieważ chcemy mieć napięcie odniesienia 5V, należy ustawić REFS0 zgodnie z tabelą.
ŻÓŁTY (ADFR): Ten bit musi być ustawiony, aby ADC działał w sposób ciągły (tryb pracy swobodnej).
PINK (MUX0-MUX3): Te cztery bity służą do informowania kanału wejściowego. Ponieważ zamierzamy używać ADC0 lub PIN0, nie musimy ustawiać żadnych bitów zgodnie z tabelą.
BROWN (ADPS0-ADPS2): te trzy bity służą do ustawiania preskalara dla ADC. Ponieważ używamy preskalara 2, musimy ustawić jeden bit.
DARK GREEN (ADSC): ten bit ustawiony dla ADC, aby rozpocząć konwersję. Ten bit można wyłączyć w programie, gdy musimy zatrzymać konwersję.