Mikrocontroller Lang lebe die Batterie!
Bei vielen Anwendungen arbeiten der Prozessor und die Peripheriegeräte über längere Zeit im Leerlauf. Nach kurzer Aktivität befindet sich der Baustein oder das System wieder im Sleep-Modus. Ein...
Anbieter zum Thema
Bei vielen Anwendungen arbeiten der Prozessor und die Peripheriegeräte über längere Zeit im Leerlauf. Nach kurzer Aktivität befindet sich der Baustein oder das System wieder im Sleep-Modus. Ein geringer Stromverbrauch ist für diesen Zustand daher entscheidend, vor allem bei batteriebetriebenen Geräten.
In schlüssellosen Zugangssystemen, Klimasteuerungs- oder Sicherheitssystemen befindet sich der Mikrocontroller zu 99% der Zeit im Sleep-Modus und wird nur periodisch für einige Millisekunden aktiviert, um Sensoren abzufragen oder auf einen Interrupt zu reagieren. Danach ist er wieder im Sleep-Modus. Bei Anwendungen, in denen der Sleep-Modus dominiert, wird der Stromverbrauch im Sleep-Modus zum wichtigsten Kriterium, das vom Entwickler zu berücksichtigen ist. In vielen Fällen nähert sich der Gesamtstromverbrauch des Systems sogar dem Strom-verbrauch im Sleep-Modus an.
Die 8-Bit-picoPower-MCU ATmega165P von Atmel verbraucht im Aktivmodus 340 µA und im Stromsparmodus 650 nA. Arbeitet diese MCU in einem System, das einmal pro Sekunde für 10 µs aktiviert wird, um ein Peripheriegerät zu pollen oder seine Echtzeituhr zu aktualisieren, dann ist er für 1/1000 der Zeit aktiv und 999/1000 der Zeit im Sleep-Modus. Der Gesamtstromverbrauch des Systems ist die Summe aus Stromverbrauch im Aktivmodus und Stromverbrauch im Stromsparmodus, und kann wie folgt berechnet werden: 0,001 x 340 µA = 0,034 µA aktiver Stromverbrauch + 0,999 x 0,65 µA = 0,650 µA Verbrauch im Stromsparmodus = 0,684 µA Gesamtstromverbrauch (Bild 1 - siehe Heftseite). Unterschiedliche Sleep-Modi bieten eine hohe Flexibilität und ermöglichen die Abschaltung bestimmter Teile des Mikrocontrollers, die für die auszuführende Funktion nicht unbedingt benötigt werden.
Wie hoch die dadurch zu erzielende Senkung des Stromverbrauchs ist, hängt vom verwendeten Modus ab. Bei einer Versorgungsspannung von 1,8 V, einer Frequenz von 1 MHz und bei 25 ºC, verbraucht der ATmega165P im Aktivmodus 340 µA, im Idle-Modus 150 µA, im Power-Save-Modus 0,65 µA und im Power-Down-Modus nur 0,1 µA.In der Tat haben ja die meisten Anwendungen eine Echtzeituhr und sind deshalb einen Großteil der Zeit im Power-Save-Modus, wobei die Echtzeituhr und die Brown-out-Erkennung in Funktion sind. Prinzipiell gibt es vier Faktoren, die von einem Entwickler bei der Konzeption von Controllern für solche Anwendungen beachtet werden müssen: Versorgungsspannung, Brown-out-Erkennung, Echtzeituhr und Stromableitung im Sleep-Modus.
- Entspricht die spezifizierte Versorgungsspannung der tatsächlichen Versorgungsspannung? Obwohl bei vielen MCUs in den entsprechenden Werbedruckschriften ein Betrieb bei 1,8 V angegeben ist, kann es trotzdem sein, dass sie für bestimmte Vorgänge eine höhere Versorgungsspannung brauchen. Manche MCUs, bei denen ein Betrieb bei 1,8 V angegeben ist, benötigen aber tatsächlich Spannungen bis zu 2,2 V für analoge Module oder für das Schreiben in das Flash, wenn sie vernünftig funktionieren sollen. Andere MCUs, wie die aus der AVR-Familie von Atmel, benötigen für eine gute analoge Leistungsfähigkeit und das Schreiben in das Flash-Memory tatsächlich nur eine Versorgungsspannung von 1,8 V. Wenn das Zielsystem häufiges Schreiben in einen nicht flüchtigen Speicher (NVM) erfordert oder von analogen Modulen wie A/D-Wandlern oder Spannungsdetektoren abhängig ist, sollte der Entwickler genau prüfen, ob die spezifizierte Spannung von 1,8 V tatsächlich für alle Vorgänge gilt.
- Wie ist die Brown-out-Erkennung implementiert? Eine Brown-out-Erkennung (BOD) ist normalerweise erforderlich, um sicherzustellen, dass das System abgeschaltet ist, bevor die Spannung unter einen bestimmten Schwellenwert abfällt. Arbeitet die MCU unterhalb ihrer minimalen Betriebsspannung, wird ihr Verhalten unvorhersehbar. Dies kann eine fehlerhafte Ausführung des Codes zur Folge haben, was zu einem Code Runaway und einer Verfälschung des nicht flüchtigen Speichers führen und die Anwendung beschädigen kann.
Überwachung der Versorgungsspannung
Es ist deshalb wichtig, dass die Versorgungsspannung überwacht und das System ordnungsgemäß abgeschaltet wird, bevor die Spannungsversorgung zu niedrig wird. Wenn ein Chip unterhalb von 1,8 V nicht zuverlässig arbeitet, sollte er abgeschaltet und seine Zustände gesichert werden, bevor die Versorgungsspannung unter 1,8 V sinkt. Wenn der Chip unterhalb 2,2 V nicht in das Flash schreiben kann, sollte er abgeschaltet und seine Zustände gesichert werden, bevor die Versorgungsspannung unter 2,2 V sinkt.In diesem Zusammenhang gibt es zwei Probleme: Einmal die Leistung, die die Brown-out-Erkennung verbraucht, und zum anderen die Genauigkeit und Zuverlässigkeit der Brown-out-Erkennung. Brown-out-Erkennungsschaltungen sind analoge Module und Analogmodule brauchen immer Strom, um zu funktionieren. Ganz egal, wie man das Problem anpackt, in jedem Falle muss die Brownout-Erkennung sicherstellen, dass genug Leistung übrig bleibt, damit der Controller ordnungsgemäß funktionieren kann.
Für die meisten Controller bedeutet dies, dass die Brown-out-Erkennung im Sleep-Modus eingeschaltet bleibt, damit bei Aktivierung des Controllers eine ausreichende Spannung für die korrekte Funktion zur Verfügung steht. Das Prob-lem: die Brown-out-Erkennung verbraucht Strom und ist sogar der Hauptstromverbraucher im Sleep-Modus.Dies lässt sich meist durch eine „Zero-Power“-Brown-out-Erkennung lösen, die lediglich wenige nA Strom verbraucht und im Sleep-Modus aktiv bleibt. Dies senkt den Leistungsverbrauch auf ein Minimum und schützt die MCU. Solche Schaltungen sind flankengesteuert und haben Erkennungsschwellen, die niedriger sind als dies für die Funktion des Chips erforderlich ist. So werden einige Zero-Power-Brown-out-Erkennungsschaltungen, die 1,8 V und zum Schreiben in das Flash 2,2 V benötigen, so eingestellt, dass sie erst bei 1,4 V auslösen (bei einer Ansprechzeit von bis zu 10 ms). Die Erkennungsschwelle dieser Schaltungen ist nicht empfindlich genug und die Ansprechzeit zu langsam für viele Anwendungen.
Es ist auch nicht ungewöhnlich, dass der Chiphersteller den Einsatz einer externen Brown-out-Erkennung empfiehlt. Die Leistungsfähigkeit der Brown-out-Erkennung auf der MCU lässt sich durch einen höheren Strom verbessern. Der Stromverbrauch im Sleep-Modus kann so aber inakzeptabel hoch werden. Bei solchen Anwendungen müssen die Batterielaufzeiten nicht Monate, sondern Jahre betragen. Man will z.B. ein Auto aufschließen und stellt fest, dass der Schlüssel nicht funktioniert, weil die Batterie leer ist. Selbst wenn der Stromverbrauch im Sleep-Modus nur um 15 oder 25 µA steigt, kann das die Batterielaufzeit um ein Jahr oder mehr verringern.
Kontrolle des Timings und des Leistungsverbrauchs
Besser wäre es, eine ausreichende Stromversorgung für die Brown-out-Erkennung zur Verfügung zu stellen (ausreichende Genauigkeit) und Strom dadurch zu sparen, dass man diese im Sleep-Modus ganz abstellt. Die Variante trifft auf picoPower-AVR-MCUs zu. So kann die Brown-out-Erkennung ordnungsgemäß funktionieren, und deren Stromverbrauch im Sleep-Modus wird vermieden. Die Schaltung im Mikrocontroller aktiviert die Brown-out-Erkennung und überprüft die Versorgungsspannung bevor der restliche Mikrocontroller gestartet wird. Wenn die Versorgungsspannung unterhalb des Schwellwerts liegt, dann führt die Brown-out-Erkennung einen Reset des Bauteils durch (Bild 2 - siehe Heftseite).Viele Systeme, die die meiste Zeit im Sleep-Modus sind, müssen periodisch aktiviert werden, um Abfrage- oder andere Funktionen durchzuführen. Bei solchen Systemen muss eine Echtzeituhr (RTC) ständig laufen und eine hohe Genauigkeit gewährleisten. Für einen minimierten Stromverbrauch gibt es zwei Möglichkeiten zum Aufwecken aus dem Deep-Sleep-Modus: Entweder durch eine RTC oder durch Oszillatoren mit einem niedrigen Leistungsverbrauch (VLO). Der Unterschied liegt in der Genauigkeit. Die RTC bietet dank des genauen 32-kHz-Oszillators ein akkurates Timing. VLO-Oszillatoren sind ungenau und für zeitkritische Anwendungen, bei denen z.B. die Zeit verfolgt werden muss, ungeeignet.
Bei der Konzeption eines Systems, dass eine zeitgesteuerte Aktivierung erfordert, sollte der Entwickler deshalb anstelle der weniger genauen VLO-Oszillatoren eine MCU mit einem Quarzoszillator und geringem Leistungsverbrauch wählen.Dank kleinerer Prozesstechnologien sind manche 32-Bit-MCUs zur kostengünstigen Alternative zu ihren 8-Bit-Pendants geworden. Gleichzeitig hat sich aber auch der Ableitstrom so weit erhöht, dass die Stromableitung nicht zu vernachlässigen ist. Der Ableitstrom eines Mikrocontrollers in 0,13-µm-Technologie kann zehnmal höher sein als die eines 8-Bit-Bauteils mit niedrigem Stromverbrauch, das in einer stabileren, größeren Prozessgeometrie hergestellt wird. Bei der Entwicklung von Anwendungen, die überwiegend im Power-Down-Modus arbeiten, sollte der Entwickler deshalb Controller, deren Leistungsverbrauch im Power-Down-Modus mehr als 100 nA beträgt, von vorne herein ausschließen.
Asmund Saetre
(ID:170682)