Sa proyektong ito pupunta kami sa interface ng LDR sa ATMEGA8 microcontroller, at sa ito maaari naming masukat ang LIGHT INTENSITY sa lugar. Sa ATMEGA8, gagamit kami ng tampok na 10bit ADC (Analog to Digital Conversion) upang masukat ang tindi ng ilaw.
Ang Am LDR ay isang transducer na nagbabago ng paglaban nito kapag ang LIGHT ay bumagsak sa mga pagbabago sa ibabaw nito. Magagamit ang LDR sensor sa iba't ibang laki at hugis.
Ang mga LDR ay ginawa mula sa mga materyales na semiconductor upang paganahin ang mga ito na magkaroon ng kanilang light sensitive na mga katangian. Maraming uri ng mga materyales na ginamit, ngunit ang isa na patok ay ang CADMIUM SULPHIDE (CdS). Ang mga LDRs o PHOTO REISTORS trabaho sa prinsipyo ng "Photo Koryente". Ngayon kung ano ang sinasabi ng prinsipyong ito tuwing ang ilaw ay bumagsak sa ibabaw ng LDR (sa kasong ito) ang conductance ng elemento ay tataas o sa madaling salita ang pagbawas ng LDR ay bumababa kapag ang ilaw ay bumagsak sa ibabaw ng LDR. Ang pag-aari na ito ng pagbawas ng paglaban para sa LDR ay nakakamit sapagkat ito ay isang pag-aari ng materyal na semiconductor na ginamit sa ibabaw. Ginagamit ang LDR sa karamihan ng mga oras upang makita ang pagkakaroon ng ilaw o para sa pagsukat ng tindi ng ilaw.
Mayroong iba't ibang mga uri ng LDR tulad ng ipinakita sa itaas na pigura at bawat isa ay may iba't ibang mga pagtutukoy. Kadalasan ang isang LDR ay magkakaroon ng 1MΩ-2MΩ sa kabuuang kadiliman, 10-20KΩ sa 10 LUX, 2-5KΩ sa 100 LUX. Ang tipikal na pagtutol sa LUX graph ng isang LDR ay ipinapakita sa pigura.
Tulad ng ipinakita sa itaas na pigura, ang paglaban sa pagitan ng dalawang mga contact ng sensor ay nababawasan ng light intensity o ang conductance sa pagitan ng dalawang contact ng sensor ay tumataas.
Ngayon para sa pag-convert ng pagbabagong ito sa paglaban sa pagbabago ng boltahe, gagamitin namin ang circuit ng divider ng boltahe. Sa resistive network na ito mayroon kaming isang pare-pareho na paglaban at iba pang variable na paglaban. Tulad ng ipinakita sa pigura, ang R1 dito ay isang pare-pareho ang paglaban at ang R2 ay FORCE sensor na kumikilos bilang isang paglaban.
Ang midpoint ng sangay ay kinuha sa pagsukat. Kapag nagbago ang resistensya R2, ang Vout ay nagbabago kasama nito nang linear. Kaya sa ito mayroon kaming isang boltahe na nagbabago sa timbang.
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.
Ang gagawin natin dito ay kukuha kami ng dalawang resistors at bumuo ng isang divider circuit upang sa isang 25Volts Vin, nakakakuha kami ng 5Volt Vout. Kaya't ang kailangan lamang nating gawin ay i-multiply ang halaga ng Vout na may "5" sa programa upang makuha ang tunay na boltahe ng pag-input.
Mga Bahagi
Hardware: ATMEGA8, power supply (5v), AVR-ISP PROGRAMMER, JHD_162ALCD (16 * 2LCD), 100uF capacitor, 100nF capacitor (5 piraso), 10KΩ resistor, LDR (Light Dependent Resistor).
Sofware: Atmel studio 6.1, progisp o flash magic.
Circuit Diagram at Paggawa ng Paliwanag
Sa circuit PORTD ng ATMEGA8 ay konektado sa data port LCD. Sa 16 * 2 LCD mayroong 16 na pin sa lahat kung mayroong back light, kung walang back light magkakaroon ng 14 na pin. Maaari ng isang tumakbo o iwanan ang mga light light pin. Ngayon sa 14 na pin mayroong 8 data pin (7-14 o D0-D7), 2 power supply pin (1 & 2 o VSS & VDD o gnd & + 5v), 3 rd pin para sa control ng kaibahan (kinokontrol ng VEE kung gaano dapat makapal ang mga character ipinakita) at 3 control pin (RS & RW & E)
Sa circuit, maaari mong obserbahan na kumuha lamang ako ng dalawang control pin. Ang kaibahan ng kaunti at BASAHIN / Sumulat ay hindi madalas na ginagamit upang maaari silang maiksi sa lupa. Inilalagay nito ang LCD sa pinakamataas na kaibahan at mode na basahin. Kailangan lang naming makontrol ang Mga PIN na INABAYAHAN at RS upang magpadala ng mga character at data nang naaayon.
Ang mga koneksyon para sa LCD ay ibinibigay sa ibaba:
PIN1 o VSS ----------------- ground
PIN2 o VDD o VCC ------------ + 5v na lakas
PIN3 o VEE ------------- ground (nagbibigay ng pinakamataas na pagkakaiba sa pinakamahusay para sa isang nagsisimula)
PIN4 o RS (Pagpili ng Rehistro) ----------------- PB0 ng uC
Ang PIN5 o RW (Basahin / Isulat) ----------------- ground (inilalagay ang LCD sa read mode na pinapagaan ang komunikasyon para sa gumagamit)
PIN6 o E (Paganahin) ----------------- PB1 ng uC
PIN7 o D0 ----------------------------- PD0 ng uC
PIN8 o D1 ---------------------------- PD1 ng uC
PIN9 o D2 ---------------------------- PD2 ng uC
PIN10 o D3 ---------------------------- PD3 ng uC
PIN11 o D4 ---------------------------- PD4 ng uC
PIN12 o D5 ---------------------------- PD5 ng uC
PIN13 o D6 ---------------------------- PD6 ng uC
PIN14 o D7 ---------------------------- PD7 ng uC
Sa circuit makikita mo na gumamit kami ng 8bit na komunikasyon (D0-D7) subalit hindi ito isang sapilitan, maaari naming gamitin ang 4bit na komunikasyon (D4-D7) ngunit sa 4 bit na programa sa komunikasyon ay medyo kumplikado. Kaya mula sa pagmamasid lamang mula sa itaas na talahanayan kumokonekta kami ng 10 mga pin ng LCD sa controller kung saan ang 8 mga pin ay mga pin ng data at 2 mga pin para sa kontrol.
Ang boltahe sa kabuuan ng R2 ay hindi ganap na guhit; magiging maingay ito. Upang ma-filter ang mga capacitor ng ingay 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.
Kaya't sa paglaban ng LDR sa 16x2 LCD screen, maaari nating maitugma ito sa LUX graph para sa pagkuha ng light intensity.