4
Ultra-Low-Power-Design für portable Applikationen Juan Alvarez MSP430 Microcontroller Marketing Manager Texas Instruments Der Entwurf besonders stromsparender Schaltungen für portable Applikationen ist eine echte Herausforderung. Im Vergleich zu Schaltungen, bei denen der Stromverbrauch nur eine untergeordnete Rolle spielt, müssen sich Entwickler hierbei gleich mehreren Aspekten widmen: effiziente Ausnutzung von Low-Power-Modes bei Microcontrollern, optimierter Entwurf der Stromversorgung und vor allem die richtige Auswahl an geeigneten Bauelementen. Low-Power-Modes von Controllern nutzen! Die Batterielebensdauer einer Anwendung auf ein Maximum zu verlängern erfordert die Ausnutzung aller Möglichkeiten, den durchschnittlichen Stromverbrauch zu senken. In Bezug auf Low-Power-Modes von Microcontrollern lässt sich dies durch die Einhaltung von fünf Schritten sicherstellen. Das wird im Folgenden am Beispiel eines Bewegungsmelders gezeigt, der auf einem Passiv-Infrarot (PIR)-Sensor basiert. Eine Batterielebensdauer von mindestens zwei einhalb Jahren soll mit einer kleinen CR2032-Batterie erreicht werden. Das Prinzip eines solchen Melders liegt darin, dass es bei Bewegung zu einer geringen Spannungsveränderung von ca. 10mV am PIR-Sensor kommt. Um dieses sehr kleine Spannungsdelta detektieren zu können, kommt typischerweise eine Schaltung von mehreren Operationsverstärkern zum Einsatz. Will man jedoch einen intelligenten Bewegungsmelder entwerfen, der z. B. die Alterung analoger Bauelemente einbezieht oder Bewegung über Funk melden kann, muss ein Microcontroller zum Einsatz kommen. Um den Stromverbrauch so gering wie möglich zu halten, führt kein Weg an Texas Instruments’ MSP430 vorbei. Der MSP430F2013 beispielsweise beinhaltet einen 16-bit-Analog/Digital-Wandler, der über einen programmierbaren Verstärker (PGA) verfügt. Dazu wird das Signal des PIR-Elements mit Faktor vier verstärkt, bevor das analoge Signal gewandelt und von der CPU ausgewertet wird. Dadurch wird nur eine sehr geringe Anzahl passiver, externer Komponenten benötigt, ganz abgesehen von einem extrem niedrigen Stromverbrauch. Wie bereits beschrieben, kann Bewegung entweder über Funk oder drahtgebunden, im einfachsten Falle aber über eine LED angezeigt werden. In unserem Bespiel soll jedoch nur der Bewegungsmelder an sich und nicht die Art des Alarms betrachtet werden. In folgender Abbildung wird ein entsprechendes Blockdiagramm gezeigt. Bild 1: Blockdiagramm eines batteriebetrieben Bewegungsmelders Fünf Schritte, die zu einem langen Batterieleben führen: 1. Schritt: Berechnung der maximalen Durchschnittsstromaufnahme Die einfachste Möglichkeit ist zunächst die maximale Stromaufnahme über die Batterielebensdauer (d. h. den Durchschnittswert) zu bestimmen. Die Berechnung hängt von dem verwendeten Batterietyp bzw. dessen Kapazität

Ultra-Low-Power-Design für portable Applikationen · Ultra-Low-Power-Design für portable Applikationen Juan Alvarez MSP430 Microcontroller Marketing Manager Texas Instruments Der

  • Upload
    buiphuc

  • View
    216

  • Download
    0

Embed Size (px)

Citation preview

