Tecniche di riduzione del consumo di potenza con ESP32

Tecniche di riduzione del consumo di potenza con ESP32

13 giu 2019

La maggior parte dei sistemi elettronici embedded moderni è alimentata a batterie. Fanno eccezione gli elettrodomestici e alcuni sistemi industriali ed automobilistici. La massiccia diffusione di dispositivi portatili, indossabili o installabili a parete che collegano, misurano e controllano il mondo attorno a noi è stata resa possibile anche dallo sviluppo dei microcontrollori e dall’evoluzione delle tecnologie pervasive di comunicazione senza fili. L’alimentazione di questi dispositivi con singole batterie a bottone o alcaline ha portato non solo all’integrazione di funzioni di controllo della potenza nei microcontrollori, ma ha anche spinto i produttori ad impiegare modalità di riposo software a bassissimo consumo, in modo da differenziare meglio i loro prodotti. Dato che oggi la connettività è onnipresente, l’ulteriore integrazione monolitica in system-on-chip (SoC) di ricetrasmettitori ed altri blocchi, come quelli che gestiscono la sicurezza e l’autenticazione criptata, è diventata comune. La sfida risiede nel fatto che ogni parte aggiuntiva del SoC consuma potenza!

Figura 1 – Schema a blocchi funzionali del microcontrollore Espressif ESP32 SoC

Un microcontrollore SoC wireless molto diffuso è il modello ESP32 di Espressif, illustrato in figura 1. Questo dispositivo integra una lunga lista di funzioni e caratteristiche nell’area di un francobollo. Sebbene ci siano molte funzionalità dal consumo non trascurabile, Espressif ha integrato anche efficaci soluzioni di controllo della dissipazione di potenza fin dall’inizio. Vediamo quindi come ridurre il consumo di potenza del vostro progetto per prolungare la durata della batteria.

Normalmente vi sono molti modi di affrontare il problema. Chiaramente, tra le sfide che il progettista si trova ad affrontare, vi sarà anche la ricerca di un compromesso tra il comportamento dell’utente dell’applicazione e la riduzione del consumo di potenza. Il tipo di utilizzo del sistema determina in modo rilevante il perimetro entro il quale le tecniche di riduzione del consumo si possono spingere. Ad esempio, un sensore di temperatura da parete rimarrà inattivo per una larga frazione del tempo, essendo sufficiente una lettura della temperatura ogni due minuti. Di conseguenza, una comprensione approfondita di tutti gli stati in cui il sistema si troverà ad operare è essenziale per decidere come implementare qualsiasi soluzione di risparmio energetico.

Durante le fasi iniziali del progetto è molto probabile che si conducano, in qualche forma, indagini sui profili di consumo di potenza. Il primo passo della validazione è alimentare il sistema dalla batteria prescelta con consumi anche nell’ordine dei mAh in tutti gli stati operativi. Questa indagine porta anche ad identificare quelle funzioni accessorie nel SoC che non vengono mai attivate e quindi possono essere permanentemente disattivate.

Il lettore avrà notato che il ESP32 possiede due core primari, entrambi operanti a 240 MHz. A seconda del tipo di progetto, è possibile ridurre la frequenza di clock? Se il carico computazionale non richiede entrambi i processori, perché non disattivarne uno? Secondo il datasheet del ESP32, il consumo di picco dei core operanti a 240 MHz, senza la radio, è di 68 mA, mentre a 80 MHz scende a 31 mA. Come mostrato in figura 2, il consumo di potenza viene più che dimezzato con un minimo sforzo, sempre che tale operazione non impatti sull’esperienza dell’utente o sull’efficacia dell’applicazione.

Figura 2 – Consumo di potenza del circuito integrato SoC ESP32

Il prossimo candidato, responsabile di una grossa quota del consumo, è il ricetrasmettitore. Durante la trasmissione, il ricetrasmettitore a 2.4 GHz 802.11 b/g/n Wi-Fi / BT raggiunge picchi di 240 mA, che scendono a 100 mA durante la ricezione. Di nuovo, sapendo quanto frequentemente è necessario comunicare, si determina l’entità del risparmio ottenibile. L’intero modem radio può essere spento per alcuni intervalli di tempo. Ad esempio, se il sensore che misura la temperatura ogni due minuti invia il valore tramite Wi-Fi con un tempo totale di risveglio, lettura ed invio pari a 3 secondi, è possibile essere attivi solo per 5 secondi su 180, spegnendo la radio per i restanti 175 secondi. Dato che la radio può consumare di più dei core, una particolare attenzione va dedicata a questo componente cruciale.

L’asso nella manica del ESP32 è la funzione di attivazione del processore a bassissima potenza che include i clock a bassa potenza, il quarzo ed il PLL; che sono attivi quando le funzioni principali di temporizzazione sono messe in modalità power down.

Complessivamente il chip ESP32 offre cinque modalità di power down predefinite, illustrate in figura 3.

Figura 3 – Modalità di funzionamento in power down del circuito integrato Espressif ESP32

Nella modalità attiva i core e la radio sono tutti accessi. In questo caso si possono applicare i consigli sulla riduzione della frequenza di clock in qualsiasi progetto. Analogamente, la modalità modem sleep lascia accesi i core e spenge solamente la radio con possibilità di risveglio immediato.

La modalità light sleep spegne i clock principali, arresta i core e spegne la radio. Il consumo di corrente cala a 800 µA con una latenza di risveglio inferiore a 1 ms.

Sono però le ultime due modalità ad adattarsi meglio ai progetti Internet-of-Things, nei quali la comunicazione è molto rara. Nella modalità deep sleep i core sono spenti, con conseguente perdita del contesto, la radio è spenta e solo una piccola quantità di dati viene salvata in registri di memoria general purpose. Complessivamente in questo caso il consumo cala a 6,5 µA e la latenza di risveglio è la stessa della modalità light sleep. Infine, la modalità di ibernazione consente il minimo consumo di corrente, pari a 4,5 µA. Calando il consumo, calano anche le opzioni disponibili per avviare scatenare il risveglio. La figura 4 mostra le varie sorgenti di risveglio che vanno analizzate dal progettista per ottimizzare il risparmio di potenza, trovando un compromesso con la latenza e la disponibilità della sorgente.

Figura 4 – Sorgenti di risveglio disponibili nella varie modalità di sleep del chip ESP32

Una descrizione più dettagliata di queste modalità di sleep e di come implementarle è reperibile qui Manuale Tecnico del ESP32.

Scopri il prodotto MAKERFACTORY ESP32 >>