• 12 heures
  • Moyenne

Ce cours est visible gratuitement en ligne.

course.header.alt.is_video

course.header.alt.is_certifying

J'ai tout compris !

Mis à jour le 16/05/2019

Abordez les stratégies de gestion de la consommation électrique d'un microcontrôleur

Connectez-vous ou inscrivez-vous gratuitement pour bénéficier de toutes les fonctionnalités de ce cours !

Introduction à la consommation électrique d’un microcontrôleur

Un microcontrôleur est constitué de portes logiques comme des AND, OR, NAND, NOR… Avec ces portes, sont conçues toutes fonctions, comme les mémoires ou les unités arithmétiques et logiques. Une porte logique en technologie CMOS est formée d’un assemblage de transistor dont les grilles sont connectées aux signaux d’entrée.

Porte logique (fonction logique et circuit à transistors)
Porte logique (fonction logique et circuit à transistors).

La porte logique élémentaire est l’inverseur. Celui-ci est formé d’un transistor N-MOSFET et d’un transistor P-MOSFET. N-MOS et P-MOS sont des transistors complémentaires du point de vue logique ; ils constituent la base de la technologie CMOS :

  • le P-MOSFET est conducteur quand sa grille (G) est à un potentiel faible par rapport à la source (S). La source sera connectée à VDD - l’alimentation du circuit ;

  • le N-MOSFET est conducteur quand sa grille est portée à un potentiel élevé par rapport à sa source, qui sera connectée à VSS, c’est-à-dire la masse du circuit.

On en déduit la table logique de la porte logique : c’est bien un inverseur, comme le montre la figure ci-dessous.

Porte logique élémentaire: l'inverseur
Porte logique CMOS élémentaire : l'inverseur.

La grille du MOSFET ressemble à un condensateur : une fois chargé, celui-ci ne doit plus consommer de courant. Il reste néanmoins des courants de fuite (Ig sur la figure ci-dessous). De même, au sein de l’inverseur, les transistors ne peuvent pas conduire en même temps en régime statique. Il existe néanmoins un courant de fuite (Icc sur la figure ci-dessous). Il existe donc une petite puissance dissipée en régime statique, proportionnelle à la tension d’alimentation VDD

Courants et puissances dissipées dans l'inverseur CMOS
Courants et puissances dissipées dans l'inverseur CMOS.

Quand le signal de commande de grille change de valeur, un régime transitoire s’installe dans le circuit inverseur. À un moment donné, les deux transistors conduisent ensemble, et une petite pointe de courant de court-circuit apparaît. Par ailleurs, le caractère capacitif de la grille conduit à des pertes quand la charge du condensateur est éliminée.

Pour couper la consommation, il convient de stopper l’activité. Ceci est obtenu en plaçant une porte d’autorisation de l’horloge entre le signal d’horloge et les entrées d’horloge du circuit, comme l'illustre la figure ci-dessous.
Dans l’exemple du timer vu précédemment, le bit Timer-On bloque l’horloge à l’entrée du circuit. Si Timer-On est à 0, le circuit ne reçoit pas de signal d’horloge et ne consomme donc pas d’énergie.

Exemple de clock-gating
Exemple de clock-gating.

L’alimentation VDD  est également un facteur aggravant de la consommation électrique. Là encore, couper l’alimentation résout le problème. Pour agir de manière dynamique, le circuit est connecté à l’alimentation à travers des transistors, et il suffit de bloquer ces transistors pour mettre le circuit hors tension. Ceci s’appelle du Power Gating

Exemple du principe de Power-gating
Exemple du principe de Power-gating

Le convertisseur analogique-numérique est un bon exemple, puisque le bit AD ON commande un transistor qui ferme le circuit à la masse. Lorsque ce transistor n’est pas commandé, le convertisseur n’est pas alimenté et ne consomme donc pas d’énergie.

