Sa proyektong ito gagawa kami ng isang mababang saklaw na ammeter gamit ang ATMEGA8 microcontroller. Sa ATMEGA8, gagamit kami ng tampok na 10bit ADC (Analog to Digital Conversion) upang magawa ito. Bagaman mayroon kaming ilang iba pang mga paraan upang makuha ang kasalukuyang parameter mula sa isang circuit, gagamit kami ng resistive drop na paraan, sapagkat ito ang pinakamadali at pinakasimpleng paraan upang makakuha ng kasalukuyang parameter.
Sa pamamaraang ito papasa namin ang kasalukuyang kasalukuyang kinakailangang sukatin sa isang maliit na paglaban, sa pamamagitan nito nakakakuha kami ng isang drop sa paglaban na lumalaban sa kasalukuyang dumadaloy dito. Ang boltahe na ito sa paglaban ay pinakain sa ATMEGA8 para sa ADC conversion. Sa gayon magkakaroon kami ng kasalukuyang sa digital na halaga na ipapakita sa isang 16x2 LCD.
Para sa mga iyon ay gagamit kami ng isang boltahe divider circuit. Papakainin namin ang kasalukuyang sa pamamagitan ng kumpletong sangay ng paglaban. Ang midpoint ng sangay ay kinuha sa pagsukat. Kapag ang kasalukuyang mga pagbabago ay may drop pagbabago sa paglaban na kung saan ay linear sa ito. Kaya sa ito mayroon kaming isang boltahe na magbabago sa linearity.
Ngayon ang mahalagang bagay na dapat tandaan dito ay, ang input na kinunan ng controller para sa conversion ng ADC ay kasing baba ng 50µAmp. Ang epekto ng paglo-load ng dividerang batay sa resistensya ay mahalaga dahil ang kasalukuyang iginuhit mula sa Vout ng boltahe na divider ay nagdaragdag ng pagtaas ng porsyento ng error, sa ngayon hindi namin kailangang mag-alala tungkol sa pag-load ng epekto.
Kinakailangan ang Mga Bahagi
Hardware: ATMEGA8, power supply (5v), AVR-ISP PROGRAMMER, JHD_162ALCD (16 * 2LCD), 100uF capacitor, 100nF capacitor (4 na piraso), 100Ω risistor (7 piraso) o 2.5Ω (2 piraso), 100KΩ risistor.
Software: Atmel studio 6.1, progisp o flash magic.
Circuit Diagram at Paggawa ng Paliwanag
Ang boltahe sa kabuuan ng R2 at R4 ay hindi ganap na guhit; magiging maingay ito. Upang ma-filter ang ingay, ang mga capacitor ay inilalagay sa bawat risistor sa divider circuit tulad ng ipinakita sa pigura.
Sa ATMEGA8, maaari naming bigyan ang input ng Analog sa alinman sa APAT na channel ng PORTC, hindi alintana kung aling channel ang pipiliin namin bilang pareho ang lahat. Pipili kami ng channel 0 o PIN0 ng PORTC. Sa ATMEGA8, ang ADC ay may 10 bit resolusyon, kaya't ang controller ay maaaring makakita ng isang minimum na pagbabago ng Vref / 2 ^ 10, kaya kung ang sanggunian na boltahe ay 5V makakakuha 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.