Ultra-Low-Power-Design für portable Applikationen Juan Alvarez MSP430 Microcontroller Marketing Manager Texas Instruments Der Entwurf besonders stromsparender Schaltungen für portable Applikationen ist eine echte Herausforderung. Im Vergleich zu Schaltungen, bei denen der Stromverbrauch nur eine untergeordnete Rolle spielt, müssen sich Entwickler hierbei gleich mehreren Aspekten widmen: effiziente Ausnutzung von Low-Power-Modes bei Microcontrollern, optimierter Entwurf der Stromversorgung und vor allem die richtige Auswahl an geeigneten Bauelementen. Low-Power-Modes von Controllern nutzen! Die Batterielebensdauer einer Anwendung auf ein Maximum zu verlängern erfordert die Ausnutzung aller Möglichkeiten, den durchschnittlichen Stromverbrauch zu senken. In Bezug auf Low-Power-Modes von Microcontrollern lässt sich dies durch die Einhaltung von fünf Schritten sicherstellen. Das wird im Folgenden am Beispiel eines Bewegungsmelders gezeigt, der auf einem Passiv-Infrarot (PIR)-Sensor basiert. Eine Batterielebensdauer von mindestens zwei einhalb Jahren soll mit einer kleinen CR2032-Batterie erreicht werden. Das Prinzip eines solchen Melders liegt darin, dass es bei Bewegung zu einer geringen Spannungsveränderung von ca. 10mV am PIR-Sensor kommt. Um dieses sehr kleine Spannungsdelta detektieren zu können, kommt typischerweise eine Schaltung von mehreren Operationsverstärkern zum Einsatz. Will man jedoch einen intelligenten Bewegungsmelder entwerfen, der z. B. die Alterung analoger Bauelemente einbezieht oder Bewegung über Funk melden kann, muss ein Microcontroller zum Einsatz kommen. Um den Stromverbrauch so gering wie möglich zu halten, führt kein Weg an Texas Instruments’ MSP430 vorbei. Der MSP430F2013 beispielsweise beinhaltet einen 16-bit-Analog/Digital-Wandler, der über einen programmierbaren Verstärker (PGA) verfügt. Dazu wird das Signal des PIR-Elements mit Faktor vier verstärkt, bevor das analoge Signal gewandelt und von der CPU ausgewertet wird. Dadurch wird nur eine sehr geringe Anzahl passiver, externer Komponenten benötigt, ganz abgesehen von einem extrem niedrigen Stromverbrauch. Wie bereits beschrieben, kann Bewegung entweder über Funk oder drahtgebunden, im einfachsten Falle aber über eine LED angezeigt werden. In unserem Bespiel soll jedoch nur der Bewegungsmelder an sich und nicht die Art des Alarms betrachtet werden. In folgender Abbildung wird ein entsprechendes Blockdiagramm gezeigt.

Bild 1: Blockdiagramm eines batteriebetrieben Bewegungsmelders Fünf Schritte, die zu einem langen Batterieleben führen: 1. Schritt: Berechnung der maximalen Durchschnittsstromaufnahme Die einfachste Möglichkeit ist zunächst die maximale Stromaufnahme über die Batterielebensdauer (d. h. den Durchschnittswert) zu bestimmen. Die Berechnung hängt von dem verwendeten Batterietyp bzw. dessen Kapazität

ab. Für eine kostengünstige CR2032-Lithiumzelle mit einer Kapazität von 220mAh ergibt sich für eine gewünschte Lebensdauer von zweieinhalb Jahren ein maximaler Durchschnittsstrom von:

uAh

mAhJahremAh 10

21900220

5.2220

≈=

