Low Power Design

Entwurf von energiesparenden Mikrocontroller-Schaltungen

27. Februar 2014, 13:41 Uhr | Von Andreas Riedenauer
Diesen Artikel anhören

Fortsetzung des Artikels von Teil 2

Controller-Auswahl

Aufgrund des Pflichtenhefts ergeben sich bereits zahlreiche Anforderungen an den zu wählenden Mikrocontroller. Nicht nur technische Vorgaben zur Erfüllung der eigentlichen Aufgabe sind maßgebend, auch weitere Faktoren wie Safety-Funktionen, vorhandene Bibliotheken, Vorerfahrungen mit der Con­troller-Familie, Entwicklungsumgebungen, (Langzeit-) Verfügbarkeit, Qualität, Support durch Hersteller und Lieferant, Einsatz bei anderen Produkten und damit verbundene Lagerhaltung sowie eventuelle Preisvorteile durch Bündelung u.v.m. spielen eine wichtige Rolle. Nun kommt der Aspekt der Energieersparnis noch hinzu. In manchen Fällen wird man einen speziell auf niedrigsten Energiebedarf hin konstruierten Con­troller wählen (müssen), oft jedoch reicht es aus, einen sparsamen modernen Standard-Controller einzusetzen und die Schaltung Hard- und Software-mäßig zu optimieren.

Wer extrem an Energie sparen muss und einen Spezial­baustein ins Auge fasst, sollte besonders sorgfältig vergleichen, denn die inzwischen gestiegene Sensibilität der Entwickler in puncto Energieverbrauch hat manchen Hersteller zu Marketing­aussagen veranlasst, die überzogene Erwartungen wecken können. Hier ist gesundes Augenmaß angesagt.

Liegt die geringstmögliche Stromaufnahme im Tiefschlaf eines bestimmten Controllers bei einigen µA, so ist das für Automobilanwendungen und im Industriebereich meist unerheblich. Für einen Langzeitdatenlogger dagegen, der über viele Jahre aus einer kleinen Batterie gespeist wird, ist das deutlich zu viel. Andererseits tappt in eine Falle, wer sich hier allein durch extreme Angaben von wenigen nA beeindrucken lässt, wenn in der realen Anwendung eine auch nur geringfügig schlechtere Rechenleistung sich in einer Verlängerung der aktiven Phase niederschlägt und alle im Tiefstschlaf erzielten nW-Einsparungen zunichtemacht. Nur die genaue Betrachtung von Peripherie, Programmlaufzeiten und verfügbaren Energiesparoptionen ermöglicht einen fairen Vergleich.

Unbenutzte I/O-Pins sind als Eingänge zu konfigurieren, da so der Strombedarf etwas niedriger ist als bei offenen Ausgängen. Digitale Eingänge sollten mit einer Abweichung von weniger als 0,5 Volt auf Masse oder Ucc liegen, was durch ihre externe Beschaltung oder durch Aktivierung der internen Pull-ups erreicht wird. Die Einhaltung der Logikpegel für High und Low reicht nicht aus. Die Pull-up-Widerstände sind im Reset-Zustand noch nicht aktiviert, da die zugehörigen Register noch ihre Initialwerte enthalten. Um auch in dieser Phase die Stromaufnahme zu minimieren, sind externe Pull-ups erforderlich.

Die Stromaufnahme ist bei CMOS-Stufen etwa proportional zur Taktfrequenz. Daher wählt man diese bei Dauerbetrieb nur so hoch, dass die benötigte Rechenleistung erzielt wird. Falls kein Dauerbetrieb erforderlich ist, zeitweise jedoch eine schnelle Abarbeitung benötigt wird, sollte man die verschiedenen Sleep-Modi nutzen. Dabei wird die CPU die meiste Zeit über vom Systemtakt getrennt oder der Oszillator wird ganz abgeschaltet. Bei Bedarf wird die CPU geweckt solange nötig, danach wieder schlafen gelegt.

