éco-conception logicielle : la dernière frontière
Les microcontrôleurs sont omniprésents dans notre vie de tous les jours. On en trouve dans tous les véhicules – de la voiture au vélo électrique en passant par une rame de métro – ainsi que dans tous les appareils électroniques et les équipements électroménagers.
Grâce à diverses approches (finesse de gravure, mode veille, vitesse d’horloge variable, etc.), les fabricants de ces puces dédiées à un usage spécifique ont fait des progrès considérables en matière de consommation d’énergie.
Il est cependant impossible de réaliser d’importantes économies d’énergie (et donc d’augmenter l’autonomie des équipements mobiles) sans piloter finement ces capacités grâce à un logiciel bien écrit. Dans certains cas, l’autonomie de la batterie peut être divisée par 100 (!) uniquement parce que le micro-code logiciel ne tient pas compte des possibilités au niveau du matériel et / ou qu’il est mal écrit.
L’éco-conception n’est donc pas réservée aux sites web et aux logiciels qui s’exécutent sur un ordinateur ou sur un smartphone. Elle est cruciale pour tous les logiciels embarqués.
Si l’on observe le comportement de microcontrôleurs très courants – détecteur de fumée, télécommande de télévision ou de chaîne hi-fi, détecteur de présence, etc. – la plupart d’entre eux passent entre 90 et 99,9 % de leur temps à attendre qu’un événement se produise.
Grâce aux différents modes d’économie d’énergie (standby, low-power, sleep, etc.) fournis par défaut par le micro-contrôleur, il est possible d’arrêter complètement la puce et de la réveiller en fonction d’évènements particuliers. On obtient ainsi des gains conséquents. En fonctionnement, un microcontrôleur consomment environ 100 à 500 µA par MHz contre moins de 1 µA/MHz au repos.
L’autonomie passe de 30 jours à 7 ans !
Nos confrères de EETimes.com propose un exemple concret qui consiste à allumer une LED périodiquement. Le microcontrôleur utilisé consomme 300 µA/MHz en activité et 0,5 µA/MHz en mode veille. Le dispositif est alimenté par une pile bouton de type CR2032 d’une capacité de 220 mAh. Contrairement au second (projet B), le premier code (projet A) n’est pas optimisé.
Le code du projet A est actif 100 % du temps et n’utilise pas les fonctionnalités avancées du microcontrôleur. L’autonomie du dispositif est donc de 220 mAh / 300 µA, soit 733 heures.
A l’inverse, le projet B utilise toutes les possibilités offertes par le microcontrôleur pour réduire au maximum la consommation électrique. Il suffit de quelques dizaines de lignes de code pour activer le dispositif périodiquement et le passer en veille profonde 99 % du temps. L’autonomie du dispositif est ainsi de 220 mAh / [(300 µA * 1 %) + (0,5 µA * 99 %)], soit 62 947 heures.
Dans cet exemple très simple, quelques dizaines de ligne de code multiplient par 85x l’autonomie du dispositif qui passe de 30 jours à 7 ans. En d’autres termes, l’utilisateur n’aura pas à changer les piles de sa télécommande de télévision ou de son détecteur de fumée. Dans ce dernier cas, on augmente sérieusement la fiabilité du dispositif de sécurité.
Au delà du gain en matière d’autonomie, on économise aussi la fabrication de 84 piles boutons dont plus de 50 % seront jetées sans décontamination et auront donc un impact sanitaire important sur toute la chaîne alimentaire.
Vous trouverez l’intégralité de l’article (anglais) et des exemples de code à cette adresse : http://www.eetimes.com/design/microcontroller-mcu/4373743/Software–the-last-frontier-for-ultra-low-power-microcontroller-performance