- Energiespartechniken für Mikrocontroller
- 1. Schlafmodi
- 2. Dynamische Änderung der Prozessorfrequenz
- 3. Interrupt-Handler-Firmware-Struktur
- 4. Leistungsoptimierte Firmware
- Fazit
So wie Gas (Benzin / Diesel) für Fahrräder, Lastwagen und Autos (ja, außer Teslas!) Wichtig ist, um sich zu bewegen, so ist auch die elektrische Energie für die meisten elektronischen Anwendungen und insbesondere für eingebettete systembasierte Anwendungen, die normalerweise batteriebetrieben sind (begrenzte Energie), unter anderem von normalen Mobiltelefonen bis hin zu Smart-Home-Geräten.
Die begrenzte Natur der Batterieleistung impliziert die Notwendigkeit, sicherzustellen, dass die Stromverbrauchsrate dieser Geräte angemessen ist, um ihre Einführung und Verwendung zu fördern. Insbesondere bei IoT-basierten Geräten, bei denen ein Gerät mit einer einzigen Ladung ohne Batteriewechsel eine Lebensdauer von 8 bis 10 Jahren haben kann.
Diese Trends haben dazu geführt, dass beim Entwurf eingebetteter Systeme Überlegungen zu geringem Stromverbrauch berücksichtigt wurden. Im Laufe der Jahre haben Designer, Ingenieure und Hersteller an mehreren Stellen verschiedene intelligente Methoden entwickelt, um den von Produkten verbrauchten Strom effektiv zu verwalten und sicherzustellen, dass sie länger halten einmalige Ladung. Viele dieser Techniken konzentrieren sich auf den Mikrocontroller, der das Herzstück der meisten Geräte darstellt. In dem heutigen Artikel werden wir einige dieser Techniken untersuchen und wie sie verwendet werden können, um den Stromverbrauch in Mikrocontrollern zu minimieren. Obwohl ein Mikroprozessor weniger Strom verbraucht, aber überall auf dem Mikrocontroller eingesetzt werden kann, folgen Sie dem Link, um zu erfahren, wie sich der Mikroprozessor vom Mikrocontroller unterscheidet.
Energiespartechniken für Mikrocontroller
1. Schlafmodi
Die Schlafmodi (allgemein als Energiesparmodi bezeichnet) sind wohl die beliebteste Technik zur Reduzierung des Stromverbrauchs in Mikrocontrollern. Sie umfassen im Allgemeinen das Deaktivieren bestimmter Schaltkreise oder Uhren, die bestimmte Peripheriegeräte der Mikrocontroller ansteuern.
Je nach Architektur und Hersteller haben Mikrocontroller normalerweise unterschiedliche Arten von Schlafmodi, wobei jeder Modus die Fähigkeit besitzt, mehr interne Schaltkreise oder Peripheriegeräte im Vergleich zu den anderen zu deaktivieren. Die Schlafmodi reichen normalerweise von Tiefschlaf oder Aus, bis zu Leerlauf- und Dösen-Modi.
Einige der verfügbaren Modi werden unten erläutert. Es ist zu beachten, dass die Eigenschaften sowie der Name dieser Modi von Hersteller zu Hersteller variieren können.
ich. Leerlauf- / Schlafmodus
Dies ist normalerweise der einfachste Modus mit geringem Stromverbrauch, den Entwickler implementieren können. In diesem Modus kann der Mikrocontroller sehr schnell zum vollen Betrieb zurückkehren. Es ist daher nicht der beste Modus, wenn das Aus- und Wiedereinschalten des Geräts erfordert, dass es den Ruhemodus sehr oft verlässt, da eine große Menge an Strom verbraucht wird, wenn der Mikrocontroller den Ruhemodus verlässt. Die Rückkehr in den aktiven Modus aus dem Standby-Modus basiert normalerweise auf Interrupts. Dieser Modus wird auf dem Mikrocontroller implementiert, indem der Taktbaum ausgeschaltet wird, der die CPU-Schaltung antreibt, während der primäre Hochfrequenztakt der MCU weiterläuft. Damit kann die CPU den Betrieb wieder aufnehmen, sobald der Wecktrigger aktiviert ist. Clock Gating wurde ausgiebig eingesetzt, um Signale in Niedrigleistungsmodi für Mikrocontroller abzuschalten, und dieser Modus steuert Taktsignale effektiv über die CPU.
ii. Standby Modus
Der Standby-Modus ist ein weiterer Energiesparmodus, der für Entwickler einfach zu implementieren ist. Es ist dem Leerlauf- / Ruhemodus sehr ähnlich, da es auch die Verwendung von Clock-Gating für die CPU beinhaltet. Ein Hauptunterschied besteht jedoch darin, dass der Inhalt des RAM geändert werden kann, was im Leerlauf- / Schlafmodus normalerweise nicht der Fall ist. Im Standby-Modus werden Hochgeschwindigkeits-Peripheriegeräte wie DMA (direkter Speicherzugriff), serielle Ports, ADC- und AES-Peripheriegeräte weiter ausgeführt, um sicherzustellen, dass sie unmittelbar nach dem Aktivieren der CPU verfügbar sind. Bei bestimmten MCUs bleibt der RAM ebenfalls aktiv und kann vom DMA aufgerufen werden, sodass Daten ohne CPU-Eingriff gespeichert und empfangen werden können. Die in diesem Modus verbrauchte Leistung kann für Mikrocontroller mit geringer Leistung bis zu 50 uA / MHz betragen.
iii. Tiefschlafmodus
Der Tiefschlafmodus umfasst im Allgemeinen das Deaktivieren von Hochfrequenztakten und anderen Schaltungen innerhalb des Mikrocontrollers, wobei nur die Taktschaltung übrig bleibt, die zum Ansteuern kritischer Elemente wie des Watchdog-Timers, der Brown-Out-Erkennung und der Einschalt-Reset-Schaltung verwendet wird. Andere MCUs können andere Elemente hinzufügen, um die Gesamteffizienz zu verbessern. Der Stromverbrauch in diesem Modus kann je nach MCU nur 1 uA betragen.
iv. Stop / OFF-Modus
Bestimmte Mikrocontroller haben unterschiedliche Variationen dieses zusätzlichen Modus. In diesem Modus sind normalerweise sowohl der hohe als auch der niedrige Oszillator deaktiviert, wobei nur einige Konfigurationsregister und andere kritische Elemente eingeschaltet bleiben.
Die Merkmale aller oben genannten Schlafmodi unterscheiden sich von MCU zu MCU, aber die allgemeine Faustregel lautet: Je tiefer der Schlaf ist, desto mehr Peripheriegeräte sind im Schlaf deaktiviert und desto weniger Strom wird verbraucht. Dies bedeutet jedoch normalerweise auch: Je höher der Energieverbrauch ist, um das System wieder in Betrieb zu nehmen. Es ist daher Sache des Konstrukteurs, diese Variante zu berücksichtigen und die richtige MCU für die Aufgabe auszuwählen, ohne Kompromisse einzugehen, die sich auf die Spezifikation des Systems auswirken.
2. Dynamische Änderung der Prozessorfrequenz
Dies ist eine weitere weit verbreitete Technik zur effizienten Reduzierung des Stromverbrauchs eines Mikrocontrollers. Es ist bei weitem die älteste Technik und etwas komplizierter als die Schlafmodi. Dabei steuert die Firmware den Prozessortakt dynamisch und wechselt zwischen hoher und niedriger Frequenz, da die Beziehung zwischen der Frequenz des Prozessors und der verbrauchten Leistung linear ist (siehe unten).
Die Implementierung dieser Technik folgt normalerweise diesem Muster; Wenn sich das System im Leerlauf befindet, stellt die Firmware die Taktfrequenz auf eine niedrige Geschwindigkeit ein, damit das Gerät Strom sparen kann. Wenn das System umfangreiche Berechnungen durchführen muss, wird die Taktrate wieder erhöht.
Es gibt kontraproduktive Szenarien für die Änderung der Prozessorfrequenz, die normalerweise auf schlecht entwickelte Firmware zurückzuführen sind. Solche Szenarien entstehen, wenn die Taktfrequenz niedrig gehalten wird, während das System umfangreiche Berechnungen durchführt. Eine niedrige Frequenz in diesem Szenario bedeutet, dass das System mehr Zeit als nötig benötigt, um die festgelegte Aufgabe auszuführen, und somit kumulativ dieselbe Menge an Strom verbraucht, die die Entwickler sparen wollten. Daher muss bei der Implementierung dieser Technik in zeitkritischen Anwendungen besondere Sorgfalt angewendet werden.
3. Interrupt-Handler-Firmware-Struktur
Dies ist eine der extremsten Techniken der Energieverwaltung in Mikrocontrollern. Möglich machen dies nur wenige Mikrocontroller wie die ARM-Cortex-M-Kerne, die im SCR-Register ein Sleep-on-Exit-Bit aufweisen. Dieses Bit bietet dem Mikrocontroller die Möglichkeit, nach dem Ausführen einer Interruptroutine zu schlafen. Während die Anzahl der Anwendungen, die auf diese Weise reibungslos ausgeführt werden, begrenzt ist, könnte dies eine sehr nützliche Technik für Feldsensoren und andere langfristige, auf Datenerfassung basierende Anwendungen sein.
Die meisten anderen Techniken sind meiner Meinung nach Variationen der bereits oben erwähnten. Beispielsweise ist die selektive periphere Taktungstechnik im Wesentlichen eine Variation der Schlafmodi, in denen der Entwickler die Peripheriegeräte zum Ein- oder Ausschalten auswählt. Diese Technik erfordert fundierte Kenntnisse des Ziel-Mikrocontrollers und ist möglicherweise nicht sehr anfängerfreundlich.
4. Leistungsoptimierte Firmware
Eine der besten Möglichkeiten, den Stromverbrauch eines Mikrocontrollers zu reduzieren, besteht darin, eine effiziente und gut optimierte Firmware zu schreiben. Dies wirkt sich direkt auf den Arbeitsaufwand aus, den die CPU pro Zeit leistet, und dies trägt im weiteren Sinne zum Stromverbrauch des Mikrocontrollers bei. Beim Schreiben der Firmware sollten Anstrengungen unternommen werden, um eine Reduzierung der Codegröße und der Zyklen zu gewährleisten, da jeder unnötige ausgeführte Befehl einen Teil der in der Batterie gespeicherten Energie verschwendet. Im Folgenden finden Sie einige allgemeine C-basierte Tipps für eine optimierte Firmware-Entwicklung.
- Verwenden Sie die Klasse "Static Const" so oft wie möglich, um zu verhindern, dass Arrays, Strukturen usw. zur Laufzeit kopiert werden, die Strom verbrauchen.
- Zeiger verwenden. Sie sind wahrscheinlich der schwierigste Teil der C-Sprache für Anfänger, aber sie sind der beste, um effizient auf Strukturen und Gewerkschaften zuzugreifen.
- Vermeiden Sie Modulo!
- Lokale Variablen über globale Variablen, wo möglich. Lokale Variablen sind in der CPU enthalten, während globale Variablen im RAM gespeichert sind. Die CPU greift schneller auf lokale Variablen zu.
- Unsignierte Datentypen sind nach Möglichkeit Ihr bester Freund.
- Nehmen Sie nach Möglichkeit einen Countdown für Schleifen an.
- Verwenden Sie anstelle von Bitfeldern für vorzeichenlose Ganzzahlen Bitmasken.
Ansätze zur Reduzierung des Stromverbrauchs eines Mikrocontrollers sind nicht auf die oben genannten softwarebasierten Ansätze beschränkt, es gibt hardwarebasierte Ansätze wie die Kernspannungsregelungstechnik. Um jedoch die Länge dieses Beitrags in einem angemessenen Bereich zu halten, sparen wir sie für einen anderen Tag.
Fazit
Die Implementierung eines Produkts mit geringem Stromverbrauch beginnt bei der Wahl des Mikrocontrollers und kann ziemlich verwirrend sein, wenn Sie versuchen, die verschiedenen auf dem Markt verfügbaren Optionen zu prüfen. Während des Durchsuchens kann das Datenblatt gut funktionieren, um die allgemeine Leistung von MCUs zu erhalten, aber für leistungskritische Anwendungen kann es ein sehr kostspieliger Ansatz sein. Um die tatsächlichen Leistungseigenschaften eines Mikrocontrollers zu verstehen, müssen Entwickler die elektrischen Spezifikationen und die dem Mikrocontroller zur Verfügung stehenden Funktionen mit geringem Stromverbrauch berücksichtigen. Entwickler sollten sich nicht nur Gedanken über den Stromverbrauch der einzelnen im Datenblatt der MCU angegebenen Leistungsmodi machen, sondern auch die Weckzeit, die Weckquellen und die Peripheriegeräte untersuchen die für den Energiesparmodus verfügbar sind.
Es ist wichtig, die Funktionen des Mikrocontrollers zu überprüfen, den Sie verwenden möchten, um die Optionen für die Implementierung mit geringem Stromverbrauch zu ermitteln. Mikrocontroller waren einer der größten Nutznießer des technologischen Fortschritts, und es gibt jetzt mehrere Mikrocontroller mit extrem geringem Stromverbrauch, die sicherstellen, dass Sie über Ressourcen verfügen, mit denen Sie Ihr Strombudget einhalten können. Einige von ihnen bieten auch verschiedene Software-Tools für die Leistungsanalyse, die Sie für ein effektives Design nutzen können. Ein persönlicher Favorit ist die Mikrocontroller-Serie MSP430 von Texas Instrument.