Low-Power: Design Guide

Benvenuti a un nuovo appuntamento con la Rubrica Firmware Reload di Elettronica Open Source. In questa Rubrica del blog EOS abbiamo raccolto gli articoli tecnici della vecchia rivista cartacea Firmware, che contengono argomenti e temi passati ancora di interesse per Professionisti, Makers, Hobbisti e Appassionati di elettronica. Molte applicazioni sono realizzate all'insegna del "Basso Consumo" e caratterizzate da una fitta serie di considerazioni sulla riduzione dell'assorbimento, oggi senz'altro uno tra i primi aspetti ad essere contemplato in fase progettuale, dopo quelli relativi a prestazioni e costo di produzione.

Introduzione

Le applicazioni "Iow-power" rappresentano una significativa porzione del futuro mercato dei sistemi embedded. Ogni anno molti progettisti cercano di realizzare progetti all'insegna della portabilità, del wireless e con una grande attenzione verso il consumo energetico. Questo articolo cercherà di rendere un'idea delle caratteristiche di applicazioni basate sul low-power, analizzando brevemente questa filosofia di approccio progettuale nei sistemi embedded. E' molto importante, per il progettista, raggiungere i necessari compromessi tra consumo ed altri fattori come costo, dimensioni e complessità. Mentre si può ricorrere ad alcune tecniche di low-power senza costi aggiuntivi, altre possono richiedere di scendere a compromessi. Nell'articolo si esamineranno dei casi in cui è possibile applicare alcuni di questi compromessi. Non sarà possibile, in questo contesto, analizzarli tutti, ma per un progettista conta soprattutto considerare l'impatto che queste tecniche volte al risparmio energetico hanno sulle proprie applicazioni. L'articolo fa riferimento a progetti basati su MCU PIC®, senza entrare in dettaglio sulle rispettive caratteristiche. Per maggiori informazioni riguardo alle prestazioni Low-Power disponibili nei dispositivi PIC MCU si può fare riferimento all'AN1267, come riportato nelle note a fondo articolo.

ELEMENTI FONDAMENTALI DI LOW POWER

La definizione di low power varia in modo significativo a seconda delle applicazioni. In alcune di queste il consumo non è importante, ma il progettista cerca di minimizzare i costi di esecuzione o massimizzare il rendimento effettivo. In altre, il consumo va valutato in relazione ad una disponibilità di potenza limitata, come nel caso in cui si faccia uso di una batteria, che per motivi di capacità richiede necessariamente un'attenta gestione dei consumi del sistema. E' importante, per questi sistemi, considerare e capire ciò che causa il consumo di energia e individuare dove operare in termini di minimizzazione del consumo per realizzare un sistema realmente low-power.

FONTI PRINCIPALI DI CONSUMO DI ENERGIA

Nei dispositivi CMOS come i microcontrollori, il consumo di energia si può dividere in due ampie categorie: dinamico e statico. Il primo consiste nel consumo che si ha durante l’esecuzione di codice e task, il secondo si ha in assenza di esecuzione, quando il dispositivo è comunque collegato ad una fonte di alimentazione.

CONSUMO DINAMICO

Il consumo dinamico di energia si riferisce alla corrente assorbita durante le normali operazioni di una MCU. Include le perdite che si hanno nei circuiti CMOS a commutazione e le correnti di polarizzazione di elementi attivi dei circuiti, come i convertitori A/D o gli oscillatori. Per capire l’origine delle perdite dei circuiti switching, si può considerare un inverter CMOS, riportato in Figura 1.

Figura 1: Percorsi di correnti di consumo dinamico di un CMOS INVERTER

Figura 1: Percorsi di correnti di consumo dinamico di un CMOS INVERTER

