Svegliarsi dalle modalità di sonno profondo


13

La maggior parte dei microcontrollori (ad es. AVR, MSP430, PIC, ecc.) Supporta una serie di diverse modalità di sospensione. La modalità di sospensione "più profonda" è quella che pretende il consumo di energia più basso (ad esempio "Spegnimento", "Spegnimento"), ma tutti i sistemi di clock sono in genere arrestati in queste modalità e mi sembra che l'unico modo per " sveglia "da loro avviene tramite stimolo esterno (es. interruzione cambio pin, reset chip). Mi sto perdendo qualcosa? Esistono metodi incredibilmente a bassa potenza per generare un segnale di sveglia periodica per un MCU?

Supponendo che il mio obiettivo sia minimizzare il consumo di energia (cioè dormire profondamente il più a lungo possibile, rimanere svegli il più brevemente possibile), mentre mi sveglio periodicamente per eseguire una funzione, qual è il modo comune per ottenere questo tipo di comportamento? Per semplificare ulteriormente le cose, supponiamo che la mia funzione sia apolide (non devo ricordare nulla del passato per eseguirla).

Ho avuto un certo successo usando il WDT sull'MSP430 per ottenere questo effetto. Ho appena reso la mia routine principale la mia funzione, con l'ultima riga che consente al timer watchdog di scadere dopo un certo periodo e passare a LPM4.5 o qualunque sia la modalità "deep sleep". Il risultato netto è che la funzione viene eseguita, la MCU si spegne, il WDT scade e il chip si reimposta, fino alla nausea. Sembra funzionare, chiedendosi solo se esiste un modo "migliore" o "più elegante" o "più efficiente dal punto di vista energetico" per ottenere questo tipo di comportamento?

Non ho ancora provato questo approccio con un AVR, ma penso che il WDT sia più "assetato di potere" negli AVR che sull'MSP430, quindi potrebbe essere meno attraente per lavori a bassa potenza. Forse non esiste un approccio "universale" alla bassa potenza e devi usare gli strumenti offerti da una determinata linea di prodotti? So che la nuova linea picoPower ha molte funzionalità whiz-bang come Event System e Sleep Walking che in alcuni casi difficilmente richiedono che la CPU sia completamente sveglia se riesci ad adattare la tua applicazione a quella struttura ...

OK abbastanza del mio girovagare, lascia qui cosa dovresti dire :)

Modifica Anche esempi concreti che illustrano le tecniche sarebbero fantastici!


2
Hai visto focus.ti.com/lit/wp/slay015/slay015.pdf ? Alcuni punti interessanti accanto ai numeri di potenza del sonno assoluta.
XTL

Risposte:


15

La maggior parte dei micro supporta un oscillatore a cristallo dell'orologio a 32.768 kHz a bassa potenza con una sorta di prescaler e interruzione del timer. Impostare il prescaler in modo che il timer conti lentamente e l'interrupt si verifichi nel periodo desiderato.

Alcuni micro hanno anche un timer RC a bassa potenza incorporato se il tempismo esatto non è critico.

Il foglio dati per qualsiasi micro a bassa potenza elencherà la potenza con l'oscillatore 32.768 (e nient'altro) in esecuzione. È abbastanza vicino allo zero. Puoi fare i calcoli per vedere se questo è accettabile e confrontarlo con l'attuale disegnato dal cane da guardia.

OK, ad esempio su msp430f2013, diamo un'occhiata alla potenza nel foglio dati.

0,5 μA è quasi zero, sebbene sia cinque volte la vera modalità OFF.

Per maggiori dettagli, possiamo guardare all'interno del foglio dati.
Passare da LPM4 (tutto spento) a LPM3 (facendo funzionare l'oscillatore) è la differenza tra 0,5 μA e 1 μA.

Supponiamo che la batteria sia CR2032 con una capacità di 225 mAh. Quindi lo standby in LPM4 è di circa 50 anni e in LPM3 di circa 25 anni. 25 anni sono abbastanza lunghi per molte applicazioni, perché la corrente ON (durante la misurazione stessa) domina il consumo.

testo alternativo


sentiti libero di fare un esempio concreto ... :)
vicatcu

fatto, per cella msp430f2013 e cr2032.
segna il

Usiamo Cr2032 al mio lavoro con l'ACLK a 32768, che si sveglia ogni 2 secondi. Usiamo un ricetrasmettitore ogni 90 secondi. Effettuiamo una misurazione della temperatura ogni 10 secondi. Possiamo durare oltre 4 anni con un nuovo CR2032.
Kortuk,

3

Alcune parti hanno oscillatori piuttosto a bassa potenza (alcuni uA) per il risveglio, e alcuni PIC hanno anche un hardware che consente di riattivare lentamente una tensione su un pin - questo può essere da un condensatore esterno impostato prima di dormire per caricare sopra periodo di veglia richiesto.


3

I PIC con RTC possono avere RTC impostato su uno stato di allarme, quindi si riattiverà l'MCU in un determinato momento, con un cristallo esterno a 32,768 kHz. Disegnano ~ 450nA IIRC in modalità RTC + sleep, ma solo 20nA con RTC disattivato.


3

I timer del watchdog AVR non sono così male come sembra. Secondo la scheda tecnica ATTiny13A, l'assorbimento di corrente in modalità di spegnimento @ 3V è 2μA senza WDT abilitato e 4μA con. Certo, è 2 volte di più, ma la corrente stessa è abbastanza piccola per circa 6,2 anni di funzionamento, che è all'incirca la stessa quantità di tempo che impiega comunque la batteria a degradarsi da sola (fonte: la data di scadenza).

Inoltre, praticamente qualsiasi altra cosa che agganci attorno al μC trarrebbe molto di più. In effetti, la parte più difficile della progettazione di un circuito così a bassa potenza è l'interruzione di tutta la corrente nel resto dello schema durante il periodo di sonno.

Il ritardo di sveglia è anche ben configurabile, da ~ 12ms a 8s, se la memoria serve. La frequenza effettiva non fa alcuna differenza evidente se vengono utilizzate routine di interruzione brevi: sono riuscito ad accendere l'ADC, campionare un piatto da 1K, calcolare alcune cose dai risultati e tornare a dormire senza alcun cambiamento evidente nel consumo complessivo ( levigato con un grande condensatore per compensare la lentezza del mio multimetro).

Nota che il WDT non è uno strumento di cronometraggio accurato, quindi potresti voler collegare un RTC esterno. Quelli possono consumare semplici nanoamps, quindi dovrebbe essere un buon abbinamento. In effetti, se l'RTC in questione è in grado di generare impulsi regolari, è possibile utilizzarlo come sorgente di risveglio anziché WDT al costo di utilizzare un pin.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.