9.2  Low-Power-Design

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.

__interrupt void basic_timer_ISR(void) 
{ startAdConverter(); } 
 
__interrupt void AD_finished_ISR(void) 
{ data = readAdResult(); 
  process(data); } 
 
int main(void) 
{ 
initTimer(); 
setupAdConverter(); 
enableInterrupts(); 
while (true) 
{ LPM3; \\ gehe schlafen } 
}
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 = 9 und R2 = 1, so ist dies eigentlich eine unter normalen Umständen vernünftige Wahl. Allerdings fließt bei einer Eingangsspannung von 0.3V durch diesen Spannungsteiler 3V10  = 0.3mA. Dies ist höher als der Gesamtenergieverbrauch des Mikrocontrollers im Normalbetrieb.


PIC

Bild 9.7.: Nicht invertierender Operationsverstärker


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.


PIC

Bild 9.8.: Schalter an zwei Ports des Mikrocontrollers


Bipolare Transistoren benötigen meist einen hohen Ruhestrom, weshalb sie in Low-Power-Designs nicht verwendet werden sollten. FET-Transistoren sind hier besser geeignet.