Sa tutorial na ito pupunta kami sa interface ng isang module ng Joystick na may atmega8 microcontroller. Ang isang JOY STICK ay isang input module na ginamit para sa komunikasyon. Karaniwan nitong ginagawang madali ang komunikasyon ng machine machine. Ang isang joystick ay ipinapakita sa figure sa ibaba.
Ang module ng Joystick ay may dalawang axis - ang isang pahalang at ang iba ay patayo. Ang bawat axis ng joystick ay naka-mount sa isang potentiometer o palayok o variable na paglaban. Ang mid point ay ibababa bilang Rx at Ry. Ang mga pin na ito ay nagdadala bilang mga output signal pin para sa JOYSTICK. Kapag ang stick ay inilipat kasama ang pahalang na axis, na may kasalukuyang boltahe ng suplay, ang boltahe sa Rx pin ay nagbabago.
Ang boltahe sa Rx ay tumataas kapag inilipat, ang boltahe sa Rx pin ay bumababa kapag inilipat pabalik. Katulad nito, ang boltahe sa Ry ay tumataas kapag inilipat paitaas, ang boltahe sa Ry pin ay bumababa kapag inilipat pababa.
Kaya mayroon kaming apat na direksyon ng JOYSTICK sa dalawang mga ADC channel. Sa mga normal na kaso mayroon kaming 1Volt sa bawat pin sa ilalim ng normal na kalagayan. Kapag inilipat ang stick ang boltahe sa bawat pin ay mataas o mababa depende sa direksyon. Kaya't apat na direksyon bilang (0V, 5V sa channel 0) para sa x- axis; (0V, 5V sa channel 1) para sa y- axis.
Gagamitin namin ang dalawang mga channel ng ADC ng ATMEGA8 upang gawin ang trabaho. Gagamitin namin ang channel 0 at channel 1.
Kinakailangan ang Mga Bahagi
Hardware: ATMEGA8, power supply (5v), AVR-ISP PROGRAMMER, LED (4 na piraso), 1000uF capacitor, 100nF capacitor (5 piraso), 1KΩ resistor (6 na piraso).
Software: Atmel studio 6.1, progisp o flash magic.
Circuit Diagram at Paggawa ng Paliwanag
Ang boltahe sa kabuuan ng JOYSTICK ay hindi ganap na linear; magiging maingay ito. Upang ma-filter ang ingay ng isang capacitor ay inilalagay sa bawat risistor sa circuit tulad ng ipinakita sa pigura.
Tulad ng ipinakita sa pigura mayroong apat na LEDs sa circuit. Ang bawat LED ay kumakatawan sa bawat direksyon ng JOYSTICK. Kapag ang stick ay inilipat sa isang direksyon, pagkatapos ay ang kaukulang LED glows.
Bago pumunta sa karagdagang kailangan nating pag-usapan ang tungkol sa ADC ng ATMEGA8, Sa ATMEGA8, maaari naming ibigay ang input ng Analog sa alinman sa APAT na mga channel ng PORTC, hindi alintana kung aling channel ang pipiliin namin bilang pareho, pipiliin namin ang channel 0 o PIN0 ng PORTC.
Sa ATMEGA8, ang ADC ay may 10 bit na resolusyon, kaya't ang controller ay maaaring makakita ng isang kaunting pagbabago ng Vref / 2 ^ 10, kaya kung ang boltahe ng sanggunian ay 5V nakakakuha kami ng isang digital output increment para sa bawat 5/2 ^ 10 = 5mV. Kaya't para sa bawat 5mV na pagtaas sa input magkakaroon kami ng isang pagtaas ng isa sa digital output.
Ngayon kailangan naming itakda ang rehistro ng ADC batay sa mga sumusunod na term, 1. Una sa lahat kailangan namin upang paganahin ang tampok na ADC sa ADC.
2. Narito ang makakakuha ng isang maximum na boltahe ng pag-input para sa pag-convert ng ADC ay + 5V. Kaya maaari naming i-set up ang maximum na halaga o sanggunian ng ADC sa 5V.
3. Ang Controller ay may tampok na pag-convert ng pag-trigger na nangangahulugang ang ADC conversion ay magaganap lamang pagkatapos ng isang panlabas na pag-trigger, dahil hindi namin nais na itakda namin ang mga rehistro para sa ADC na tumakbo sa tuluy-tuloy na libreng running mode.
4. Para sa anumang ADC, ang dalas ng conversion (Analog na halaga sa Digital na halaga) at kawastuhan ng digital output ay kabaligtaran proporsyonal. Kaya para sa mas mahusay na kawastuhan ng digital output kailangan nating pumili ng mas kaunting dalas. Para sa normal na orasan ng ADC itinatakda namin ang presale ng ADC sa maximum na halaga (2). Dahil ginagamit namin ang panloob na orasan ng 1MHZ, ang orasan ng ADC ay magiging (1000000/2).
Ito lamang ang apat na bagay na kailangan nating malaman upang makapagsimula sa ADC.
Ang lahat ng apat na tampok sa itaas ay itinakda ng dalawang rehistro:
PULA (ADEN): Ang bit na ito ay kailangang maitakda para sa pagpapagana ng tampok na ADC ng ATMEGA.
BLUE (REFS1, REFS0): Ang dalawang piraso na ito ay ginagamit upang maitakda ang sanggunian na boltahe (o ibibigay na max na boltahe ng pag-input na ibibigay namin). Dahil nais naming magkaroon ng sanggunian boltahe 5V, ang REFS0 ay dapat itakda, sa pamamagitan ng talahanayan.
YELLOW (ADFR): Ang bit na ito ay dapat itakda para sa ADC upang magpatakbo ng tuloy-tuloy (libreng running mode).
PINK (MUX0-MUX3): Ang apat na piraso na ito ay para sa pagsasabi sa input channel. Dahil gagamitin namin ang ADC0 o PIN0, hindi namin kailangang magtakda ng anumang mga piraso sa pamamagitan ng talahanayan.
BROWN (ADPS0-ADPS2): ang tatlong mga piraso na ito ay para sa pagtatakda ng prescalar para sa ADC. Dahil gumagamit kami ng isang prescalar na 2, kailangan naming magtakda ng kaunti.
DARK GREEN (ADSC): itinakda ito para sa ADC upang simulan ang conversion. Ang bit na ito ay maaaring hindi paganahin sa programa kung kailangan nating ihinto ang conversion.