L’inverter illustrato consuma poco o nulla quando la tensione in ingresso è VDD o VSS. Quando la tensione passa da VDD a VSS si ha un periodo di transizione in cui il PMOS e l’NMOS funzionano entrambi nella regione lineare con scorrimento di corrente da VDD verso massa. In un sistema reale, il bus di output costituisce una capacità di carico che si carica e si scarica in corrispondenza del cambiamento dello stato logico e quindi rappresenta un consumo di corrente addizionale. Il consumo medio che si può attribuire alle perdite di commutazione di un singolo gate si può definire dall’equazione P=V2 x f x C, dove V è la tensione di alimentazione, f è la frequenza di commutazione e C è la capacità di carico. Questa equazione vale per un singolo circuito CMOS, non per la MCU nel suo complesso: in questo caso questa equazione si moltiplica per un fattore di scala che varia in relazione alla frequenza di commutazione di tutti i gate nel circuito. L’equazione rivela alcuni punti importanti da considerare per controllare il consumo dinamico di energia; il primo punto è la tensione, che compare al quadrato e può avere un’importanza significativa sul consumo. Un’altra considerazione da fare è legata alla possibilità di modificare qualcuno dei componenti del sistema: ogni sistema ha delle funzionalità che possono limitare la possibilità del progettista di agire su tensione, frequenza o capacità di carico. La capacità dipende dal layout e struttura interni della MCU, dalle tecniche di progettazione; si possono preferire alcune caratteristiche della MCU e non ricorrere ad altre. Le capacità esterne di carico, di valore maggiore di quelle che dipendono dal layout interno, e segnali presenti sui pin I/O si possono prendere in considerazione nella progettazione. Maggiori dettagli si possono trovare nell’AN 1416Low-Power Design Guide”. La tensione di funzionamento dipende principalmente dal processo produttivo di fabbricazione della MCU: la tendenza ad un’integrazione sempre più spinta si associa ad una diminuzione della tensione di funzionamento e ad un consumo minore; a volte la tensione minima di funzionamento può dipendere da un qualche componente come un sensore o un’interfaccia di comunicazione; entrano in gioco considerazioni di compromesso tra costo e consumo; l’aggiunta di un regolatore di tensione può incrementare il costo del sistema; alcune considerazioni di low- power si possono fare riguardo all’utilizzo o meno di un regolatore. La frequenza di clock è l’elemento maggiormente considerato dai progettisti di sistemi embedded ai fini del conseguimento delle caratteristiche low-power. La frequenza ottimale di funzionamento dipende da un insieme di fattori:

  • Velocità di comunicazioni o campionamento
  • Prestazioni nell’esecuzione del programma
  • Valore massimo dell’intensità di corrente

Come si vede dall’equazione, alle frequenze più basse corrisponderanno i più bassi valori della corrente che incide sul consumo dinamico. Si può considerare che a volte dei periodi di esecuzione brevi e la modalità Sleep sono alquanto importanti dal punto di vista di low-power: ciò può far preferire frequenze elevate; frequenze più basse rendono le perdite di commutazione meno importanti per il consumo del sistema; contano anche le correnti a riposo che, come si è già ricordato, contano per il consumo statico.

Figura 2: Correnti di dissipazione di un transistor NMOS

Figura 2: Correnti di dissipazione di un transistor NMOS

CONSUMO STATICO

Il funzionamento del sistema quando non vi è del codice in esecuzione comporta solo un consumo statico; include solitamente le correnti di polarizzazione, dei timer a basso consumo e le correnti di dissipazione. E’ importante per i sistemi alimentati a batteria, la cui modalità di funzionamento prevalente è lo Sleep mode. I circuiti analogici come i regolatori di tensione e i Brown-out Reset sono caratterizzati da un funzionamento a riposo che può dipendere da variazioni di temperatura o tensione; le correnti di polarizzazione per mantenere il loro funzionamento entro certi margini prestabiliti si possono e si devono valutare; per compensare il consumo di corrente dovuto a molti di questi moduli si sfrutta la flessibilità della MCU che permette di attivare o disattivare i blocchi analogici, oppure si ricorre ad altre modalità di basso consumo o a margini meno severi. Quando si fanno considerazioni circa il consumo statico del sistema, si devono prendere in considerazione anche i timer come i Watchdog Timer (WTD) ed i Real-Time Clock/Calendar (RTCC), anche se funzionano a frequenza costante. Se si prendono in considerazione i circuiti dinamici, questi seguono le considerazioni già viste nella sezione sul consumo dinamico e sono a loro volta influenzati da tensioni, frequenza e capacità.

