U ovom ćemo projektu koristiti jednu od značajki ATmega32A za podešavanje svjetline od 1 W LED. Metoda koja se koristi za podešavanje brzine LED-a je PWM (modulacija širine impulsa). Ovaj AVR vodič za PWM mikrokontrolera detaljno objašnjava koncept PWM-a i generiranje PWM-a (Također možete provjeriti ovaj jednostavni sklop PWM generatora). Razmotrite jednostavan sklop kao što je prikazano na slici.

Sada, ako je prekidač na gornjoj slici neprekidno zatvoren tijekom određenog vremenskog razdoblja, tada će žarulja neprestano raditi tijekom tog vremena. Ako je prekidač zatvoren 8 ms i otvoren 2 ms tijekom ciklusa od 10 ms, tada će žarulja biti uključena samo za vrijeme 8 ms. Sada je prosječni terminal preko 10 ms = vrijeme UKLJUČIVANJA / (vrijeme UKLJUČIVANJA + vrijeme ISKLJUČENJA), to se naziva radni ciklus i iznosi 80% (8 / (8 + 2)), pa je prosjek izlazni napon bit će 80% napona akumulatora.
U drugom slučaju, prekidač je zatvoren na 5 ms i otvoren na 5 ms tijekom razdoblja od 10 ms, tako da će prosječni napon na izlazu biti 50% napona akumulatora. Recimo ako je napon akumulatora 5V, a radni ciklus 50%, pa će prosječni napon na priključku biti 2,5V.
U trećem slučaju radni ciklus iznosi 20%, a prosječni napon na priključku 20% napona akumulatora.
U ATMEGA32A imamo četiri PWM kanala, i to OC0, OC1A, OC1B i OC2. Ovdje ćemo koristiti OC0 PWM kanal za promjenu svjetline LED-a.
Komponente potrebne
Hardver:
Mikrokontroler ATmega32
Napajanje (5v)
AVR-ISP programer
Kondenzator 100uF, LED od 1 W
TIP127 tranzistor
Gumbi (2 komada)
Kondenzator 100nF (104) (2 komada), Otpornici od 100Ω i 1kΩ (2 komada).
Softver:
Atmel studio 6.1
Progisp ili flash magija
Kružni dijagram i radno objašnjenje

Gornja slika prikazuje shemu električnog svjetla s prigušivačem s AVR mikrokontrolerom (Također možete provjeriti ovaj jednostavni sklop s prigušivačem LED).
U ATmegi, za četiri PWM kanala, odredili smo četiri pina. Izlaz PWM-a možemo uzeti samo na ovim pinovima. Budući da koristimo PWM0, trebali bismo uzeti PWM signal na OC0 pinu (PORTB 3. PIN). Kao što je prikazano na slici, povezujemo bazu tranzistora s OC0 pinom za pogon LED napajanja. Ovdje je još jedna stvar preko četiri PWM kanala, dva su 8-bitna PWM kanala. Ovdje ćemo upotrijebiti 8-bitni PWM kanal.
Na svaki od gumba priključen je kondenzator kako bi se izbjeglo odbijanje. Kad god se pritisne tipka, na zatiču će se čuti neki zvuk. Iako se ova buka stabilizira u milisekundama. Za regulatora oštri vrhovi prije stabilizacije djeluju kao okidači. Taj se učinak može ukloniti softverom ili hardverom, kako bi program bio jednostavan. Koristimo hardversku metodu dodavanjem kondenzatora za odbijanje.
Kondenzatori poništavaju učinak odbijanja gumba.
U ATMEGA-i postoji nekoliko načina za generiranje PWM-a, a to su:
1. Faza ispravlja PWM
2. Brzi PWM
Ovdje ćemo sve učiniti jednostavnim, pa ćemo koristiti FAST PWM metodu za generiranje PWM signala.
Prvo odaberite frekvenciju PWM-a. To obično ovisi o primjeni za LED diode bilo koje frekvencije veće od 50 Hz. Iz tog razloga odabiremo brojač 1MHZ. Dakle, mi ne biramo nikakav preskalar. Pretkalar je broj koji je odabran tako da dobije manji brojač sati. Na primjer, ako je takt oscilatora 8 MHz, možemo odabrati preskalar od '8' da dobijemo 1MHz za brojač. Preskalar se odabire na temelju učestalosti. Ako želimo više impulsa u vremenskom razdoblju, moramo odabrati viši predkalar.
Sada da bismo iz ATMEGA-e izbacili BRZI PWM od 50 Hz takta, moramo omogućiti odgovarajuće bitove u registru " TCCR0 ". Ovo je jedini registar koji nam je potreban da bismo dobili 8-bitni FAST PWM.

Ovdje, 1. CS00, CS01, CS02 (ŽUTO) - odaberite preskalar za odabir brojača sata. Tablica za odgovarajući predkalar prikazana je u donjoj tablici. Dakle, za predkaliranje jednog (oscilatorni sat = brojač sati).
pa je CS00 = 1, druga dva bita su nula.

2. WGM01 i WGM00 su izmijenjeni kako bi odabrali načine generiranja valnog oblika, na temelju donje tablice, za brzi PWM. Imamo WGM00 = 1 i WGM01 = 1;

3. Sada znamo da je PWM signal s različitim omjerom radne snage ili različitim vremenima UKLJ. Do sada smo odabirali frekvenciju i vrstu PWM-a. Glavna tema ovog projekta leži u ovom odjeljku. Za dobivanje različitog omjera davanja odabrat ćemo vrijednost između 0 i 255 (2 ^ 8 zbog 8 bita). Recimo da odaberemo vrijednost 180, jer brojač počinje računati od 0 i dosegne vrijednost 180, izlazni odgovor se može aktivirati. Ovaj okidač može biti invertujući ili neinvertirajući. To je izlaz koji se može reći povući prema dolasku do brojanja ili mu se može reći da se povuče prema dolje na brojanje.
Ovaj izbor povlačenja prema gore ili dolje odabiru bitovi CM00 i CM01.
Kao što je prikazano u tablici, da bi izlaz bio visok pri usporedbi, a izlaz će ostati visok do maksimalne vrijednosti (kao što je prikazano na slici na dnu). Za to moramo odabrati način invertiranja, pa je COM00 = 1; COM01 = 1.

Kao što je prikazano na donjoj slici, OCR0 (Output Compare Register 0) je bajt koji pohranjuje vrijednost koju je odabrao korisnik. Dakle, ako promijenimo OCR0 = 180, kontroler pokreće promjenu (visoku) kada brojač dosegne 180 od 0.

Sada za promjenu svjetline LED-a moramo promijeniti DUTY RATIO PWM signala. Da bismo promijenili omjer dažbine, moramo promijeniti vrijednost OCR0. Kada promijenimo ovu vrijednost OCR0, brojaču treba različito vrijeme da dostigne OCR0. Dakle, kontroler u različito vrijeme povlači izlaz visoko.
Dakle, za PWM različitih radnih ciklusa, moramo promijeniti vrijednost OCR0.
U krugu imamo dva gumba. Jedan gumb služi za povećanje vrijednosti OCR0, tako da je DUTY RATIO PWM signala, drugi za smanjenje OCR0 vrijednosti, a time i DUTY RATIO PWM signala.
