Aller au contenu

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.

Joystick

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.5V et 2800mAh chacune. En mode de veille, le microcontrôleur (avec une tension de 3V) consomme 12μA. Pour faire la mesure et l’envoyer, le microcontrôleur à besoin de 3 secondes pendant lesquelles il consomme 112μA par Mhz et il tourne à 100Mhz. Pendant ces 3 secondes, il faut aussi activer le module LoRa qui consomme 100mA pendant 100mS. 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 2800mAh. Sa consommation moyenne doit donc être au maximum de 2.8[Ah]535624[h] soit environ 63.9μA. En veille, il consomme 12μA, donc la réalisation est possible.

Pendant une période de p secondes, la moyenne de la consommation est de

112[μA]1003[s]+100000[μA]0.1[s]+12[μA](p3)[s]p[s]

Et cette moyenne ne dois pas dépasser 63.9μA. Nous pouvons résoudre l’équation suivante par rapport à p:

33600+100000+12p36p63.9
43536+12p63.9p
p4353651.9839s14min

On prend un peu de marge et on choisit une période d’au moins 15 minutes.