Maggiori dettagli sulla riduzione del consumo degli oscillatori si possono trovare nell’AN1416 “Low-Power Design Guide”. La corrente di dissipazione (Leakage) è causata dal funzionamento non ideale dei MOSFET usati nei dispositivi CMOS. Mentre l’integrazione si fa più elevata, ci sono molti aspetti del FET che si discostano da un funzionamento ideale. Compaiono correnti di dissipazione tra drain e source, anche quando il gate si trova al di sotto della soglia di conduzione. Questa corrente è chiamata dissipazione subthreshold e si produce perché drain e source sono fisicamente più ravvicinati in transistor sempre più minuscoli. Più un transistor è miniaturizzato, maggiore diventa la corrente di perdita. Inoltre, tale corrente è influenzata da temperatura e tensione e può arrivare a valori anche di svariati microampere. Questi valori di corrente non possono essere controllati da parte del progettista: un’integrazione meno elevata li può ridurre, ma può far aumentare le correnti relative al funzionamento in regime dinamico. Nemmeno la temperatura si può controllare, dipendendo quest’ultima dalle caratteristiche del sistema. Generalmente per ridurre tali correnti si preferisce ridurre la tensione e disattivare i circuiti non necessari. Alcune MCU PIC® dispongono di caratteristiche come il Deep Sleep, che disattiva alcuni circuiti nel dispositivo per ridurre il consumo.

CONSIDERAZIONI DI COMPROMESSO DI PROCESSO PRODUTTIVO

Se si pensa di ottimizzare sia il consumo statico che dinamico, diventano evidenti alcune considerazioni critiche di compromesso. I processi di integrazione più elevata consentono un consumo dinamico più ridotto ma correnti di perdita maggiori. La Tabella in Figura 3 riporta le caratteristiche di alcuni processi produttivi e dà un’idea dei corrispondenti consumi statico e dinamico. In alcuni casi può essere difficile per il progettista stabilire quale sia il più importante per ridurre il consumo di un dato sistema. Nella scelta della MCU conta, per il progettista, sapere se il sistema è caratterizzato maggiormente da un consumo dinamico o statico. Queste considerazioni vanno sotto il nome di Power Budgeting, un argomento discusso nella sezione “Misura del consumo”. I produttori di MCU cercano costantemente di contenere le correnti di perdita mano a mano che i processi produttivi tendono ad una maggiore integrazione.

Figura 3: Paragone di consumo di processi produttivi

Figura 3: Paragone di consumo di processi produttivi

COS’È IL “LOW-POWER”? ALCUNI ESEMPI

Low-power assume significati diversi a seconda dei sistemi. Alcune applicazioni sono caratterizzate prevalentemente dal punto di vista del consumo dinamico, dal momento che funzionano in modo costante come un generatore. Un’applicazione basata su un’alimentazione fornita da una batteria è caratterizzata invece dal consumo Sleep mode, dal momento che tende a funzionare per la maggior parte del tempo in questa modalità di risparmio energetico. La Figura 4 mostra un esempio di applicazione di cui vengono fatte alcune considerazioni di low-power e di compromesso. Un sensore fornisce un dato di campionamento ogni 100 ms e, una volta che si è arrivati a 32 dati (full page) si provvede a salvarli in una memoria EEPROM; il sistema impiega 50 μs a fornire un dato e 5 ms a salvarlo nella EEPROM; il sensore funziona utilizzando un PIC 16LF1826, della famiglia XLP PIC a 3V.

Figura 4: Esempio di sistema low-power

Figura 4: Esempio di sistema low-power

MISURA DEL CONSUMO STATICO E DINAMICO

Quando si fa riferimento al consumo complessivo di un sistema ci sono due valori importanti: il consumo medio e il consumo massimo; il consumo medio è la somma dell’energia totale consumata dal sistema nelle due modalità di funzionamento dinamico e statico diviso per un tempo medio di loop del sistema come si vede in Figura 5. Calcolare il consumo medio può essere complesso per molti sistemi; nella pratica comune è difficile misurare correnti o ricavare un consumo da riferirsi a sistemi low-power con un amperometro o un oscilloscopio; è spesso necessario combinare metodi di misura multipli per risalire al vero valore di consumo del sistema. Maggiori dettagli sulla misura di consumo statico e dinamico si possono trovare nei riferimenti riportati alla fine dell’articolo: a volte può essere necessario modificare il codice, in modo tale da permettere di definire diversi stati di funzionamento del sistema e misurare in seguito il consumo relativo ad essi per ricavare il consumo dinamico generale.