Cas du CAN et du power-gating interne
Cas du périphérique CAN avec une fonction power-gating interne.

 
Vous venez de comprendre que la consommation d’énergie électrique peut être modifiée par une action sur l'horloge ou la tension d’alimentation d'un périphérique. En mode tout ou rien, ceci revient à allumer ou éteindre les périphériques inutiles du microcontrôleur à un moment donné. Voyons maintenant une méthode plus subtile. 

Découvrez une stratégie de gestion de la consommation en lien avec le profil de mission du système

Prenons l’exemple d’un dispositif de la société NXP : le i.MX28. Ce circuit peut travailler à différentes fréquences, modifiables à la volée, durant l’exécution du code. Ainsi, un groupe d’instruction OP1 peut être exécuté à 63 MHz, et le dispositif consommera la moitié de l’énergie nécessaire à l’exécution d’un groupe d’instructions OP3 à pleine fréquence.

Circuit i.MX28 et impact du mécanisme de gestion de l'énergie
Circuit i.MX28 et impact du mécanisme de gestion de l'énergie.

En pratique, le DVFS est assez compliqué à mettre en œuvre. Une version allégée du mécanisme consiste à définir 3 points de fonctionnement du microcontrôleur. Le code permettra de sélectionner à la volée un de ces 3 points : c’est le mécanisme de Hopping :

Illustration des mécanismes de gestion de l'énergie électrique consommée
Illustration des mécanismes de gestion de l'énergie électrique consommée.
  • un point correspond au mode de standby : le microcontrôleur est quasi endormi, avec quelques périphériques qui travaillent au ralenti, de manière à réagir vite au moment où il faudra sortir le composant de sa torpeur.

Dans la fiche constructeur du PIC24FV32KA304, vous remarquerez qu’il y a plusieurs modes de « standby ». En fait, ce microcontrôleur est destiné aux applications sporadiques, c’est-à-dire où le microcontrôleur surveille son environnement et calcule peu et peu souvent.
L’instruction  PWRSAV  , Power Save Mode, spécifie le mode de travail du dispositif :

;Instruction PWRSAV
PWRSAV #SLEEP_MODE ; Put the device into SLEEP mode
PWRSAV #IDLE_MODE ; Put the device into IDLE mode
BSET DSCON, #DSEN ; Enable Deep Sleep
PWRSAV #SLEEP_MODE ; Put the device into Deep SLEEP mode
  • un autre point de fonctionnement correspondra à une capacité de calcul faible mais significative. Ce mode nécessite une tension d’alimentation dite faible, par exemple 1,2 V pour un composant normalement alimenté sous 3,3 V.

Dans notre exemple, le PIC24FV32KA304 travaillera dans le mode dit Doze, à 32 kHz et consommera seulement 8 µA sous 1,8 V. Ceci n’épuisera pas la pile qui alimentera le dispositif.

Illustration d'un point de fonctionnement à consommation électrique réduite
Illustration d'un point de fonctionnement à consommation électrique réduite.

Sous 3,3 V, c’est-à-dire la tension maximale d’alimentation, le dispositif travaillera à fréquence maximale et fournira sa capacité maximale de calcul. Cette capacité de calcul se paie par une consommation accrue.

Condition de fonctionnement normal, à consommation électrique maximale
Condition de fonctionnement normal, à consommation électrique maximale.

 Entrons dans quelques détails, si vous le voulez bien >_<.

Le mécanisme de Hopping diminue l’énergie consommée, mais il ralentit aussi fortement le microcontrôleur. Considérons la répartition suivante de la charge de calcul du microcontrôleur dans le temps, s’il travaille à un point de fonctionnement unique, au maximum de ses capacités. Les plages où le microcontrôleur dort peuvent être mises à profit pour étaler le calcul et abaisser globalement la consommation. La capacité de calcul doit être adaptée en fonction du temps disponible, d’où la nécessité de disposer de plusieurs modes de travail.

Etalement des calcules au profit de la moindre consommation électrique
Étalement des calculs au profit de la moindre consommation électrique.

