Sa proyektong ito gagamitin namin ang isa sa mga tampok ng ATmega32A upang ayusin ang liwanag ng 1 Watt LED. Ang pamamaraang ginamit upang ayusin ang bilis ng LED ay PWM (Pulse Width Modulation). Ito AVR Microcontroller PWM tutorial ay nagpapaliwanag ng PWM konsepto at henerasyon ng PWM sa detalye (Maaari mo ring suriin ito simpleng PWM dyeneretor circuit). Isaalang-alang ang isang simpleng circuit tulad ng ipinakita sa pigura.
Ngayon kung ang switch sa itaas na pigura ay sarado nang tuloy-tuloy sa loob ng isang tagal ng panahon pagkatapos ay ang bombilya ay patuloy na magsasagawa sa oras na iyon. Kung ang switch ay sarado para sa 8ms at binuksan para sa 2ms sa loob ng isang cycle ng 10ms, pagkatapos ang bombilya ay ON lamang sa oras na 8ms. Ngayon ang average na terminal sa kabuuan ng higit sa isang panahon ng 10ms = ON ON / / (ON ON time + OFF OFF time), ito ay tinatawag na duty cycle at 80% (8 / (8 + 2)), kaya ang average ang output voltage ay magiging 80% ng boltahe ng baterya.
Sa pangalawang kaso, ang switch ay sarado para sa 5ms at binuksan para sa 5ms sa loob ng isang panahon ng 10ms, kaya ang average na boltahe ng terminal sa output ay 50% ng boltahe ng baterya. Sabihin kung ang boltahe ng baterya ay 5V at ang cycle ng tungkulin ay 50% at sa gayon ang average na boltahe ng terminal ay 2.5V.
Sa pangatlong kaso ang cycle ng tungkulin ay 20% at ang average na boltahe ng terminal ay 20% ng boltahe ng baterya.
Sa ATMEGA32A mayroon kaming apat na PWM channel, katulad ng OC0, OC1A, OC1B, at OC2. Dito ay gagamitin namin ang OC0 PWM channel upang maiiba ang liwanag ng LED.
Kinakailangan ang Mga Bahagi
Hardware:
ATmega32 microcontroller
Suplay ng kuryente (5v)
Programmer ng AVR-ISP
100uF capacitor, 1Watt LED
TIP127 transistor
Mga Pindutan (2 piraso)
100nF (104) capacitor (2 piraso), 100Ω at 1kΩ resistors (2 piraso).
Software:
Atmel studio 6.1
Progisp o flash magic
Circuit Diagram at Paggawa ng Paliwanag
Ipinapakita ng nasa itaas na pigura ang circuit diagram ng LED dimmer gamit ang AVR Microcontroller (Maaari mo ring suriin ang simpleng LED dimmer circuit na ito).
Sa ATmega, para sa apat na mga channel ng PWM, itinalaga namin ang apat na mga pin. Maaari lamang kaming kumuha ng output ng PWM sa mga pin na ito lamang. Dahil gumagamit kami ng PWM0 dapat kaming kumuha ng signal ng PWM sa OC0 pin (PORTB 3 rd PIN). Tulad ng ipinakita sa pigura na kinokonekta namin ang base ng transistor sa OC0 pin upang himukin ang LED power. Narito ang isa pang bagay ay higit sa apat na mga channel ng PWM, dalawa ang 8-bit na mga channel ng PWM. Gagamitin namin ang isang 8-bit na PWM channel dito.
Ang isang kapasitor ay konektado sa bawat isa sa mga pindutan upang maiwasan ang pag-bouncing. Kailan man pinindot ang isang pindutan ay magkakaroon ng ingay sa pin. Kahit na ang ingay na ito ay nagpapatatag sa milliseconds. Para sa isang kontroler ang matalim na taluktok bago ang pagpapatatag ay kumikilos bilang mga nag-trigger. Ang epektong ito ay maaaring matanggal alinman sa pamamagitan ng software o hardware, upang ang programa ay maging simple. Gumagamit kami ng paraan ng hardware sa pamamagitan ng pagdaragdag ng pag-deboun ng capacitor.
Ang mga capacitor ay nagpapawalang bisa ng epekto ng pag-bouncing ng mga pindutan.
Sa ATMEGA maraming mga paraan upang makabuo ng PWM, ang mga ito ay:
1. Tamang yugto na PWM
2. Mabilis na PWM
Dito ay panatilihin naming simple ang lahat, Kaya gagamitin namin ang FAST PWM na pamamaraan upang makabuo ng PWM signal.
Una upang piliin ang dalas ng PWM, Ito ay nakasalalay sa application na karaniwang, para sa isang LED anumang dalas na mas malaki sa 50Hz ang gagawin. Para sa kadahilanang ito ay pipiliin namin ang counter clock na 1MHZ. Kaya't wala kaming pipiliing prescalar. Ang isang prescalar ay isang numero na napili upang makakuha ng isang mas kaunting counter na orasan. Halimbawa kung ang oscillator na orasan ay 8Mhz, maaari kaming pumili ng isang prescalar na '8' upang makakuha ng isang 1MHz na orasan para sa counter. Ang prescalar ay napili batay sa dalas. Kung nais natin ng mas maraming pulse ng tagal ng panahon kailangan nating pumili ng mas mataas na prescalar.
Ngayon upang makuha ang FAST PWM na 50Hz na orasan mula sa ATMEGA, kailangan naming paganahin ang mga naaangkop na piraso sa rehistro ng " TCCR0 ". Ito lamang ang rehistro na kailangan nating abalahin, para sa pagkuha ng 8bit FAST PWM.
Dito, 1. CS00, CS01, CS02 (DILAW) - piliin ang prescalar para sa pagpili ng counter orasan. Ang talahanayan para sa naaangkop na prescalar ay ipinapakita sa ibaba ng talahanayan. Kaya para sa prescaling isa (oscillator clock = counter orasan).
kaya CS00 = 1, iba pang dalawang bit ay zero.
2. Ang WGM01 at WGM00 ay binago upang pumili ng mga mode ng pagbuo ng waveform, batay sa talahanayan sa ibaba, para sa mabilis na PWM. Mayroon kaming WGM00 = 1 at WGM01 = 1;
3. Ngayon alam namin na ang PWM ay isang senyas na may iba't ibang ratio ng tungkulin o magkakaibang turn ON na turn OFF beses. Hanggang ngayon pinili namin ang dalas at uri ng PWM. Ang pangunahing tema ng proyektong ito ay nakasalalay sa seksyong ito. Para sa pagkuha ng iba't ibang ratio ng tungkulin, pipili kami ng isang halaga sa pagitan ng 0 at 255 (2 ^ 8 dahil sa 8 bit). Sabihin na pumili kami ng halagang 180, habang nagsisimulang bilangin ang counter mula sa 0 at naabot ang halagang 180, maaaring ma-trigger ang tugon sa output. Ang nag-uudyok na ito ay maaaring pag-invert o hindi pag-invert. Iyon ang output ay maaaring sabihin sa hinila hanggang sa maabot ang bilang, o masasabi na hilahin pababa sa pag-abot sa bilang.
Ang pagpipiliang ito ng paghila pataas o pababa ay pinili ng CM00 at CM01 bits.
Tulad ng ipinakita sa talahanayan, para sa output na maging mataas sa ihambing at ang output ay mananatiling mataas hanggang sa max na halaga (tulad ng ipinakita sa figure sa ibaba). Kailangan nating pumili ng inverting mode upang magawa iyon, kaya COM00 = 1; COM01 = 1.
Tulad ng ipinakita sa figure sa ibaba, ang OCR0 (Output Compare Rehistro 0) ay ang byte na nag-iimbak ng halaga na pinili ng gumagamit. Kaya't kung binago natin ang OCR0 = 180, ang Controller ay nagpapalitaw ng pagbabago (mataas) kapag ang counter ay umabot sa 180 mula sa 0.
Ngayon para sa pag- iiba ng ningning ng LED kailangan nating baguhin ang DUTY RATIO ng PWM signal. Upang mabago ang ratio ng tungkulin, kailangan nating baguhin ang halaga ng OCR0. Kapag binago namin ang halagang ito ng OCR0, ang counter ay tumatagal ng iba't ibang oras, upang maabot ang OCR0. Kaya't hinihila ng controller ang output na mataas sa iba't ibang oras.
Kaya para sa PWM ng iba't ibang mga cycle ng tungkulin, kailangan nating baguhin ang halaga ng OCR0.
Sa circuit mayroon kaming dalawang mga pindutan. Ang isang pindutan ay para sa pagtaas ng halaga ng OCR0 at sa gayon ang DUTY RATIO ng signal ng PWM, ang iba pa ay para sa pagbawas ng halaga ng OCR0 at sa gayon ang DUTY RATIO ng PWM signal.