2. Schritt: Betrachtung des Standby-Betriebs Die meisten batteriebetriebenen Geräte sind mehr als 99 Prozent ihrer Lebensdauer inaktiv bzw. in einem Bereitschaftsmodus. In dieser Zeit ist die CPU eines Microcontrollers selbst nicht aktiv. Oft arbeitet dann lediglich eine Echtzeituhr (RTC) mittels interner Timer. Ist dies nicht der Fall, ist meist das gesamte Taktsystem ausgeschaltet, bis die Applikation durch ein externes Signal (z. B. Tastendruck) wieder aktiviert wird. Daher ist eine entsprechende Auswahl des Microcontrollers überaus wichtig. Dieser muss nicht nur über geeignete Low-Power Modi verfügen, sondern auch eine extrem niedrige Stromaufnahme aufweisen, da dies den durchschnittlichen Stromverbrauch maßgeblich beeinflusst. Dazu gehören vor allem auch versteckte Parameter, wie z. B. Pin-Leakage- Ströme, evtl. zusätzlicher Verbrauch durch Watchdog-Timer und Brown-out-Reset, der in allen Low-Power-Modes aktiv sein sollte. Um ein schnelles Ansprechen des Melders im Falle von Bewegung zu garantieren, werden drei Messungen pro Sekunde durchgeführt. Daher benötigt die Applikation ein Taktsignal, auch während der Controller sich im „Schlafmodus“ bzw. Standby-Modes befindet, mithilfe dessen er periodisch aktiviert wird. Wie oben angesprochen wurde der MSP430F2013 unter anderem wegen seines extrem niedrigen Stromverbrauchs sowie der intelligenten analogen Peripherie gewählt, die externe Komponenten praktisch überflüssig macht. Ein genauerer Blick auf den F2013 zeigt, dass seine Stromaufnahme im Vergleich zu anderen 8- oder 16-bit-MCUs am geringsten ist: Im wichtigen „Standby-Mode“ liegt der maximale Stromverbrauch nur bei 1.2µA (3V), wobei dies bereits Brown-out-Reset (BOR) sowie einen 32kHz-Quarztakt einschließt. Dieser Strom kann aber sogar noch weiter gesenkt werden, indem der interne Very-Low-Power-Oszillator (VLO) verwendet wird. Dieser wird auch in unserem Beispiel des Bewegungsmelders verwendet. Der VLO erzeugt ein 12kHz-Clocksignal und senkt somit den typischen Strom im „Standby-Mode“ auf nur 500nA. Ein weiterer Vorteil ist, dass keinerlei externe Bauelemente benötigt werden – die Kosten für einen Quarz entfallen also. Ansonsten bietet der MSP430F2013 2kB Flash, 128B RAM, einen Timer mit zwei Capture/Compare Registern, 10 GPIOs sowie einem 16-Bit-Delta-Sigma Analog/Digital-Wandler mit einem internen, programmierbaren Verstärker (PGA) und einer echten Spannungsreferenz. 3. Schritt: Möglichst hohen Integrationsgrad anstreben Die Integration von Peripherie in einen Microcontroller erlaubt nicht nur eine schnellere interne Kommunikation, sondern auch eine einfachere und vor allem code-effizientere Umsetzung, da nicht erst durch ein langsames Kommunikations-Interface gegangen werden muss. Dazu kommt, dass auf doppelte Weise Strom gespart werden kann: zum einen entfallen Leckströme, die durch einen externen Baustein entstehen. Zum anderen kann durch intelligente Peripherie die Zeit des Microcontrollers im „Active-Mode“ minimiert werden. In unserem Beispiel wird der 16-Bit-A/D-Wandler zusammen mit seinem Verstärker und der internen Referenz verwendet. Somit werden keine externen, analogen Komponenten für den Bewegungsmelder benötigt. 4. Schritt: Externe Analogkomponenten im Standby-Betrieb ausschalten Dem Ruhestrom von aktiven Bauelementen wird oft sehr große Beachtung geschenkt, da diese stets eingeschaltet sind, um Verzögerungen durch Einschwingzeiten zu vermeiden. Für viele portable Geräte ist diese Einschwingzeit allerdings vernachlässigbar, da sich die Schaltungen ohnehin die meiste Zeit im Standby-Betrieb befinden. Daher sollten unbedingt Bausteine mit „Shut-Down“-Funktion gewählt werden. Noch einfacher und unter Umständen auch billiger ist es, Komponenten, die über keinen „Shut-Down“-Eingang verfügen, direkt über einen GPIO des Microcontrollers mit Strom zu versorgen – dies ist jedoch nur möglich, wenn der maximale Ausgangsstrom der MCU pro Pin nicht überschritten wird. Natürlich gibt es auch Bausteine wie digitale Signal-Prozessoren (DSPs), deren Ruhestrom gemessen an der übrigen Schaltung sehr hoch ist. In diesem Falle sollte ein externer Schaltbaustein verwendet werden, der den DSP, gesteuert von einem Microcontroller, ausschaltet. Hierbei müssen aber in der Regel Registerinhalte gesichert werden, auch sollte eine eventuell vorhandene Echtzeituhr weiterlaufen. Diese Funktionen können leicht selbst in dem kleinsten MSP430 implementiert werden, der somit als „Smart Power Saver“ dient.