Steht ein externes Wecksignal wie ein Tastendruck oder ein Schnittstellen-Signal zur Verfügung, kann der Controller in den sparsamsten Sleep Mode, den Power-Down-Modus mit typischerweise 0,1 µA versetzt werden. Soll der Controller von selbst aufwachen, muss ein Timer laufen – in der Regel der 32-kHz-Uhrenoszillator mit einer Stromaufnahme von 0,5 bis 10 µA. Solche Angaben sind typische Werte und beziehen sich auf eine Temperatur von 25 °C. Die maximalen Werte können deutlich höher liegen. Hier empfiehlt sich ein Blick ins Datenblatt. Gerade bei den modernen Low-Power-Oszillatoren gibt es große Unterschiede im Chipdesign. Sogar bei Versionsänderungen desselben Typs kann es zu nicht dokumentierten Änderungen der internen Oszillatorschaltung kommen – ein herstellerübergreifendes Phänomen. Das kann so weit gehen, dass einzelne Controller-Derivate für bestimmte Quarztypen ungeeignet sind. Sorgfalt beim Schaltungsdesign vermeidet späteren Ärger

Sleep-Modi bei AVR-Controllern
Tabelle 1: Sleep-Modi bei AVR-Controllern
© Ineltek-Mitte GmbH

Messungen an den Quarzen erfordern besondere Tastköpfe mit extrem hoher Impedanz. Es gibt Quarzhersteller, die deshalb dem Kunden eine Vermessung seiner Schaltung im eigenen Labor anbieten [11]. Noch sparsamer als die MCU-internen Oszillatoren und zugleich unkritisch im Design sowie temperaturkompensiert sind moderne externe RTC-Bausteine, die auf Werte deutlich unter 100 nA kommen und so konfiguriert werden können, dass sie den Controller periodisch aufwecken [11]. Tabelle 1 zeigt die verfügbaren Sleep-Modi bei AVR-Controllern.

Im Intervallbetrieb eines Mikrocon­trollers mit langen Sleep-Pausen und kurzen aktiven Phasen ist es nicht gleichgültig, ob in den aktiven Phasen schnell getaktet und kurz gerechnet oder langsamer getaktet und dafür länger gerechnet wird. Kurze, schnell getaktete aktive Phasen sind etwas günstiger. Allerdings setzt die Betriebsspannung Grenzen, und die internen RC-Oszillatoren können bei vielen Controllern nur die halbe Maximalfrequenz erzeugen. Externe RC-Kombinationen ermöglichen aber auch höhere Frequenzen.

Ist beispielsweise durch die Baudrate des UART ein Zeitfenster vorgegeben, sollte man zeitweise den Takt auf das gerade noch ausreichende Maß absenken und erst für Berechnungen wieder auf den höheren Takt umschalten. Dabei ist es günstiger, zwischen geeigneten Taktquellen umzuschalten, als nur den Teilerfaktor des Prescaler zu variieren. Grundsätzlich sollte man höhere Frequenzen als maximal benötigt erst gar nicht erzeugen. In dieser Hinsicht ist der Xmega besonders flexibel. Wird er mit 16 MHz betrieben, ist es besser, diese Frequenz mittels 2-MHz-RC-Oszillator und PLL zu erzeugen, als einen 32-MHz-Takt herunterzuteilen. Benötigen CPU und Peripherie unterschiedliche Takte, sollte der Hauptoszillator, aus dem diese abgeleitet werden, so langsam wie möglich laufen.

Taktoszillatoren unterscheiden sich in Stromaufnahme, Einschwingzeit und Stabilität. Bei Nutzung der Sleep-Modi und begrenzten Anforderungen an Genauigkeit und Frequenzstabilität ist der interne RC-Oszillator zu empfehlen. Das spart nicht nur den vibrationsempfindlichen Quarz und Platz auf der Platine, sondern auch Zeit beim Einschwingen und damit Energie: Ein Quarz benötigt über 15.000 Schwingungen, bis er sauber oszilliert, ein RC-Oszillator nur sechs. Keramikresonatoren liegen mit 200 bis 1.000 Schwingungen dazwischen. Ihre Genauigkeit reicht für asynchrone serielle Schnittstellen, nicht aber für eine Uhr. Neuere AVRs verfügen über einen Temperatursensor, der die Kalibrierung des RC-Oszillators im Register OSCCAL abhängig von der Temperatur mit 1–2 % Abweichung ermöglicht, was für UARTs ausreicht. ATxmegas haben einen im kompletten Spannungs- und Temperaturbereich auf 1 % kalibrierten 32-kHz-RC-Oszillator. Auch die neuen ATtiny1684 sowie die SAM4L-Serie sind mit besonders sparsamen Oszillatoren versehen. Die RC-Oszillatoren der neuesten Xmegas sind derart genau und Jitter-arm, dass nicht einmal für USB ein Quarz benötigt wird.

