Selezionare e implementare il microcontroller a basso consumo più idoneo per IoT
Contributo di Editori nordamericani di DigiKey
2017-12-13
Il consumo di energia è un aspetto cruciale per i dispositivi alimentati a batteria, sia per massimizzare il tempo tra le sostituzioni della batteria che per consentire ai dispositivi di essere alimentati da fonti di energia ambientale. Se da un lato molti sviluppatori di sistemi embedded sono esperti nell'ottimizzazione del codice, la conservazione dell'energia per i dispositivi IoT richiede un approccio più completo.
Infatti, occorre non solo tener conto delle dimensioni della memoria, delle prestazioni dell'MCU e del consumo energetico ma valutare anche la sezione radio, i circuiti analogici, i convertitori di potenza e i sensori. Tutti questi fattori contribuiscono al profilo energetico generale del sistema, ma la sezione su cui gli sviluppatori hanno il massimo controllo è il microcontroller.
Questo articolo descriverà come selezionare un microcontroller a basso consumo per IoT e dove indirizzarsi per quanto riguarda le periferiche da inserire nel progetto. Verrà inoltre mostrato come utilizzare gli strumenti di monitoraggio dell'alimentazione e saranno forniti suggerimenti e trucchi per l'ottimizzazione di energia e prestazioni.
Selezionare un'architettura di microcontroller a basso consumo
La selezione di un microcontroller a basso consumo inizia con l'identificazione del core del processore più idoneo per il microcontroller. Ci sono molti core di microcontroller proprietari oggi disponibili, ma un buon punto di partenza lo si può trovare nei microcontroller ARM® Cortex®-M. Questi core sono supportati in tutto il settore da più fornitori, dando luogo a un ecosistema solido per supporto e risorse.
Per ridurre al minimo il consumo di energia, ci sono due fattori da considerare prioritariamente: prestazioni ed efficienza energetica. Può essere difficoltoso quantificarli per un microcontroller, ma ci sono due standard di benchmark che gli sviluppatori possono utilizzare: CoreMark e ULPmark di EEMBC.
CoreMark misura la potenza di elaborazione disponibile su un microcontroller: maggiore è il valore, maggiore è la potenza di elaborazione. Per esempio, il processore STM32L053 di STMicroelectronics, che può essere testato da una scheda STM32L053 Nucleo, ha un CoreMark di 75,18. Un altro componente di STMicroelectronics, STM32F417, vanta un CoreMark di 501,85. A prima vista, uno sviluppatore potrebbe pensare che sia preferibile STM32F417 dato che sembra avere prestazioni di gran lunga superiori. Tuttavia, ci sono alcune altre considerazioni da non trascurare prima di prendere una decisione.
Figura 1: La scheda STM32L053 Nucleo di STMicroelectronics è basata su un core ARM® Cortex®-M0+ progettato per applicazioni a basso consumo, con forti vincoli di risorse. (Fonte dell'immagine: STMicroelectronics)
Innanzitutto, CoreMark indica semplicemente quante iterazioni di benchmark è in grado di eseguire in un secondo. I processori con frequenze di clock differenti produrranno valori molto diversi. Un metodo migliore per valutare la potenza di elaborazione sarebbe quello di mettere a confronto i risultati derivanti dalla formula CoreMark/MHz. In questo caso, il processore STM32L053 produce un risultato di 2,35 mentre STM32F417 si attesta a 2,98 (fonte: EEMBC). I due processori sono molto vicini in termini di efficienza.
In secondo luogo, uno sviluppatore deve guardare all'architettura del core. STM32L053 è basato su ARM Cortex-M0+, ottimizzato per un basso consumo energetico e con un numero minimo di moduli di debug. Inoltre, sono stati rimossi tutti i "fronzoli" che si trovano nei processori ad alte prestazioni e che in genere sono i più energivori.
STM32F417, invece, si basa su un ARM Cortex-M4, progettato per essere un processore ad alte prestazioni funzionante a una frequenza di clock di 168 MHz, rispetto ai 32 MHz dell'altro. È quasi cinque volte la velocità dell'altro clock con un modesto aumento del 26% nel valore CoreMark/MHz.
ULPmark misura quanto efficientemente il microcontroller è in grado di eseguire operazioni come calcoli e operazioni in memoria. Le versioni più recenti includono anche la valutazione dell'efficienza periferica, fornendo allo sviluppatore una buona panoramica sull'efficienza complessiva del processore dal punto di vista dell'utilizzo di energia.
Individuare il giusto mix di periferiche
Il core del microcontroller è solo il primo fattore che uno sviluppatore dovrebbe prendere in considerazione quando sceglie un microcontroller a basso consumo. Anche le periferiche del progetto devono essere prese in considerazione. Le periferiche fanno una grande differenza nel consumo di energia della CPU. Gli sviluppatori vogliono la certezza di selezionare componenti che hanno periferiche a basso consumo e che siano il più automatizzate possibile.
Per cominciare, dovrebbero indirizzarsi verso dispositivi con più di un singolo canale di accesso diretto alla memoria (DMA). Il DMA consente di spostare le informazioni all'interno del microcontroller senza intervento della CPU. Ciò significa che la CPU può fare altro, ad esempio eseguire il codice dell'applicazione, oppure può essere spenta e posta in modalità sospensione profonda per risparmiare energia. Nel frattempo, il canale DMA viene utilizzato per spostare i dati dalla periferica alla memoria, dalla memoria alla periferica e anche tra le diverse aree della memoria.
Un ottimo esempio di un componente progettato per funzionare a basso consumo è MSP430FR5994 di Texas Instruments, reperibile nel kit di sviluppo MSP430FR5994 Launchpad. MSP430FR5994 è dotato di un controller DMA integrato dotato di sei singoli canali che possono essere utilizzati contemporaneamente in background.
Figura 2: Il kit di sviluppo MSP430FR5994 Launchpad di Texas Instruments contiene diverse periferiche a basso consumo, ad esempio un controller DMA a sei canali, un acceleratore per l'elaborazione dei segnali e diverse modalità sempre a basso consumo. (Immagine per gentile concessione di Texas Instruments)
Un altro esempio è quello di fare una ricerca tra una miriade di modalità a basso consumo. Un moderno microcontroller offre diverse modalità di alimentazione che imposteranno la CPU e le periferiche in stati differenziati: da un semplice stato di sospensione, fino a una sospensione profonda dove il microcontroller è quasi spento. In modalità di sospensione profonda, l'intero microcontroller può assorbire anche solo poche decine di nanoampere.
Quando si valutano gli stati a basso consumo di un microcontroller, è utile esaminare anche le catene di strumenti e le capacità dell'ecosistema. L'impostazione e la configurazione delle modalità a basso consumo di energia e gli eventi che effettuano il "risveglio" possono essere operazioni impegnative e richiedere molto tempo. I microcontroller più recenti, come i Synergy di Renesas, contengono nel loro ambiente di sviluppo un software di configurazione che consente allo sviluppatore di impostare queste modalità con pochi semplici clic. Per un'applicazione a basso consumo, uno sviluppatore sarebbe propenso a prendere in considerazione l'MCU a 32 bit S124 con 64 o 128 kbyte di flash. Per dare inizio allo sviluppo con questi dispositivi, è disponibile la scheda di sviluppo Synergy DK-124.
Figura 3: La scheda di sviluppo Synergy DK-124 di Renesas è dotata di un comparatore analogico a basso consumo, modalità di sospensione multipla e funzionamento a basso consumo energetico. (Immagine per gentile concessione di Renesas)
Misurazione e verifica del consumo energetico di un microcontroller
La scelta di un microcontroller a basso consumo è solo il primo passo per garantire che un sistema possa raggiungere il suo potenziale energetico più basso. Al fine di utilizzare veramente il minimo di energia, gli sviluppatori devono monitorare attentamente il consumo energetico del loro microcontroller durante l'intero processo di sviluppo software. Ci sono diversi metodi che possono essere utilizzati per monitorare il consumo energetico del microcontroller, tra cui sonde di corrente e debugger sensibili al risparmio energetico.
Le sonde di corrente non fanno altro che misurare la tensione attraverso un resistore di shunt e quindi calcolare la corrente in base alla tensione e alla resistenza dello shunt. Questa è una buona soluzione se si vuole misurare l'assorbimento di corrente dell'intero sistema. Se tuttavia si vuole davvero correlare ciò che il microcontroller sta facendo con l'energia consumata, un debugger mirato sull'energia è la strada da percorrere. Tale approccio permette allo sviluppatore di determinare quali aree di codice possono richiedere ulteriori ottimizzazioni o rielaborazioni.
Ci sono diversi debugger che tengono conto dei consumi energetici e che lavorano con i microcontroller ARM Cortex-M™, ad esempio la sonda di potenza I-Scope di IAR Systems per la sonda di debugging I-Jet (Figura 4).
Figura 4: Una volta collegato a IAR I-Jet, I-Scope può essere utilizzato per misurare la tensione di sistema, la corrente e la corrente del microcontroller; tutti questi valori vengono poi correlati al contatore del programma (PC) per determinare quali aree di codice stanno assorbendo la maggior quantità di energia. (Immagine per gentile concessione di IAR Systems Software)
Lo strumento I-Scope è dotato di un monitor di tensione interno basato su un amplificatore differenziale. Misura la caduta di tensione attraverso un resistore di shunt in serie con il rail di alimentazione del microcontroller. Ciò consente alla sonda di debug I-Jet di misurare la tensione campionando simultaneamente il contatore di programma (PC) nel core CPU del microcontroller (Figura 5).
Figura 5: I-Scope (evidenziato in giallo) lavora in tandem con la sonda di debug I-Jet per correlare la corrente attraverso il resistore di shunt al codice in esecuzione in un dato momento. (Immagine per gentile concessione di IAR Systems Software)
Il contatore di programma indica alla sonda esattamente dove si trova l'applicazione nel suo processo di esecuzione. La correlazione tra le informazioni del contatore di programma e la misurazione della corrente consente di generare un profilo energetico dell'applicazione che può essere utilizzato per ottimizzare e verificare il proprio codice.
Suggerimenti e consigli per la progettazione di un dispositivo a basso consumo
Trovare microcontroller e hardware di monitoraggio idonei può permettere a uno sviluppatore la progettazione di un dispositivo a basso consumo. Il trucco, a questo punto, è saper ottenere il massimo da quel microcontroller per ridurre al minimo il consumo energetico. A tale scopo, ci sono diversi suggerimenti generali che uno sviluppatore può seguire. Tra questi:
- Creare un budget batteria frontale con stime di consumo minimo, massimo e medio.
- Utilizzare il timer di basso consumo per pilotare tutti i tick interni di sistema per uno scheduler o RTOS.
- Mettere la CPU in modalità di sospensione il più spesso possibile (non trascurare i tempi di risveglio e spegnimento per le applicazioni in tempo reale).
- Creare un sistema guidato dagli eventi. Si possono utilizzare gli interrupt per riattivare il sistema, fargli svolgere il suo compito e poi tornare immediatamente in modalità di sospensione.
- Integrare il controller DMA e le eventuali periferiche automatizzate nell'architettura software per consentire un'elaborazione "parallela".
- Gestire la frequenza di clock del microcontroller nel modo più idoneo per ottenere un ulteriore risparmio energetico.
- Monitorare il consumo di energia del software e non temere di sperimentare il progetto con diverse architetture e configurazioni. Non è detto che il primo tentativo sarà la configurazione più favorevole possibile.
- Se disponibile, utilizzare la funzione sleep-on-exit dell'interrupt, che consente al processore di entrare in sospensione al termine di un'interruzione e di salvare alcune decine di cicli di clock su ogni evento.
Conclusione
La scelta di un microcontroller a basso consumo per un dispositivo IoT può essere difficile. Come abbiamo visto, ci sono molteplici aspetti da prendere in considerazione, che vanno dall'architettura dei microcontroller alle capacità delle sue periferiche.
Una volta selezionato un microcontroller a basso consumo, non c'è alcuna garanzia che uno sviluppatore raggiunga il minimo consumo energetico. Lo stadio successivo è un'attenta progettazione dell'architettura software e il monitoraggio delle relative prestazioni durante tutto il ciclo di sviluppo. Solo a questo punto uno sviluppatore sarà in grado di sfruttare appieno le caratteristiche e le funzioni di basso consumo del microcontroller scelto.

Esonero della responsabilità: le opinioni, le convinzioni e i punti di vista espressi dai vari autori e/o dai partecipanti al forum su questo sito Web non riflettono necessariamente le opinioni, le convinzioni e i punti di vista di DigiKey o le sue politiche.