Figura 5: Calcolo del consumo medio del sistema

Figura 5: Calcolo del consumo medio del sistema

CREAZIONE DI UN PROFILO DI CONSUMO

Una volta che si sono ricavati dati relativi al consumo statico e dinamico si può pensare a definire un profilo di consumo: vedi la Tabella di Figura 6. Una volta che il profilo è stato definito, il compito di ottimizzare l’applicazione diventa più semplice; il profilo evidenzia le diverse modalità di funzionamento del sistema e i relativi consumi. Esso si riferisce al sistema di Figura 4: si può notare che le modalità di funzionamento cui si attribuisce maggior consumo sono quelle di scrittura in memoria e Sleep mode. Ulteriori dettagli sui compromessi che si possono considerare tra consumo e funzionalità si trovano nell’AN1416 “Low-Power Design Guide”.

GESTIONE DEL SOFTWARE

L’ottimizzazione del software ha un’influenza critica nelle applicazioni di low-power. Non basta selezionare i dispositivi e ottimizzare l’hardware se non si ricorre ad appropriate tecniche software; la sezione seguente mostra alcuni accorgimenti che si possono prendere in considerazione nello sviluppo del software per ridurre il consumo.

Figura 6: Esempio di profilo di consumo

Figura 6: Esempio di profilo di consumo

ESECUZIONE DI CODICE CONDIZIONALE

Vi sono alcuni accorgimenti, riguardanti il software, che si possono adottare per ridurre il consumo. Una tecnica software che si può utilizzare in molte applicazioni consiste nel considerare una esecuzione di codice condizionale. La Figura 7 illustra un grafico del consumo del sensore preso ad esempio.

Figura 7: Consumo del sensore

Figura 7: Consumo del sensore

Prima di scrivere nella EEPROM, il sensore fornisce 32 dati; questo permette al sistema di ridurre il consumo con un impiego di tempo di esecuzione di codice molto breve attraverso eventi di wake-up e facendo in modo di ricorrere poco alle operazioni di scrittura della memoria Flash. Inoltre, il sistema può cambiare la frequenza di clock per migliorare il consumo. Nell’esempio riportato, durante i processi di campionamento e scrittura in memoria viene usata una sorgente di clock a frequenza più bassa, mentre un clock a frequenza più elevata viene riservato all’esecuzione del codice riguardante la cosiddetta operazione di scalatura; i tempi impiegati per il campionamento e la scrittura in memoria sono fissati dal convertitore A/D e dalla EEPROM usati: ridurre la frequenza in corrispondenza di questi riduce il consumo senza aumentare il tempo di esecuzione. Il tempo riservato all’operazione di scalatura dipende solamente dalla MCU e varia con la frequenza utilizzata. Durante questo tempo è preferibile un’esecuzione veloce, per permettere al sistema di tornare poi alla modalità Sleep.

INTERRUPT O POLLING

Nel tentativo di eliminare il consumo associato ai loop di attesa (Wait Loop) un progettista di sistemi low-power può considerare di modificare il codice in modo da utilizzare un interrupt invece che basarsi su istruzioni di polling. L’uso di interrupt permette di ricorrere a modalità di risparmio energetico, come lo Sleep e l’Idle. Si può considerare il sistema considerato nell’esempio (Figura 4): si deve valutare il tempo di campionamento e ricorrere a routine di interrupt invece di leggere il flag dedicato all’A/D. Sistemi che non prevedono frequenti task di background possono basarsi su codice in cui sono presenti istruzioni di polling, più semplice, compatto e senza consumo aggiuntivo.

IN CONCLUSIONE

La progettazione low-power è un argomento complesso e non si può trattare in un’unica sessione. L’articolo si deve considerare come un’introduzione alle molte questioni che un progettista può essere portato ad affrontare durante la progettazione; un professionista deve conoscere le diverse fonti cui attribuire il consumo in un sistema, applicare per quanto possibile tutti gli accorgimenti e le note tecniche relative agli specifici componenti, le tecniche di ottimizzazione del software e considerare tutte le possibili relazioni tra la funzionalità ed i consumi, dato che questi possono diventare veramente critici in alcune applicazioni.

Scarica subito una copia gratis

Scrivi un commento

Seguici anche sul tuo Social Network preferito!

Send this to a friend