Oszillatortyp GenauigkeitEinschwingzeit in Zyklen
Quarz 10-50 ppm 16.000
Uhrenquarz 32 kHz 10-50 ppm 16.000 - 32.000
Keramikresonator 0,5 - 1% 200 - 1.000
 RC-Oszillator 1-2 % (kalibriert)  6
Externer Takt  -  6

Tabelle 2. Oszillatortypen


Die Quarzoszillatoren moderner AVRs können wahlweise für Low-Power- oder Full-Swing-Betrieb konfiguriert werden. Durch die geringere Amplitude im Sparmodus sinkt aber naturgemäß die EMC-Festigkeit. Eine Übersicht der Oszillatortypen zeigt Tabelle 2.

Die Stromaufnahme ist nahezu proportional zur Betriebsspannung. Je niedriger die Batteriespannung UB, desto niedriger ist allerdings auch die maximal zulässige Taktfrequenz. Einige Controller enthalten einen Aufwärtswandler, der den Betrieb an nur einer Batteriezelle erlaubt. Beim ATtiny23U/43U ist sicheres Anlaufen ab 0,9 V gewährleistet, wodurch die Batterie sehr gut ausgenutzt wird. Um Tiefentladung zu vermeiden, wird unterhalb von 0,6 V der gesamte Chip abgeschaltet. Der Schaltregler selbst benötigt 17 µA, was für Schaltungen mit ständig laufendem Timer noch zu viel sein kann.

Bei zu weit absinkender Betriebsspannung ist das Verhalten von Mikrocontrollern nicht mehr vorhersagbar. Dies lässt sich durch eine Brown-out-Erkennung (BOD) vermeiden, die den Controller bei Unterschreiten des Mindestwertes in den Reset-Zustand versetzt. Pico-Power-AVRs verfügen über eine Sleeping BOD, die sich im Sleep Mode abschalten lässt, ATxmegas über eine „Sampled BOD“, die nur zeitweise die Spannung überprüft. Bei Batterien sinkt die Spannung so langsam, dass es oft genügt, sie periodisch über den A/D-Wandler oder den analogen Komparator zu überprüfen. So lässt sich zudem bereits deutlich vor Erreichen der BOD-Schwelle eine Batteriewarnung ausgeben. Auch das Software-Design hat Einfluss auf die Stromaufnahme: Unterprogramme sparsam einsetzen, schnelle statt Speicherplatz sparende Algorithmen einsetzen, Look-up-Tabellen anstelle langwieriger Rechnungen, Interrupts statt Polling, relative Sprünge verwenden, häufig benutzte Variablen in Arbeitsregistern halten, bei Hochsprachen die Optimierung zugunsten schneller Codeausführung wählen.

Weitere Tipps finden Sie in der Application Note AVR4013 [3]. Diese zeigt im praktischen Versuch, wie durch rein Software-mäßige Änderungen der Energieverbrauch gesenkt werden kann (hier um über 97 %). Bei der Demonstration wird eine A/D-Wandlung ausgeführt, danach 1.000 Zyklen lang gerechnet und schließlich ein Nachrichten-String über die UART zu einem PC gesendet. Dabei wird die Schaltung aus einem Kondensator gespeist und gemessen, wie lange die Anwendung nach jeder Software-Änderung mit einer definierten Ladungsmenge betrieben werden kann.

 


  1. Entwurf von energiesparenden Mikrocontroller-Schaltungen
  2. Energiesparen bei Displays, Relais und HF-Bausteinen
  3. Controller-Auswahl
  4. Besonderheiten bei AVR-Mikrocontrollern

Lesen Sie mehr zum Thema


Das könnte Sie auch interessieren

Jetzt kostenfreie Newsletter bestellen!