Busul de software (pwm)

PWM - modulație cu lățimea impulsului
PWM - modulație cu lățimea impulsului (adică aceeași cu PWM)

Ce este PWM și de ce este necesar?

De ce am nevoie de un software PWM?

Apoi, că la canalele AVR (Atmega) există 1-2 canale, care adesea nu sunt suficiente pentru ceea ce aveți nevoie.







Să presupunem că avem 3 (trei) LED-uri și luminozitatea fiecăruia dintre ele dorim să controlam individual. Timerul de canal PWM încorporat nu este suficient. Și, în general, putem avea în continuare un fel de control special pe care să-l punem în aplicare pentru fiecare dintre ele. Prin urmare, le planificăm pe picioare obișnuite (în exemplul picioarelor PORTC 3,4,5) și controlam programul.

Calcularea rezistenței pentru LED:

Alimentare: 5V. Căderea de tensiune pe LED-ul poate fi considerată ca fiind de 1,5V. Curent la LED-ul ar trebui să fie nu mai mult de 20mA (unii susțin că este necesar să se 15mA, dar îmi place mai luminos).
Conform legii lui Ohm: I = U / R, R = U / I = (5-1,5) /0,02=175 Ohm. Am pus rezistoarele R1, R2 și R2 - 220 Ohm.

Cea mai simplă versiune este un ciclu etern. Opțiunea cu întreruperea va fi mai târziu (de mai jos), luați în considerare acum un exemplu simplu pentru a înțelege esența.

Mai întâi trebuie să stabiliți cu două lucruri: cu ce frecvență vor lumina LED-urile, astfel încât această clipire să nu fie vizibilă și, în al doilea rând, câte niveluri de luminozitate pot avea LED-ul.

La nivelurile de luminozitate permiteți-le să fie 256. 0 - complet dezactivat, 255 - complet pornit (adică canalul PWM este în unitatea logică tot timpul, adică ciclul de sarcină = 100%.

Totuși, acum sunt un om mic care te-a confundat.

Concluzia este că dioda PLUS tyknut circuit pentru produse alimentare directă și minus trece printr-un rezistor la picior (în cazul în care rezistor - nu este important, este important ca piciorul MK). Prin urmare, LED-ul se aprinde când există un nivel scăzut al picioarelor MK, adică zero, adică Piciorul din MC este alunecat la GND, adică la Pământ. Aceasta înseamnă că, de fapt, 0 și 1 în PWM trebuie să fie inversate. Ie Cu cât semnalul este mai lung cu 0 în raport cu 1, cu atât dioda va fi mai luminată.

Și astfel, nivelurile de luminozitate sunt 256.

Ce fel de clipire este? Linia de jos este că, dacă trebuie să se aplice un semnal PWM la multe multe diode și o fac în mod constant pentru fiecare, după este necesară ieșirea de semnal la prima dioda pentru a reveni semnalul la concluzia că este pentru un astfel de timp în care:







  1. în timp pentru a forma un semnal PWM plin,
  2. nu a trecut mai mult de 1 / 25th dintr-o secundă, în caz contrar, va exista o intermitentă intermitentă a LED-ului,
  3. între segmentele semnalului PWM nu au existat pauze considerabile în generarea PWM; astfel încât semnalul PWM NU ESTE PERICULOS.

Iată un exemplu de distorsiune a semnalului PWM:

Vom avea toate acestea în minte, dar, de fapt, nu ne pasă aici, deoarece vom avea o lumină foarte ușoară și nu va schimba decât luminozitatea, adică va fi o mulțime de timp și sarcina este atât de simplă încât nu va mânca din timp de la generarea de semnal PWM.

Și așa, aici este codul sursă (pentru AVR studio, adică gcc):

Cum funcționează programul

Există un contor de intervale de timp - scancount. Valoarea maximă a acestui contor este numărul de niveluri de luminozitate minus 1. Fiecare rotire a ciclului crește cu una, apoi depășește 255 și din nou devine 0. La fiecare rotire a ciclului, este setat un semnal pentru fiecare LED. Dacă contorul este mai mic sau egal cu nivelul luminozității, atunci opriți dioda. Dacă contorul este mai mic decât nivelul luminozității setat pentru diodă - atunci activați această diodă. Și ca orice ciclu. De exemplu, dacă nivelul luminozității este 0, contorul va fi întotdeauna egal sau mai mare decât zero, iar dioda va fi întotdeauna oprită. Dacă nivelul luminozității este de 255, atunci contorul va fi mai mic decât această valoare de 254 de 255 de rotații și va arde aproape în forță. Dacă luminozitatea este setată la 50, atunci primele 50 de cicluri ale ciclului vor activa dioda și cele 206 vor rămâne oprite, adică 50/256 curent de la maxim va fi aplicat la acesta.

Mai jos, programul controlează nivelul luminozității diodei, astfel încât să existe un fel de demonstrație. De fiecare dată când contorul debordează la luminozitatea tuturor diodele sunt adăugate 1, dar în cazul în care luminozitatea devine mai mult de 128, este resetat la 0. În general, în cazul în care nu a fost această verificare, apoi, după ajungând la 255 în nivelul de luminanță este ea însăși evacuările la zero, dar experiența a arătat , că după luminozitatea din 128 crește atât de imperceptibil încât se poate considera că la o valoare de 128 este aproape maximă. Și că efectul rezultat a fost mai dinamic și a fost introdus acest control.

De asemenea, este necesar să se știe că dependența de luminozitate de curentul LED-urilor NU este LINEARĂ. Ie 128 nu este de două ori mai dulă decât 255 și nu de două ori mai luminos decât 64.

Cât de mult este rotit întregul ciclu toate diode, suntem de puțin interes, deoarece este clar că, în intervalul de 1MHz (care este pe ea lucrează pentru mine MC), acesta va fi suficient de rapid pentru ochiul văzut nici scintilație.

Fotografie a adunării:

Busul de software (pwm)

faceți clic pe fotografie pentru a mări

Prețul domeniului: 1 500 000 fre.







Articole similare

Trimiteți-le prietenilor: