Sleep mode
Les systèmes embarqués qui fonctionnent avec des piles ou des batteries doivent être particulièrement attentifs à ne pas gaspiller l’énergie dont ils disposent. Et de manière générale, dans le contexte de développement durable, c’est très intéressant de réduire la consommation des systèmes là où c’est possible.
Les microcontrôleurs modernes disposent de plusieurs modes de veille, (low power modes) dans lesquelles ils consomment très peu d’énergie. Le STM32F412 propose 3 modes de veille :
- Sleep mode : Dans ce mode, seul le CPU est arrêté. Tous les périphériques continuent à fonctionner
et peuvent réveiller l’unité centrale lorsqu’une interruption ou un événement survient. Quelques exemples
d’événements qui peuvent réveiller le CPU:
- la pression d’un bouton;
- l’alarme d’un timer;
- l’arrivée d’un caractère sur un UART.
- Stop mode : Ce mode permet d’obtenir la plus faible consommation possible tout en conservant le contenu de la SRAM et des registres. Le CPU peut être réveillé par n’importe quelle ligne EXTI (une des 16 lignes externes, ou le timer RTC).
- Standby mode : Ce mode est utilisé pour obtenir la plus faible consommation d’énergie possible.
Dans ce mode, la SRAM et le contenu des registres sont perdus! On peut réveiller le microcontrôleur avec le bouton RESET,
un flanc montant sur une broche donnée (celle connectée au bouton central du joystick) ou par le timer RTC.
Mbed OS offre plusieurs méthodes pour forcer le processeur à se mettre en veille. Étudiez la documentation pour plus de détails.
Mais avec Mbed OS, vous n’avez même pas besoin de faire des efforts particuliers pour mettre le processeur en veille. Quand vous
appelez ThisThread::sleep_for();
ou que vous utilisez un Ticker
, Mbed OS fait automatiquement le nécessaire pour économiser
l’énergie en utilisant les modes de veille. Et si vous souhaitez aller plus loin, Mbed OS propose des classes
telles que LowPowerTicker qui sont
moins performantes que les simples Tickers
, mais qui sont spécialement optimisées pour économiser l’énergie.
Lisez la page Power optimization pour plus de détails sur la gestion de la consommation d’énergie. Les fonctions de statistiques de Mbed OS vous permettent de mesurer le temps que le processeur passe en veille.
Exercice
Exercice Sleep mode/1
Nous souhaitons alimenter une station météo construite avec un microcontrôleur STM32F412 avec deux piles en série de type AA de \(1.5\,V\) et \(2800\,mAh\) chacune. En mode de veille, le microcontrôleur (avec une tension de \(3V\)) consomme \(12\,\mu{}A\). Pour faire la mesure et l’envoyer, le microcontrôleur à besoin de \(3\) secondes pendant lesquelles il consomme \(112\,\mu{}A\) par \(Mhz\) et il tourne à \(100\,Mhz\). Pendant ces 3 secondes, il faut aussi activer le module LoRa qui consomme \(100\,mA\) pendant \(100\, mS\). En travail, le circuit est aussi alimenté en \(3V\).
Avec quelle période pouvons nous faire des mesures pour que le système puisse fonctionner pendant \(5\) ans avec les mêmes piles ?
Solution
Le système doit fonctionner pendant 5 ans avec \(2800\,mAh\). Sa consommation moyenne doit donc être au maximum de \(\frac{2.8 [Ah]}{5 \cdot 356 \cdot 24 [h]}\) soit environ \(63.9\,\mu{}A\). En veille, il consomme \(12\,\mu{}A\), donc la réalisation est possible.
Pendant une période de \(p\) secondes, la moyenne de la consommation est de
Et cette moyenne ne dois pas dépasser \(63.9\,\mu{}A\). Nous pouvons résoudre l’équation suivante par rapport à \(p\):
On prend un peu de marge et on choisit une période d’au moins 15 minutes.