- Techniques d'économie d'énergie pour les microcontrôleurs
- 1. Modes de veille
- 2. Modification dynamique de la fréquence du processeur
- 3. Structure du micrologiciel du gestionnaire d'interruption
- 4. Micrologiciel optimisé en puissance
- Conclusion
Tout comme le gaz (essence / diesel) est important pour le déplacement des vélos, des camions et des voitures (ouais, à l'exception de Teslas!), L'énergie électrique l'est aussi pour la plupart des applications électroniques et plus encore, pour les applications basées sur des systèmes embarqués qui sont généralement des batteries (énergie limitée), des téléphones mobiles ordinaires aux appareils intelligents pour la maison, entre autres.
La nature limitée de la puissance de la batterie implique la nécessité de garantir que le taux de consommation d'énergie de ces appareils doit être raisonnable pour encourager leur adoption et leur utilisation. Surtout avec les appareils basés sur l'IoT où un appareil peut durer jusqu'à 8 à 10 ans avec une seule charge sans remplacement de la batterie.
Ces tendances ont conduit à la mise en œuvre de considérations de faible puissance dans la conception de systèmes embarqués et au fil des ans, les concepteurs, ingénieurs et fabricants ont développé à plusieurs reprises plusieurs moyens intelligents de gérer efficacement la puissance consommée par les produits, pour s'assurer qu'ils durent plus longtemps sur un charge unique. Beaucoup de ces techniques se concentrent sur le microcontrôleur, qui est le cœur de la plupart des appareils. Dans l'article d'aujourd'hui, nous explorerons certaines de ces techniques et la manière dont elles peuvent être utilisées pour minimiser la consommation d'énergie des microcontrôleurs. Bien qu'un microprocesseur consomme moins d'énergie, mais il peut être utilisé partout sur un microcontrôleur, suivez le lien pour savoir en quoi le microprocesseur est différent du microcontrôleur.
Techniques d'économie d'énergie pour les microcontrôleurs
1. Modes de veille
Les modes de veille (généralement appelés modes de faible puissance) sont sans doute la technique la plus populaire pour réduire la consommation d'énergie des microcontrôleurs. Ils impliquent généralement la désactivation de certains circuits ou horloges qui pilotent certains périphériques des microcontrôleurs.
Selon l'architecture et le fabricant, les microcontrôleurs ont généralement différents types de modes de veille, chaque mode possédant la capacité de désactiver plus de circuits internes ou de périphériques par rapport à l'autre. Les modes de veille vont généralement du sommeil profond ou désactivé, aux modes veille et somnolence.
Certains des modes disponibles sont expliqués ci-dessous. Il est à noter que les caractéristiques ainsi que le nom de ces modes peuvent varier d'un fabricant à l'autre.
je. Mode veille / veille
Il s'agit généralement du plus simple des modes de faible consommation à mettre en œuvre par les concepteurs. Ce mode permet au microcontrôleur de revenir à un fonctionnement complet à une vitesse très rapide. Ce n'est donc pas le meilleur mode, si le cycle d'alimentation de l'appareil, l'oblige à quitter très souvent le mode veille, car une grande quantité d'énergie est consommée, lorsque le microcontrôleur sort du mode veille. Le retour en mode actif à partir du mode veille est généralement basé sur une interruption. Ce mode est mis en œuvre sur le microcontrôleur en désactivant l'arborescence d'horloge qui pilote les circuits du processeur pendant que l'horloge haute fréquence principale du MCU continue de fonctionner. Avec cela, le CPU est en mesure de reprendre les opérations dès que le déclencheur de réveil est activé. Le déclenchement d'horloge a été largement utilisé pour couper les signaux dans les modes de faible puissance pour les microcontrôleurs et ce mode porte efficacement les signaux d'horloge à travers l'unité centrale.
ii. Mode veille
Le mode veille est un autre mode basse consommation, facile à mettre en œuvre pour les concepteurs. Il est très similaire au mode veille / veille car il implique également l'utilisation de la synchronisation d'horloge à travers le processeur, mais une différence majeure est qu'il permet de modifier le contenu de la RAM, ce qui n'est généralement pas le cas avec le mode veille / veille. En mode veille, les périphériques haute vitesse tels que le DMA (accès direct à la mémoire), les ports série, les périphériques ADC et AES continuent de fonctionner pour garantir qu'ils sont disponibles immédiatement après que le processeur est réveillé. Pour certains MCU, la RAM est également maintenue active et peut être accédée par le DMA permettant aux données d'être stockées et reçues sans intervention du CPU. La puissance consommée dans ce mode peut être aussi basse que 50uA / MHZ pour les microcontrôleurs de faible puissance.
iii. Mode veille profonde
Le mode de veille profonde implique généralement la désactivation des horloges haute fréquence et d'autres circuits dans le microcontrôleur en ne laissant que les circuits d'horloge utilisés pour piloter des éléments critiques tels que la minuterie de surveillance, la détection de brunissement et les circuits de réinitialisation sous tension. D'autres MCU peuvent y ajouter d'autres éléments pour améliorer l'efficacité globale. La consommation d'énergie dans ce mode peut être aussi faible que 1 uA selon le MCU particulier.
iv. Mode arrêt / arrêt
Certains microcontrôleurs ont différentes variantes de ce mode supplémentaire. Dans ce mode, les oscillateurs haut et bas sont généralement désactivés, laissant uniquement certains registres de configuration et autres éléments critiques activés.
Les caractéristiques de tous les modes de veille mentionnés ci-dessus diffèrent d'un MCU à l'autre, mais la règle générale est: plus le sommeil est profond, plus le nombre de périphériques désactivés pendant le sommeil est élevé et plus la quantité d'énergie consommée est faible, bien que cela signifie généralement également; plus la quantité d'énergie consommée pour remettre le système en marche est élevée. Il appartient donc au concepteur de considérer cette variation et de choisir le bon MCU pour la tâche sans faire de compromis qui affectent la spécification du système.
2. Modification dynamique de la fréquence du processeur
Il s'agit d'une autre technique largement répandue pour réduire efficacement la quantité d'énergie consommée par un microcontrôleur. C'est de loin la technique la plus ancienne et un peu plus compliquée que les modes veille. Cela implique que le micrologiciel pilote dynamiquement l'horloge du processeur, en alternant entre haute et basse fréquence, car la relation entre la fréquence du processeur et la quantité d'énergie consommée est linéaire (comme indiqué ci-dessous).
La mise en œuvre de cette technique suit généralement ce modèle; lorsque le système est dans un état inactif, le micrologiciel règle la fréquence d'horloge sur une faible vitesse permettant à l'appareil d'économiser de l'énergie et lorsque le système a besoin de faire des calculs lourds, la vitesse d'horloge est rétablie.
Il existe des scénarios contre-productifs pour modifier la fréquence du processeur, qui est généralement le résultat d'un micrologiciel mal développé. De tels scénarios surviennent lorsque la fréquence d'horloge est maintenue à un niveau bas pendant que le système effectue des calculs lourds. Une fréquence basse dans ce scénario signifie que le système prendra plus de temps que nécessaire pour effectuer la tâche définie et consommera ainsi de manière cumulative la même quantité d'énergie que les concepteurs essayaient d'économiser. Ainsi, des précautions supplémentaires doivent être prises lors de la mise en œuvre de cette technique dans des applications à temps critique.
3. Structure du micrologiciel du gestionnaire d'interruption
C'est l'une des techniques les plus extrêmes de gestion de l'alimentation dans les microcontrôleurs. Il est rendu possible par quelques microcontrôleurs comme les cœurs ARM cortex-M qui ont un bit de veille à la sortie dans le registre SCR. Ce bit permet au microcontrôleur de s'endormir après avoir exécuté une routine d'interruption. Bien qu'il y ait une limite au nombre d'applications qui fonctionneront correctement de cette manière, cela pourrait être une technique très utile pour les capteurs de terrain et d'autres applications basées sur la collecte de données à long terme.
La plupart des autres techniques, à mon avis, sont des variantes de celles déjà mentionnées ci-dessus. Par exemple, la technique de synchronisation sélective des périphériques est essentiellement une variante des modes de veille dans lesquels le concepteur sélectionne les périphériques à activer ou désactiver. Cette technique nécessite une connaissance approfondie du microcontrôleur cible et peut ne pas être très conviviale pour les débutants.
4. Micrologiciel optimisé en puissance
L'un des meilleurs moyens de réduire la quantité d'énergie consommée par un microcontrôleur est d'écrire un firmware efficace et bien optimisé. Cela affecte directement la quantité de travail effectuée par le CPU par heure et ce, par extension, contribue à la quantité d'énergie consommée par le microcontrôleur. Des efforts doivent être faits lors de l'écriture du micrologiciel pour garantir une taille de code et des cycles réduits, car chaque instruction inutile exécutée constitue une partie de l'énergie stockée dans la batterie gaspillée. Vous trouverez ci-dessous quelques conseils courants basés sur C pour optimiser le développement de micrologiciels;
- Utilisez autant que possible la classe «Static Const» pour empêcher la copie d'exécution de tableaux, de structures, etc. qui consomme de l'énergie.
- Utilisez des pointeurs. Ils sont probablement la partie la plus difficile du langage C à comprendre pour les débutants, mais ils sont les meilleurs pour accéder efficacement aux structures et aux syndicats.
- Évitez Modulo!
- Variables locales sur les variables globales lorsque cela est possible. Les variables locales sont contenues dans la CPU tandis que les variables globales sont stockées dans la RAM, la CPU accède plus rapidement aux variables locales.
- Les types de données non signés sont votre meilleur ami dans la mesure du possible.
- Adoptez le «compte à rebours» pour les boucles lorsque cela est possible.
- Au lieu de champs de bits pour les entiers non signés, utilisez des masques de bits.
Les approches pour réduire la quantité d'énergie consommée par un microcontrôleur ne se limitent pas aux approches logicielles mentionnées ci-dessus, des approches basées sur le matériel comme la technique de contrôle de tension de base, existent, mais pour maintenir la longueur de ce poste dans une plage raisonnable, nous économiserons eux pour un autre jour.
Conclusion
La mise en œuvre d'un produit basse consommation commence par le choix du microcontrôleur et cela peut être assez déroutant lorsque vous essayez de passer en revue les diverses options disponibles sur le marché. Lors de la numérisation, la fiche technique peut bien fonctionner pour obtenir les performances générales des microcontrôleurs, mais pour les applications à alimentation critique, cela peut être une approche très coûteuse. Pour comprendre les véritables caractéristiques de puissance d'un microcontrôleur, les développeurs doivent prendre en compte les spécifications électriques et les fonctionnalités de faible puissance disponibles pour le microcontrôleur. Les concepteurs ne doivent pas seulement se soucier de la consommation de courant de chacun des modes d'alimentation annoncés par la fiche technique du MCU, ils doivent également se pencher sur l'heure de réveil, les sources de réveil et les périphériques. disponibles pour une utilisation dans les modes de faible puissance.
Il est important de vérifier les fonctionnalités du microcontrôleur que vous prévoyez d'utiliser pour déterminer les options dont vous disposez pour une mise en œuvre à faible consommation d'énergie. Les microcontrôleurs ont été l'un des plus grands bénéficiaires des progrès technologiques et il existe désormais plusieurs microcontrôleurs à très faible consommation d'énergie qui vous garantissent des ressources pour vous aider à respecter votre budget énergétique. Un certain nombre d'entre eux fournissent également plusieurs outils logiciels d'analyse de puissance dont vous pouvez profiter pour une conception efficace. Un favori personnel est la gamme de microcontrôleurs MSP430 de Texas Instrument.