Il ne faut pas perdre de vue que cet avantage se paie par une complexité du système sur 3 points :

  • plusieurs tensions d’alimentation doivent être générées, voire rendues variables dans le temps ;

  • ensuite, il faut gérer des instructions spécifiques dans le code embarqué ;

  • enfin, un organe - un contrôleur - doit superviser les changements de mode, sinon l’anarchie ou une perte de qualité de service peuvent s’installer.

Dans le prochain cours nous aborderons la problématique de réveil d’un microcontrôleur.

Examinez des approches de réveil récurrent de microcontrôleur

Beaucoup d’applications sont associées à des actions sporadiques, c’est-à-dire qu’elles apparaissent un peu aléatoirement dans le temps et prennent un temps variable à leur exécution. Le microcontrôleur va s'endormir pendant les phases d’inactivité pour réduire la consommation électrique et travailler à pleine capacité quand c’est nécessaire.

Une manière simple est de réveiller régulièrement le microcontrôleur afin qu’il vérifie si des actions doivent être menées ou pas, et se rendormir après.

Réveil récurrent du microcontrôleur vis-à-vis d'activités sporadiques
Réveil récurrent du microcontrôleur vis-à-vis d'activités sporadiques.

Un principe simple, pour créer une temporisation externe pendant que le microcontrôleur est endormi, repose sur la charge d’un condensateur externe, puis la décharge lente du condensateur. Seul le port A comme analogique permet cette opération dans un dispositif PIC. La famille des PIC16F88X embarque un périphérique dédié à cette opération, l’Ultra Low Power Wake Up Module. Dans le mode SLEEP, avec ce module en fonctionnement, la consommation est inférieure à 100 nA.

Principe du module ULWP
Principe du module ULWP.

Le principe de mise en œuvre est assez simple :p :

BANKSEL ANSEL
BCF ANSEL, 0
BANKSEL TRISA
BCF TRISA, 0
BANKSEL PORTA
BSF PORTA, 0
CALL CapChargeDelay
BANKSEL PIR2
BCF PIR2, ULPWUIF
BANKSEL PCON
BSF PCON, ULPWUE
BSF TRISA, 0
BSF PIE2, ULPWUIE
MOVLW B’11000000
MOVWF INTCON
SLEEP
  • le bit 0 du port A est préalablement configuré en sortie digitale ;

  • le bit 0 est mis au 1 logique pour charger le condensateur ;

  • une tempo laisse le condensateur se charger ;

  • le bit d’interruption du bloc Ultra Low Power Wake Up, ou ULPWU, est mis à zéro avant d’allumer ce bloc ;

  • le bit RA0 est configuré maintenant en entrée et la décharge du condensateur commence ;

  • le bloc Ultra Low Power Wake Up est autorisé en source d’interruption ;

  • le mécanisme d’interruption est ensuite validé, et le microcontrôleur est mis en mode sommeil, ou sleep. Il ne sortira que sur une interruption du bloc ULPWU.

 Une autre ressource matérielle intéressante du microcontrôleur est le chien de garde. Il est activé par la configuration du microcontrôleur, WDTE.
Si l’exécution d’un code dérape, le mécanisme du chien de garde fera un RESET du dispositif, si le code n’a pas arrêté le mécanisme à temps dans le cadre d’un fonctionnement normal.

Module watchdog et WDTE
Module watchdog et WDTE.

Le watchdog repose sur un timer avec une horloge qui peut devenir très lente. Le signal d’horloge de départ, au-delà des prescalers, est un oscillateur RC embarqué dans le microcontrôleur, d’une période de 17 ms environ.
Lorsque le timer du watchdog déborde, celui-ci va agir en fonction de la situation. Notamment si le microcontrôleur est en mode SLEEP, le watchdog le réveille simplement et le code reprend juste après l’instruction SLEEP, car le Program Counter n’a pas été modifié.

Vous voici à la fin du cours de découverte du microcontrôleur, qui est, rappelons-le, le chef d’orchestre des systèmes embarqués que nous avons considérés dans le cours.

Exemple de certificat de réussite
Exemple de certificat de réussite