Ebben az oktatóanyagban egy joystick modult fogunk összekapcsolni az atmega8 mikrovezérlővel. A JOY STICK a kommunikációhoz használt bemeneti modul. Alapvetően megkönnyíti a felhasználói gép kommunikációt. A joystick az alábbi ábrán látható.
A joystick modulnak két tengelye van - az egyik vízszintes, a másik függőleges. A joystick minden tengelye egy potenciométerhez vagy fazékhoz van rögzítve, vagy változtatható ellenállással. A középpontokat Rx és Ry néven hozzák le. Ezek a csapok a JOYSTICK kimeneti jelcsapjaiként működnek. Amikor a botot vízszintes tengely mentén mozgatják, a tápfeszültség megléte mellett, az Rx érintkező feszültsége megváltozik.
Az Rx feszültsége előre haladva növekszik, az Rx tűnél a feszültség visszafelé haladva csökken. Hasonlóképpen, a Ry feszültsége emelkedik, ha felfelé mozgatja, a Ry csap feszültsége csökken, ha lefelé mozdítják.
Tehát a JOYSTICK négy irányban van két ADC csatornán. Normál esetben 1 V-os feszültség van az egyes csapokon normál körülmények között. A bot mozgatásakor az egyes csapok feszültségei az iránytól függően magasak vagy alacsonyak. Tehát négy irány, mint (0V, 5V a 0 csatornán) az x tengelyhez; (0V, 5V az 1. csatornán) az y tengelyhez.
A munka elvégzéséhez az ATMEGA8 két ADC csatornáját fogjuk használni. A 0. és az 1. csatornát fogjuk használni.
Szükséges alkatrészek
Hardver: ATMEGA8, tápegység (5v), AVR-ISP PROGRAMOZÓ, LED (4 db), 1000uF kondenzátor, 100nF kondenzátor (5 db), 1KΩ ellenállás (6 db).
Szoftver: Atmel studio 6.1, progisp vagy flash magic.
Áramköri ábra és működési magyarázat
A JOYSTICK feszültsége nem teljesen lineáris; zajos lesz. A zaj kiszűrésére egy kondenzátort helyeznek az áramkör minden ellenállására, az ábra szerint.
Az ábra szerint négy LED van az áramkörben. Minden LED a JOYSTICK minden irányát képviseli. Ha a botot egy irányba mozgatják, akkor a megfelelő LED világít.
Mielőtt tovább mennénk, beszélnünk kell az ATMEGA8 ADC-jéről, Az ATMEGA8-ban analóg bemenetet adhatunk a PORTC NÉGY csatornájának bármelyikéhez, nem számít, melyik csatornát választjuk, mivel mindegyik egyforma, a PORTC 0 vagy PIN0 csatornáját választjuk.
Az ATMEGA8-ban az ADC 10 bites felbontású, így a vezérlő érzékelni tudja a Vref / 2 ^ 10 minimális változását, így ha a referenciafeszültség 5V, akkor 5/2 ^ 10 = 5mV-ra digitális kimeneti növekedést kapunk. Tehát a bemenet minden 5mV-os növekményéhez egyet kell növelni a digitális kimeneten.
Most meg kell állítanunk az ADC nyilvántartását a következő feltételek alapján, 1. Először engedélyeznünk kell az ADC funkciót az ADC-ben.
2. Itt megkapjuk a maximális bemeneti feszültséget az ADC átalakításához + 5V. Tehát beállíthatjuk az ADC maximális értékét vagy referenciáját 5 V-ra.
3. A vezérlő rendelkezik egy trigger konverziós funkcióval, ami azt jelenti, hogy az ADC átalakítás csak egy külső trigger után történik meg, mivel nem akarjuk, hogy beállítsuk a regisztereket az ADC számára, hogy folyamatos szabadon futó üzemmódban működjenek.
4. Bármely ADC esetében az átalakítás gyakorisága (analóg érték digitális értékre) és a digitális kimenet pontossága fordítottan arányos. Tehát a digitális kimenet pontossága érdekében kisebb frekvenciát kell választanunk. Normál ADC óra esetén az ADC előértékét maximális értékre állítjuk (2). Mivel 1MHZ belső órát használunk, az ADC órája (1000000/2) lesz.
Ez az egyetlen négy dolog, amit tudnunk kell az ADC használatának megkezdéséhez.
A fenti négy jellemzőt két regiszter állítja be:
PIROS (ADEN): Ezt a bitet be kell állítani az ATMEGA ADC szolgáltatásának engedélyezéséhez.
KÉK (REFS1, REFS0): Ez a két bit használható a referenciafeszültség (vagy a maximális bemeneti feszültség megadására). Mivel 5V referenciafeszültséget akarunk elérni, a REFS0 értéket a táblázatnak kell beállítania.
SÁRGA (ADFR): Ezt a bitet be kell állítani, hogy az ADC folyamatosan fusson (szabadon futó mód).
PINK (MUX0-MUX3): Ez a négy bit a bemeneti csatorna megmondására szolgál. Mivel az ADC0 vagy PIN0 kódot fogjuk használni, nem kell biteket beállítanunk, mint a táblázat.
BROWN (ADPS0-ADPS2): ez a három bit az ADC preskalarjának beállítására szolgál. Mivel 2-es előskálát használunk, egy bitet kell beállítanunk.
SÖTÉT ZÖLD (ADSC): ez a bit beállítva az ADC számára az átalakítás megkezdéséhez. Ez a bit letiltható a programban, ha le kell állítanunk az átalakítást.