In unserem Beispiel des Bewegungsmelders kommen keine externen Komponenten zum Einsatz. Dennoch ist es wichtig, die interne Peripherie des Controllers wie ADC, Spannungsreferenz usw. intelligent ein- bzw. auszuschalten, um den Stromverbrauch zu minimieren. Der MSP430 erlaubt, jeden Block innerhalb des 16-Bit-A/D-Wandlers individuell zu deaktivieren. Wird beispielsweise die Spannungsreferenz aktiviert, bleibt der ADC so lange ausgeschaltet, bis sich die Referenz stabilisiert hat. Natürlich darf der ADC nur eingeschaltet bleiben, solange eine Wandlung stattfindet. 5. Schritt: Stromverbrauch im „Active-Mode“ minimieren Auch wenn der Standby-Strom den durchschnittlichen Stromverbrauch dominiert, ist es wichtig, die Aufnahme im „Active-Mode“ zu minimieren. Dazu sollten folgende Regeln beachtet werden:

Minimieren der Aktiv-Zeit von Komponenten mit der größten Stromaufnahme Ausschalten der CPU so oft wie möglich. Häufig wartet die CPU auf Peripherie oder externe Bauelemente,

bis beispielsweise eine Wandlung abgeschlossen worden ist. Daher sollte eine MCU gewählt werden, die es erlaubt, ihre Peripherie zu nutzen, ohne dass die CPU selbst aktiv ist. Ebenso muss ein schnelles Aufwachen der CPU sichergestellt sein, um Verzögerungen zu vermeiden bzw. die Batterielebensdauer zu verlängern

Wiederholtes Nachfragen (Pollen) von I/Os oder Peripherie ist zu vermeiden. Im „Active-Mode“ wird CPU-Leistung und damit Energie verschwendet, wenn I/Os oder andere Module manuell abgefragt werden. Stattdessen sollten interruptgesteuerte Architekturen zum Einsatz kommen, die es erlauben, die CPU bei einem bestimmten Ereignis zu aktivieren und sofort die Daten entsprechend zu verarbeiten. Während einer Datenwandlung kann die CPU somit deaktiviert sein und mit einem Interrupt wieder aufgeweckt werden sobald die Wandlung abgeschlossen ist

In Tabelle 1 wird das Stromverbrauchsprofil für den zuvor beschriebenen Bewegungsmelder gezeigt. Hierbei ist zu beachten, dass die CPU während einer A/D-Wandlung ausgeschaltet ist. Der stets eingeschaltete PIR-Sensor hat mit 6µA den höchsten Stromverbrauch – kann jedoch wegen seiner sehr langen Einschwingzeit nicht deaktiviert werden. Der durchschnittliche Gesamtstrom beträgt lediglich 9,37µA, womit das ursprüngliche Ziel von 10µA für eine Batterielebensdauer von mindestens zweieinhalb Jahren gut eingehalten wird. Funktion Dauer (in Sekunden) Aktivstrom Durchschnittsstrom PIR325 Sensor 1s 6µA 6µA 16-bit ADC, Vref + Takt 1,024ms, ca. 2,94-mal pro

Sekunde 810µA + 85µA 2,69µA

CPU Active-Mode, 1MHz 262us (= 262 Takte pro Sekunde)

300µA 0,08µA

Standby (MSP430 LPM3) mit VLO als Taktquelle

996,7ms 0,6µA 0,598µA

