- Tecniche di risparmio energetico per microcontrollori
- 1. Modalità di sospensione
- 2. Modifica dinamica della frequenza del processore
- 3. Struttura del firmware del gestore di interrupt
- 4. Firmware ottimizzato per l'alimentazione
- Conclusione
Proprio come il gas (benzina / diesel) è importante per gli spostamenti di biciclette, camion e auto (sì, Tesla esclusa!), Così è l'energia elettrica per la maggior parte delle applicazioni elettroniche e ancor di più, per le applicazioni basate su sistemi embedded che di solito sono batterie (energia limitata) alimentati, dai normali telefoni cellulari ai dispositivi domestici intelligenti, tra gli altri.
La natura limitata della potenza della batteria implica la necessità di garantire che il tasso di consumo energetico di questi dispositivi sia ragionevole per incoraggiarne l'adozione e l'uso. Soprattutto con i dispositivi basati su IoT in cui ci si può aspettare che un dispositivo duri fino a 8-10 anni con una singola carica senza sostituzione della batteria.
Queste tendenze hanno reso l' implementazione di considerazioni di bassa potenza nella progettazione di sistemi embedded e nel corso degli anni, progettisti, ingegneri e produttori hanno sviluppato diversi modi intelligenti per gestire efficacemente l'energia consumata dai prodotti, per garantire che durino più a lungo carica singola. Molte di queste tecniche si concentrano sul microcontrollore, che è il cuore della maggior parte dei dispositivi. Nell'articolo di oggi, esploreremo alcune di queste tecniche e come possono essere utilizzate per ridurre al minimo il consumo di energia nei microcontrollori. Anche se un microprocessore consuma meno energia ma può essere utilizzato ovunque sul microcontrollore, segui il link per scoprire come il microprocessore è diverso dal microcontrollore.
Tecniche di risparmio energetico per microcontrollori
1. Modalità di sospensione
Le modalità di sospensione (generalmente denominate modalità a basso consumo) sono probabilmente la tecnica più popolare per ridurre il consumo di energia nei microcontrollori. Generalmente comportano la disabilitazione di determinati circuiti o clock che pilotano determinate periferiche dei microcontrollori.
A seconda dell'architettura e del produttore, i microcontrollori di solito hanno diversi tipi di modalità di sospensione, con ciascuna modalità che possiede la capacità di disabilitare più circuiti interni o periferiche rispetto alle altre. Le modalità di sonno di solito vanno da sonno profondo o spento, a inattivo e assopito.
Alcune delle modalità disponibili sono spiegate di seguito. Va notato che le caratteristiche e il nome di queste modalità possono variare da produttore a produttore.
io. Modalità inattiva / sospensione
Questa è solitamente la più semplice delle modalità a basso consumo che i progettisti possono implementare. Questa modalità consente al microcontrollore di tornare alla piena operatività a una velocità molto elevata. Non è quindi la modalità migliore, se il ciclo di accensione del dispositivo, richiede di lasciare la modalità sleep molto spesso, poiché viene prelevata una grande quantità di energia, quando il microcontrollore esce dalla modalità sleep. Il ritorno alla modalità attiva dalla modalità standby è generalmente basato su interruzioni. Questa modalità viene implementata sul microcontrollore disattivando l'albero del clock che guida i circuiti della CPU mentre il clock primario ad alta frequenza dell'MCU viene mantenuto in esecuzione. Con questo, la CPU è in grado di riprendere le operazioni immediatamente che viene attivato il trigger di sveglia. Il clock gating è stato ampiamente impiegato per tagliare i segnali in modalità a basso consumo per i microcontrollori e questa modalità collega efficacemente i segnali di clock attraverso la CPU.
ii. Modalità standby
La modalità Standby è un'altra modalità a basso consumo, facile da implementare per i progettisti. È molto simile alla modalità idle / sleep poiché implica anche l'uso del clock gating sulla CPU, ma una delle principali differenze è che consente la modifica del contenuto della ram, cosa che di solito non è il caso della modalità idle / sleep. In modalità Standby, le periferiche ad alta velocità come DMA (accesso diretto alla memoria), porte seriali, ADC e periferiche AES vengono mantenute in esecuzione per garantire che siano disponibili immediatamente dopo che la CPU è attiva. Per alcuni MCU, anche la RAM è mantenuta attiva ed è accessibile dal DMA consentendo l'archiviazione e la ricezione dei dati senza l'intervento della CPU. La potenza assorbita in questa modalità può essere fino a 50uA / MHZ per microcontrollori a bassa potenza.
iii. Modalità Deep Sleep
La modalità Deep sleep, generalmente comporta la disabilitazione di clock ad alta frequenza e altri circuiti all'interno del microcontrollore lasciando solo i circuiti di clock utilizzati per pilotare elementi critici come il timer watchdog, il rilevamento del brown out e il circuito di reset dell'accensione. Altri MCU possono aggiungere altri elementi per migliorare l'efficienza complessiva. Il consumo energetico in questa modalità può essere fino a 1uA a seconda del particolare MCU.
iv. Modalità Stop / OFF
Alcuni microcontrollori hanno diverse varianti di questa modalità aggiuntiva. In questa modalità, sia gli oscillatori alti che quelli bassi sono normalmente disabilitati lasciando attivi solo alcuni registri di configurazione e altri elementi critici.
Le caratteristiche di tutte le modalità di sospensione sopra menzionate differiscono da MCU a MCU, ma la regola generale è; più profondo è il sonno, maggiore è il numero di periferiche disabilitate durante il sonno e minore è la quantità di energia consumata, anche se questo di solito significa anche; maggiore è la quantità di energia consumata per ripristinare il sistema. Spetta quindi al progettista prendere in considerazione questa variazione e scegliere la MCU giusta per l'attività senza scendere a compromessi che influiscono sulle specifiche del sistema.
2. Modifica dinamica della frequenza del processore
Questa è un'altra tecnica ampiamente diffusa per ridurre in modo efficiente la quantità di energia consumata da un microcontrollore. È di gran lunga la tecnica più antica e un po 'più complicata delle modalità sleep. Coinvolge il firmware che pilota dinamicamente il clock del processore, alternando tra alta e bassa frequenza poiché la relazione tra la frequenza del processore e la quantità di energia consumata è lineare (come mostrato di seguito).
L'implementazione di questa tecnica di solito segue questo schema; quando il sistema è in uno stato inattivo, il firmware imposta la frequenza di clock su una velocità bassa consentendo al dispositivo di risparmiare energia e quando il sistema deve eseguire calcoli pesanti, la velocità di clock viene ripristinata.
Esistono scenari controproducenti per modificare la frequenza del processore che di solito è il risultato di un firmware mal sviluppato. Tali scenari si verificano quando la frequenza di clock è mantenuta bassa mentre il sistema esegue calcoli pesanti. Una bassa frequenza in questo scenario significa che il sistema impiegherà più tempo del necessario per eseguire l'attività impostata e quindi consumerà in modo cumulativo la stessa quantità di energia che i progettisti stavano cercando di risparmiare. Pertanto, è necessario prestare particolare attenzione quando si implementa questa tecnica in applicazioni con tempi critici.
3. Struttura del firmware del gestore di interrupt
Questa è una delle tecniche più estreme di gestione dell'alimentazione nei microcontrollori. È reso possibile da pochi microcontrollori come i core ARM cortex-M che hanno un bit sleep-on-exit nel registro SCR. Questo bit fornisce al microcontrollore la capacità di dormire dopo aver eseguito una routine di interrupt. Sebbene vi sia un limite al numero di applicazioni che funzioneranno senza problemi in questo modo, questa potrebbe essere una tecnica molto utile per i sensori di campo e altre applicazioni basate sulla raccolta di dati a lungo termine.
La maggior parte delle altre tecniche a mio parere sono variazioni di quelle già menzionate sopra. Ad esempio, la tecnica di clock periferico selettivo è essenzialmente una variazione delle modalità sleep in cui il progettista seleziona le periferiche da accendere o spegnere. Questa tecnica richiede una profonda conoscenza del microcontrollore di destinazione e potrebbe non essere molto adatta ai principianti.
4. Firmware ottimizzato per l'alimentazione
Uno dei modi migliori per ridurre la quantità di energia consumata da un microcontrollore è scrivere un firmware efficiente e ben ottimizzato. Ciò influenza direttamente la quantità di lavoro svolto dalla CPU nel tempo e questo, per estensione, contribuisce alla quantità di energia consumata dal microcontrollore. Durante la scrittura del firmware è necessario fare degli sforzi per garantire ridotte dimensioni del codice e cicli poiché ogni istruzione non necessaria eseguita è una parte dell'energia immagazzinata nella batteria che viene sprecata. Di seguito sono riportati alcuni suggerimenti comuni basati su C per lo sviluppo del firmware ottimizzato;
- Utilizzare la classe "Static Const" il più possibile per impedire la copia in runtime di array, strutture, ecc. Che consumano energia.
- Usa i puntatori. Sono probabilmente la parte del linguaggio C più difficile da capire per i principianti, ma sono i migliori per accedere in modo efficiente a strutture e sindacati.
- Evita Modulo!
- Variabili locali su variabili globali ove possibile. Le variabili locali sono contenute nella CPU mentre le variabili globali sono memorizzate nella RAM, la CPU accede alle variabili locali più velocemente.
- I tipi di dati non firmati sono i tuoi migliori amici, ove possibile.
- Adottare il "conto alla rovescia" per i loop ove possibile.
- Invece di campi di bit per interi senza segno, utilizzare maschere di bit.
Gli approcci per ridurre la quantità di energia consumata da un microcontrollore non sono limitati agli approcci basati su software sopra menzionati, esistono approcci basati su hardware come la tecnica di controllo della tensione di base, ma per mantenere la lunghezza di questo post entro un intervallo ragionevole, risparmieremo loro per un altro giorno.
Conclusione
L'implementazione di prodotti a bassa potenza parte dalla scelta del microcontrollore e può creare confusione quando si cerca di esaminare le diverse opzioni disponibili sul mercato. Durante la scansione, la scheda tecnica può funzionare bene per ottenere le prestazioni generali degli MCU, ma per applicazioni critiche per l'alimentazione può essere un approccio molto costoso. Per comprendere le reali caratteristiche di alimentazione di un microcontrollore, gli sviluppatori devono tenere conto delle specifiche elettriche e delle funzionalità a bassa potenza disponibili per il microcontrollore. I progettisti non dovrebbero solo essere preoccupati per il consumo di corrente da ciascuna delle modalità di alimentazione pubblicizzate dalla scheda tecnica dell'MCU, ma dovrebbero esaminare il tempo di sveglia, le fonti di sveglia e le periferiche disponibili per l'uso durante le modalità a basso consumo.
È importante verificare le caratteristiche del microcontrollore che si intende utilizzare per accertare le opzioni disponibili per l'implementazione a bassa potenza. I microcontrollori sono stati uno dei maggiori beneficiari del progresso tecnologico e ora ci sono diversi microcontrollori a bassissima potenza che ti assicurano di avere risorse per aiutarti a rimanere entro il tuo budget energetico. Alcuni di essi forniscono anche diversi strumenti software di analisi della potenza che è possibile sfruttare per una progettazione efficace. Uno dei preferiti è la linea di microcontrollori MSP430 di Texas Instrument.