Wie wir in Kapitel 1.1 und Kapitel 3.1 schon gesehen haben, bringt der MSP430-Mikrocontroller selbst alle Voraussetzungen mit, ihn für Designs mit extrem geringem Stromverbrauch zu verwenden. Berücksichtigt man einige Grundregeln für Design und Softwarestruktur, benötigt der Prozessor selbst fast keine Energie mehr. Die folgende Aufstellung von Hinweisen ist aus [Nag03] übernommen und in einigen Punkten ergänzt.
| Listing 9.1: | Pseudocode Programmfluss mit Interrupts |
Erklärung zu Listing 9.1:
Nach Initialisierung des Timers und der Interrupts wird der Prozessor in den Low-Power-Mode LPM3
versetzt. Der Interrupt von Timer 1 erweckt den Prozessor und in der Interrupt-Service-Routine
(ISR) wird der AD-Wandler gestartet. Nach deren Ende wird der Prozessor wieder in der
Endlosschleife in LPM3 versetzt. Die A/D Wandlung ist so konfiguriert, dass sie unabhängig von
der MCLK ist und beispielsweise durch die ACLK gesteuert wird. Der nächste Interrupt ist der des
A/D Wandlers nach Abschluss des Wandlerzyklus. Die zugehörige Service-Routine liest das
Wandlerergebnis ein und führt notwendige Berechnungen durch. Nach Rückkehr in die
Hauptschleife wird der Prozessor wieder schlafen geschickt, bis der Timer-Interrupt ihn erneut aus
dem Dornröschenschlaf erweckt. Ein Umsetzung in Programmcode ist auf unserer Webseite zum
Buch [MSP10] zu finden.
Wie man an diesem Beispiel sehen kann, ist es möglich, das Programm so zu gestalten, das alle notwendigen und gewollten Pausenzeiten im Energiesparmodus verbracht werden können, anstelle auf den Ablauf eines Ereignisses aktiv zu warten. Dies ist eine sehr effiziente Möglichkeit, Low-Power-Modes des Prozessors zu nutzen.
Der MSP ist im Gesamtentwurf jedoch nur eine Komponente unter vielen und oft nicht einmal für den größten Energieverbrauch verantwortlich. Vielmehr muss man genau darauf achten, bei allen Bauteilen und Schaltungen auf entsprechende Eignung für den Low- Power-Betrieb zu achten. Oft verbraucht ein einziges Bauteil mehr als der ganze Rest der Schaltung. Folgende Aufstellung gibt ein paar heuristische Tipps, ohne jedoch Anspruch auf Vollständigkeit zu erheben.
Die beste Möglichkeit Energie zu sparen, ist die Verwendung von speziell auf den Zweck zugeschnittenen Low-Power-Bauteilen. Verschiedene Herstellerfirmen bieten speziell zugeschnittene Broschüren [Tex07a] an, die geeignete Bauteile beschreiben. Hat man dennoch einige ”Stromfresser” in der Schaltung, so sollte man durch Abschaltung aller im Moment nicht benötigter Komponenten gerade deren Betriebszeit minimieren. Viele moderne Komponenten haben einen entsprechenden Shutdown-Eingang, der den Betriebsstrom in Funktionspausen auf ein Minimum reduziert. Ist das nicht möglich, können auch ganze Schaltungsteile über einen separaten Spannungsregler mit Shutdown-Funktionalität versorgt und bei Bedarf so zentral deaktiviert werden.
Im Allgemeinen skaliert der Energieverbrauch direkt mit der Betriebsspannung. Wähle deshalb die Betriebsspannung so niedrig wie möglich. Auch Operationsverstärker benötigen nicht unbedingt eine weit über der maximal auftretenden Signal-Ausgangsspannung liegende Versorgungsspannung.
Energieverbrauch skaliert gleichermaßen mit der Taktrate. Nicht nur der Prozessor, auch viele externe Komponenten, (z.B. AD-Wandler, DDS-Synthesizer aber auch ganz einfache Logikgatter) verbrauchen bei höheren Taktraten mehr Strom. Das gleiche gilt für Datenraten bei Kommunikationsbausteinen. Manchmal gleicht sich der Mehrverbrauch aber auch aus, wenn im Gegenzug die Aktivitätszeiten der entsprechenden Schaltungsteile verringert werden können. Hier muss ein für den Einzelfall geeigneter Kompromiss gefunden werden.
Bei gemischt analog/digitalen Systemen ist die Abtastfrequenz ein zentraler Zeitgeber. Je geringer man diese wählen kann, desto länger können Funktionskomponenten abgeschaltet werden. Es lohnt durchaus schon im Entwurf, den zu erwartenden Dynamikbereich der Applikation auszuloten, um hier mögliches Potential voll auszuschöpfen.
Linearspannungsregler benötigen meist einen Mindeststrom, um überhaupt arbeiten zu können. Selbst energiesparende ”Low-Dropout-” Regler mit geringem Längsspannungsabfall (das ist die Spannung, die über dem Spannungsregler mindestens abfallen muss) haben im Vergleich zu Schaltreglern eigentlich immer einen schlechteren Wirkungsgrad. Zudem sind Schaltregler in der Lage, auch aus niedriger Eingangsspannung (z.B. 1 Mignon (AA)) 3V-Betriebsspannung zu generieren.
Standard Dioden und Zenerdioden sind zur energiesparenden Erzeugung von Referenzspannungen im allgemeinen weniger geeignet. Verwende stattdessen dezidierte energiesparende Referenzspannungsquellen.
Je nach Schaltung der Eingangs- oder Ausgangsstufen einzelner Bauteile muss man bei der
Dimensionierung der Pull-Up- oder Pull-Down-Widerstände besondere Aufmerksamkeit walten
lassen. Soweit möglich, sollte man mit Pull-Down-Widerständen arbeiten. Verwende so große
Widerstände wie möglich. Doch Vorsicht! Dadurch steigt auch die Wahrscheinlichkeit, dass durch
äußere Störungen Spannungsspitzen an diesen erzeugt werden, die als fehlerhafte Signalpegel
interpretiert werden können.
Aufmerksamkeit ist auch bei der Dimensionierung von Spannungsteilern oder Beschaltung von Operationsverstärkern geboten. Wählt man beispielsweise für die in Bild 9.7 gezeigte Verstärkerschaltung R1 = 9kΩ und R2 = 1kΩ, so ist dies eigentlich eine unter normalen Umständen vernünftige Wahl. Allerdings fließt bei einer Eingangsspannung von 0.3V durch diesen Spannungsteiler 3V∕10kΩ = 0.3mA. Dies ist höher als der Gesamtenergieverbrauch des Mikrocontrollers im Normalbetrieb.
Leuchtdioden, selbst in der Energiesparversion, sind mit 1mA noch regelrechte Stromfresser. Wenn
sie dennoch eingesetzt werden sollen, so kann man durch Blinken und entsprechende
Puls-Pause-Zeiten (z.B. 0.5s an, 4.5s aus) noch deutlich Energie sparen. Wesentlich schnellere
Blinkfrequenzen (z.B. 5ms an, 45ms aus) sind nicht anzuraten, da dann die LED nur als schwach
glimmend wahrgenommen wird.
LCDs, insbesondere betrieben mit den internen Treibern der MSP430x4xx-Serie, sind geeignete
energiesparende Anzeige-Elemente.
Auch Schalter müssen nicht ständig stromdurchflossen sein. So kann man beispielsweise den Schalter wie in Bild 9.8 mit dem Mikrocontroller verbinden. Aktiviert man nun alle 100ms kurz Port P1.0 als Ausgang, kann man an Port P1.1 nach kurzem Warten den Zustand direkt abfragen. Allerdings sollte man auch nicht mit geringerer Frequenz als 10Hz den Schalter abfragen, da man sonst merkliche Verzögerungen in der Bedienbarkeit verursacht. Die weitere Beschaltung dient der Filterung von Störungen.
Bipolare Transistoren benötigen meist einen hohen Ruhestrom, weshalb sie in Low-Power-Designs nicht verwendet werden sollten. FET-Transistoren sind hier besser geeignet.