Gesamtaufnahme 9,37µA Stromverbrauchsprofil des Bewegungsmelders Für mehr Informationen zu dem MSP430-basierten Bewegungsmelder bietet Texas Instruments auf seiner Webseite einen Applikationsreport, der alle Daten wie Schaltplan, Software usw. beinhaltet: „Ultra-low Power Motion Detection using the MSP430F2013” (SLAA283) von Zack Albus (http://focus.ti.com/lit/an/slaa283/slaa283.pdf). Stromversorgung Ein wichtiger Aspekt für ein langes Batterieleben ist die Stromversorgung an sich. Hierbei geht es nicht nur um die Auswahl von Bauelementen, sondern vor allem des Batterietyps. 1. Tipp: Komponenten mit breitem Versorgungsspannungsbereich wählen Um die Batterielebensdauer zu maximieren, müssen die verwendeten Bausteine mit einer möglichst breiten Versorgungsspannung auskommen, da sich die Batteriespannung über die Zeit verändert. Im Falle von Alkalibatterien sinkt die Spannung linear. Unterstützen die verwendeten Komponenten beispielsweise eine untere

Versorgungsspannung von 2,2V anstelle von 2,7V, verdoppelt sich bereits die Lebensdauer bei der Verwendung von 2 AA Batterien! 2. Tipp: Vermeidung verschiedener Versorgungsspannungen Verschiedene Versorgungsspannungen in einer Schaltung erhöhen aufgrund zusätzlicher Spannungsregler nicht nur die Stromaufnahme, sondern treiben auch die Kosten hoch, zumal oft Pegelwandler benötigt werden. Eine einzige 3V-Spannungsversorgung ist heutzutage bei portablen Applikationen weit verbreitet. Es gibt viele Komponenten aus der analogen als auch digitalen Welt, die diesen Bereich unterstützen. 3. Tipp: Wenn immer möglich Lithiumbatterien verwenden Vergleicht man verschiedene Batterietypen, wird deutlich, dass Lithiumbatterien über die Zeit die stabilste Ausgangsspannung liefern – somit verlängert sich die Batterielebensdauer entscheidend. Andererseits ist bei dieser Batterietechnologie der maximale Ausgangstrom geringer. Werden hohe Spitzenströme benötigt, sind Alkalibatterien besser geeignet. Am Beispiel des Bewegungsmelders ist aufgrund der maximalen als auch der durchschnittlichen Stromaufnahme eine Lithiumbatterie wie die CR2032 optimal geeignet. 4. Tipp: Optimierung im Falle verschiedener Versorgungsspannungen In manchen Fällen lassen sich verschiedene Versorgungsspannungen nicht vermeiden. Beispielhaft hierfür ist ein System, das auf einer 32-Bit-MCU basiert. Typischerweise sind die Standby-Ströme relativ hoch, zudem kommen Versorgungsspannungen von 1,8V sowie 3,3V hinzu, die zum einen die CPU, zum anderen die Peripherie wie I/O-Ports versorgen. Energie kann eingespart werden, indem ein kostengünstiger Ultra-Low-Power-Controller wie der MSP430 diese Rails komplett ausschaltet, wenn der große Prozessor nicht benötigt wird.

Auswahl von Komponenten Wie oben beschrieben, wirkt sich die Auswahl von Komponenten maßgeblich auf die Energieaufnahme eines Systems aus. Da der Markt heute eine Vielzahl von Komponenten bietet, soll im Folgenden eine Hilfe in Form eines Fragenkataloges geboten werden: • Fragen, die den Standby-Betrieb des Microcontrollers in einer Applikation betreffen: o Wie hoch ist der maximale Strom des Low-Power-Modes, der am häufigsten genutzt wird? o Wie hoch ist die zusätzliche maximale Stromaufnahme des Brown-Out-Resets (BOR)? o Ist sichergestellt, dass der BOR stets eingeschaltet ist, da BOR-Zustände nicht vorhergesehen werden können? o Wie hoch ist der maximale Leckstrom der Pins? • Fragen, die den aktiven Controllerbetrieb einer Applikation betreffen: o Wie schnell wacht die MCU auf und ist der interne Oszillator auch sofort stabil? o Lässt sich das Clocksystem flexibel „on-the-fly“ in Code anpassen? o Bietet der Hauptoszillator nicht nur wenige kHz, sondern auch die volle Leistung in Abhängigkeit von der Betriebsspannung? o Wie hoch ist der maximale Stromverbrauch der MCU im aktiven Betrieb? o Wie gut werden Interrupts unterstützt, sodass Polling vermieden werden kann? o Kann die Peripherie vordefinierte Aufgaben in Low-Power-Modes durchführen, ohne dass die CPU aktiv sein muss? • Fragen zum Vergleich analoger Komponenten: o Verfügt der Baustein über eine „Shut-Down”-Funktion? o Wie schnell schwingt das Bauteil ein? o Kann die Funktionalität des externen Elements in den Microcontroller integriert werden? Die bisher beschriebenen Punkte, wie die Benutzung der Low-Power-Modes von Microcontrollern, der Entwurf der Stromversorgung sowie die richtige Bauteileauswahl geben alleine noch keine Garantie für ein extrem sparsames Design, da in der Software selbst noch viel Potential liegt. Dennoch zeigen die genannten Empfehlungen wichtige Wege auf, die Ihre nächste Produktentwicklung zu einem möglichst langen Batterieleben führen.