Šajā projektā mēs izmantosim vienu no ATmega32A funkcijām, lai pielāgotu 1 vatu LED spilgtumu. Metode, ko izmanto, lai pielāgotu LED ātrumu, ir PWM (pulsa platuma modulācija). Šajā AVR mikrokontrolleru PWM apmācībā detalizēti izskaidrota PWM koncepcija un PWM ģenerēšana (varat pārbaudīt arī šo vienkāršo PWM ģeneratora shēmu). Apsveriet vienkāršu shēmu, kā parādīts attēlā.
Tagad, ja slēdzis iepriekš redzamajā attēlā ir nepārtraukti slēgts noteiktā laika periodā, spuldze nepārtraukti ieslēdzas šajā laikā. Ja slēdzis ir slēgts uz 8 ms un ir atvērts uz 2 ms 10 ms ciklā, spuldze būs ieslēgta tikai pēc 8 ms laika. Tagad vidējais terminālis pāri 10ms laikā = Ieslēgšanas laiks / (Ieslēgšanas laiks + Izslēgšanas laiks), to sauc par darba ciklu, un tas ir 80% (8 / (8 + 2)), tātad vidējais izejas spriegums būs 80% no akumulatora sprieguma.
Otrajā gadījumā slēdzis ir slēgts uz 5ms un atvērts uz 5ms 10ms periodā, tāpēc vidējais spailes spriegums izejā būs 50% no akumulatora sprieguma. Sakiet, vai akumulatora spriegums ir 5 V un darba cikls ir 50%, un tāpēc vidējais spailes spriegums būs 2,5 V.
Trešajā gadījumā darba cikls ir 20%, un vidējais spailes spriegums ir 20% no akumulatora sprieguma.
ATMEGA32A mums ir četri PWM kanāli, proti, OC0, OC1A, OC1B un OC2. Šeit mēs izmantosim OC0 PWM kanālu, lai mainītu LED spilgtumu.
Nepieciešamās sastāvdaļas
Aparatūra:
ATmega32 mikrokontrolleris
Barošanas avots (5v)
AVR-ISP programmētājs
100uF kondensators, 1 vatu LED
TIP127 tranzistors
Pogas (2 gab.)
100nF (104) kondensators (2 gab.), 100Ω un 1kΩ rezistori (2 gab.).
Programmatūra:
Atmel studija 6.1
Progisp vai zibspuldzes maģija
Shēmas shēma un darba skaidrojums
Iepriekš redzamajā attēlā parādīta LED dimmera ar AVR mikrokontrolleru shēma (Jūs varat arī pārbaudīt šo vienkāršo LED dimmera shēmu).
ATmegā četriem PWM kanāliem mēs esam noteikuši četrus tapas. Mēs varam uzņemt PWM izvadi tikai uz šīm tapām. Tā kā mēs izmantojam PWM0 mums jāņem PWM signālu OC0 pin (PORTB 3 rd PIN). Kā parādīts attēlā, mēs savienojam tranzistora pamatni ar OC0 tapu, lai darbinātu strāvas LED. Šeit cita lieta ir vairāk nekā četri PWM kanāli, divi ir 8 bitu PWM kanāli. Mēs šeit izmantosim 8 bitu PWM kanālu.
Lai izvairītos no atsitiena, katrai no pogām ir pievienots kondensators. Ikreiz, kad tiek nospiesta poga, pie tapas būs neliels troksnis. Lai gan šis troksnis stabilizējas milisekundēs. Kontrolierim asie pīķi pirms stabilizācijas darbojas kā trigeri. Šo efektu var novērst vai nu programmatūra, vai aparatūra, lai programma būtu vienkārša. Mēs izmantojam aparatūras metodi, pievienojot atcelšanas kondensatoru.
Kondensatori atceļ pogu atlēcienu.
ATMEGA ir vairāki veidi, kā ģenerēt PWM, tie ir:
1. Fāzes pareizais PWM
2. Ātra PWM
Šeit mēs visu paturēsim vienkāršu, tāpēc PWM signāla ģenerēšanai izmantosim FAST PWM metodi.
Vispirms jāizvēlas PWM frekvence. Tas parasti ir atkarīgs no lietojuma, ja LED darbotos jebkura frekvence, kas lielāka par 50Hz. Šī iemesla dēļ mēs izvēlamies skaitītāja pulksteni 1MHZ. Tāpēc mēs neizvēlamies nekādu preskalāru. Preskalārs ir skaitlis, kas ir tik izvēlēts, lai iegūtu mazāku skaitītāja pulksteni. Piemēram, ja oscilatora pulkstenis ir 8Mhz, mēs varam izvēlēties preskalāru “8”, lai iegūtu 1MHz pulksteni skaitītājam. Preskalārs tiek izvēlēts, pamatojoties uz frekvenci. Ja mēs vēlamies vairāk laika periodu impulsu, mums jāizvēlas augstāks preskalārs.
Tagad, lai no ATMEGA iegūtu FAST PWM 50Hz pulksteni, mums ir jāiespējo atbilstošie biti “ TCCR0 ” reģistrā. Šis ir vienīgais reģistrs, kas mums jāuztraucas, lai iegūtu 8bit FAST PWM.
Šeit, 1. CS00, CS01, CS02 (DZELTENS) - izvēlieties pirmsskalu skaitītāja pulksteņa izvēlei. Piemērotā preskalāra tabula ir parādīta zemāk esošajā tabulā. Tātad priekšskalēšanai viens (oscilatora pulkstenis = skaitītāja pulkstenis).
tātad CS00 = 1, pārējie divi biti ir nulle.
2. WGM01 un WGM00 tiek mainīti, lai ātrai PWM izvēlētos viļņu formas ģenerēšanas režīmus, pamatojoties uz zemāk esošo tabulu. Mums ir WGM00 = 1 un WGM01 = 1;
3. Tagad mēs zinām, ka PWM ir signāls ar atšķirīgu darba attiecību vai atšķirīgu ieslēgšanas izslēgšanas laiku. Līdz šim mēs esam izvēlējušies PWM biežumu un veidu. Šī projekta galvenā tēma ir šajā sadaļā. Lai iegūtu atšķirīgu darba attiecību, mēs izvēlēsimies vērtību no 0 līdz 255 (2 bitu 8 bitu dēļ). Pieņemsim, ka mēs izvēlamies vērtību 180, jo skaitītājs sāk skaitīt no 0 un sasniedz vērtību 180, var tikt aktivizēta izejas atbilde. Šis aktivizētājs var būt apgriezts vai nav apgriezts. Tas ir rezultāts, kuru var pateikt, sasniedzot skaitli, vai arī to var pateikt, lai sasniegtu skaitli.
Šo izvilkšanas uz augšu vai uz leju izvēli izvēlas CM00 un CM01 biti.
Kā parādīts tabulā, lai produkcija salīdzinātu augstu, un produkcija saglabāsies augsta līdz maksimālajai vērtībai (kā parādīts attēlā apakšā). Lai to izdarītu, mums jāizvēlas apgrieztais režīms, tāpēc COM00 = 1; COM01 = 1.
Kā parādīts attēlā, OCR0 (izejas salīdzināšanas reģistrs 0) ir baits, kurā tiek saglabāta lietotāja izvēlētā vērtība. Tātad, ja mēs mainām OCR0 = 180, kontrolieris iedarbina izmaiņas (augstu), kad skaitītājs sasniedz 180 no 0.
Tagad, lai mainītu LED spilgtumu, mums ir jāmaina PWM signāla DUTY RATIO. Lai mainītu darba attiecību, mums jāmaina OCR0 vērtība. Kad mēs mainām šo OCR0 vērtību, skaitītājam vajadzīgs cits laiks, lai sasniegtu OCR0. Tātad kontrolieris izvelk augstu izeju dažādos laikos.
Tātad dažādu darba ciklu PWM mums jāmaina OCR0 vērtība.
Ķēdē mums ir divas pogas. Viena poga ir paredzēta OCR0 vērtības palielināšanai, tātad PWM signāla DUTY RATIO, otra ir OCR0 vērtības un PWM signāla DUTY RATIO samazināšanai.