Consumul redus de energie al dispozitivelor pe microcontrolere avr - informații utile - proiecte avr -

Consumul redus de energie al dispozitivelor pe microcontrolerele AVR

Atunci când alimentat dispozitive din surse independente de alimentare - baterii, acumulatori (mere și lipite la electrozi;)) trebuie să aibă grijă de reducere a consumului de energie, în scopul de a prelungi durata de viață fără înlocuirea bateriei. În sine, consumul de energie depinde de mai mulți factori: tipul de microcontroler, tensiunile de alimentare, frecvența lucrărilor selectate din periferice configurate și chiar temperatura ambientală.







Pentru gestionarea alimentării, toate microcontrolerele AVR au mai multe moduri de funcționare, ceea ce le permite să reducă în mod semnificativ consumul propriu de energie - modul Sleep și Power -

Modul în care consumul de energie variază în funcție de modul de funcționare selectat este prezentat în mod clar în tabelul de mai jos (la 1 MHz, 3V, 25 ° C):

Este clar că situația este controlată de microcontrolerele noilor revizuiri (cele care sunt emise la sfârșit cu indicele "a") și noile modele (atmega48 / 88/168 și altele similare).

Acum, să vedem cum să lucrăm cu modurile de consum redus de energie.

În acest mod, se oprește ceasul, dar restul de periferie continuă să funcționeze și microcontrolerul va răspunde la întreruperi externe, întrerupe și UART întrerupere contor / temporizator. Destul de util, de exemplu, atunci când de așteptare pentru un fel de transformare - în timp ce periferia exterioară a gândirii (așa cum este cazul cu senzori 18b20), că microcontrolerul nu este în zadar a mâncat excesul de energie poate fi pus să doarmă în timpul urma lui și, după o anumită perioadă de timp, folosind un cronometru.

Pentru a scufunda microcontrolerul în modul somn, comanda Idle este utilizată în Bascom-AVR.

Un exemplu de utilizare a modului sleep. Aici, cronometrul de întrerupere este configurat după 4 secunde, de îndată ce timerul a depășit, va cauza o întrerupere și trezirea microcontrolerului.

$ regfile = "m8def.dat"
$ cristal = 1000000
'$ sim

configurați cronometrul pentru a genera întreruperi
"întreruperile de la cronometru vor avea loc aproximativ o dată la 4 secunde







Config Timer1 = Timer. Prescale = 64
Pe Timer1 Trezirea:

EnableInterrupts
Activați Timer1
Porniți temporizatorul1

face

Imprimați "Hello" "imprimarea salutului
Imprimați "Așteptați acum"
Idle somn
buclă

Treziți-vă. 'a avut loc întreruperea temporizării

Cel mai economic mod și, de fapt, microcontrolerul este complet dezactivat. În acest mod, generatorul de ceas se oprește și întreaga periferie este oprită, cu excepția dispozitivului de tratare a întreruperii externe, care readuce microcontrolerul la funcționare normală la sosirea întreruperii. Pentru a activa acest mod, dă-i comanda Powerdown.

$ regfile = "m8def.dat"
$ cristal = 1000000
'$ sim

'configurați întreruperea pe INT0
"care au loc la un nivel scăzut la baza MC

Config Int0 = Nivel scăzut
Pe butonul Int0.
EnableInterrupts
Activați Int0

face
Imprimați "Hello" "imprimarea salutului
Imprimați "Acum Powerdown"
Powerdown "sarcina μ în modul de economisire a energiei
buclă

Button. 'a apărut o întrerupere
Imprimați "Start", controlerul sa trezit și a tipărit un mesaj
Imprimați ""
Așteptați 1
Gifr = 64
Întoarceți-vă la bucla principală

Deconectați-mă complet!

În dispozitivele în care microcontrolerul ar trebui să rămână inactiv pentru o lungă perioadă de timp (de exemplu, în termometre pe care majoritatea oamenilor nu le văd), o soluție foarte interesantă poate fi aplicată utilizând un tranzistor cu efect de câmp extern.

Consumul redus de energie al dispozitivelor pe microcontrolere avr - informații utile - proiecte avr -

Linia de jos este următoarea: tranzistorul este conectat la circuitul de alimentare al dispozitivului și este deschis de către microcontroler în timpul executării programului. În timpul funcționării programului, un nivel ridicat de tensiune este păstrat pe piciorul PD0 și conducătorul de câmp este în stare deschisă, trecând un curent prin acesta. După ce a executat programul necesar, microcontrolerul închide tranzistorul, prin aceasta dezactivând complet circuitul. Datorită rezistenței imense a FET în stare închisă, curentul va fi foarte mic (cu mult mai puțin curentul de auto-descărcare al bateriei).

$ regfile = "m8def.dat"
$ cristal = 1000000

Config Portd. 0 = ieșire
PORTD. 0 = 1 'dăm o unitate piciorului, deschizând astfel tranzistorul

Config Portc. 0 = ieșire 'și aici avem un LED
Led Alias ​​Portc. 0

Noi facem munca noastră, de exemplu, l-am luminat cu LED-ul

Led = 1
Se așteaptă 80
Led = 0
Se așteaptă 80
Led = 1
Se așteaptă 80
Led = 0

PORTD. 0 = 0 'închideți tranzistorul

Pentru a porni aparatul, trebuie doar să apăsați butonul de pe tensiunea de alimentare MCU merge din nou, el la rândul său, va deschide tranzistorul și apoi începe să pună în aplicare programul său, și pentru care finalizarea, din nou, taie propria sursa de alimentare.







Articole similare

Trimiteți-le prietenilor: