Ultra low power
Zunehmend spielt der Stromverbrauch bei der Entwicklung von Mikrocontrollerhardware eine Rolle. Moderne Prozessoren sind immer besser in der Lage, von Batterien über lange Zeit versorgt zu werden. Es kann gelingen, den über eine lange Zeit gemittelten Stromverbrauch unter 1 mA zu halten, bis hin zu einem Verbrauch unter 1 µA. Bei Strömen im Umfeld von 1 µA tauchen spezielle Probleme auf, die gesondert betrachtet werden müssen.
Hardware-Tipps für die Entwicklung
- Den Prozessor finden, der einerseits den Anforderungen genügt, aber andererseits im Vergleich den geringsten Stromverbrauch hat. Hier ist zu beobachten, daß es einen Trend gibt hin zu immer geringerem Stromverbrauch. Daher lohnt es sich, ständig über neue Mikrocontroller auf dem Laufenden zu bleiben.
- Möglichst niedrige Betriebsspannung wählen.
- Möglichst niedrigsten Prozessortakt wählen und nur bei zeitkritischen Programmteilen vorübergehend den Takt hochschalten und nach der Berechnung wieder herabsetzen, siehe auch Sleep Mode.
- Periphere Hardware (externe AD-Wandler, Speicher) vom Prozessor aus entweder direkt oder über Schalttransistoren nur für den Moment des Zugriffs einschalten.
- Manche Kondensatoren zur Stützung der Betriebsspannung oder aus EMV Gründen, können ärgerliche Leckströme bewirken, insbesondere Elektrolytkondensatoren. Hier sogar manchmal erst nach einer Weile (Alterung).
- Bei nicht batteriebetriebenen Geräten kann es sein, dass die Spannungsregelung alleine 90% des Stromverbrauchs verursacht. In den letzten Jahren gibt es jedoch eine immer größer werdende Auswahl an stromsparenden Reglern, siehe auch Versorgung aus einer Zelle.
Einfluss der Software auf den Stromverbrauch
- Den Prozessor möglichst lange in einen Sleep Mode versetzen und jeweils nur kurz aufwecken.
- Unnötige Warteschleifen oder "delay" Routinen vermeiden.
- Eine Wertetabelle statt aufwändige Mathematik zur Berechung verwenden. Beispiel Cosinus und Sinus bei DFT/FFT.
- Integrierte zusätzliche Hardware wie AD-Wandler, UART usw. nur für den Zeitraum einschalten in dem sie benötigt werden. Möglicherweise kann Strom gespart werden wenn man bei einer AD-Wandlung den Prozessor in einen Sleep Mode versetzt und ihn über den Interrupt am Ende der AD-Wandlung aufwachen lässt.
- Statt Schalterzustände abzufragen (pollen) lieber einen Interrupt auslösen lassen.
- Kurze Macros werden schneller als entsprechende Unterprogramme abgearbeitet.
- Manche Mikroprozessoren (z. B. Atmel) bieten die Möglichkeit interne Pull-Up Widerstände zu schalten. Diese können an beschalteten Pins auch in einem Sleep Mode zu einem unerwartet hohen Stromverbrauch führen.
Achtung: Die Pull-ups bei unbenutzten Pins EIN-zuschalten spart laut einer Application Note von Atmel Strom: "To remove some power consumption, we will enable pull-ups on unused I/O pins to get a defined logical level and avoid unnecessary switching."
Aus AVR4013: picoPower Basics http://www2.atmel.com/Technologies/lowpower/design_examples.aspx
Allgemeine Probleme
- Das Abschalten von UARTs kann zu einem "break" auf der Empfangsseite führen. Hier ggf. die Leitung mit einem exteren Pull-Up Widerstand auf HIGH-Pegel ziehen und den UART-Ausgang als Eingang konfigurieren bis zur nächsten Benutzung. Es kann auch vorkommen, dass der UART abgeschaltet wird während noch ein Zeichen gerade übertragen wird. Bei niedriger Baudrate dauert das Senden eines Zeichens ja recht lange. Daher sollte vor dem Abschalten geprüft werden ob die Übertragung noch läuft.
- Zur Kontrolle des Stromverbrauchs ist es manchmal schwierig direkt den Strom zu messen. Der Innenwiderstand gängiger Multimeter kann bei kleinen Strommessbereichen so hoch werden, dass die Schaltung Fehlfunktionen zeigt. Dies gilt insbesondere für die kritischen Einschaltmomente. Daher sollte man zunächst im Einschaltmoment das Amperemeter kurzschließen. Oder man fügt einen 100Ω Widerstand (oder 1 KOhm) in die Verbrauchsleitung ein uns schließt diesen Widerstand in den ersten Sekunden kurz.
- Es kann auch vorkommen, daß eine Schaltung beispielsweise 2µA verbraucht, jede Sekunde jedoch 1 ms lang der Verbrauch 1 A beträgt. Der Mittelwert wäre dann
- [math]\displaystyle{ \frac{2 \mu A \cdot 999ms + 1A \cdot 1ms}{1s} = 1002 \mu A }[/math]
- Die Entladung der Batterie folgt aber in diesem Fall nicht der normalen 1 mA - Entladekurve, sondern erfolgt viel früher, siehe Peukert'sche Regel (Amp Hours and Beer). Hier kann man nur in tagelangen Versuchen die Entladung schätzen, indem man mit mehreren gleichartigen Batterien und verschiedenen Lastwiderständen einen "äquivalenten" Strom findet, der dem Stromverbrauch dieser Schaltung in etwa entspricht.
- Manche Hersteller empfehlen im Schlafzustand I/O Ports als Ausgang zu definieren, dies kann aber zu einem höheren Stromverbrauch führen. Ausprobieren geht über studieren.
- Das An- und Abschalten von externen Bauteilen, die zur Stützung einen eigenen Kondensator haben, führt zu Lade- und Entladeströmen, die nicht genutzt werden können.
- Manche externen Bauteile funktionieren paradoxerweise auch ohne eigene Stromversorgung (Stichwort "interne Schutzdioden"). Es reicht ein HIGH-Pegel an einer der Eingänge dieser ICs um sie am Laufen zu halten, was zu einem erheblichen Stromverbrauch führen kann. Beispiel: serieller Eingang des FT232BM von FTDI.
- Oft ist die maximale Betriebsdauer fast nur durch die Selbstentladung der versorgenden Batterie bestimmt, dann war allerdings die Entwicklung perfekt (bis vielleicht auf die Batteriewahl).
Spezielle Probleme im Bereich 1µA und darunter
Die Schaltung kann hier merkwürdige Effekte zeigen:
- geladene Kondensatoren lassen die Schaltung auch ohne Versorgung noch eine Weile funktionieren.
- Stützkondensatoren verbrauchen mitunter mehr Strom als die Schaltung (Leckströme)
- Z-Dioden sind mit Vorsicht zu gebrauchen, weil auch weit unterhalb der Z-Spannung ein Stromfluss im oberen µA-Bereich erfolgt! In Sperrichtung geschaltete Dioden können auch den Stromverbrauch erhöhen (Sperrstrom, besonders hoch bei Schottky-Dioden).
- Signalpegel von aussen können die gesamte Schaltung zum Laufen bringen.
- starke elektromagnetische Felder (Handy) oder Rundfunksender (eingekoppelte HF durch lange Anschlussleitung) schalten die Schaltung ein, können sogar zu einer Überspannung und Zerstörung führen.
- Batterie- oder Akkuspannung steigt nach dem Einschalten (vorübergehend) an.
- Die Schaltung wird empfindlich für elektrostatische Aufladungen, die dann gerne einen Reset auslösen. Allerdings gibt es bewährte Lösungen für diese Probleme.
- Selbstentladung von Batterien/Akkus beachten!
Die Frage des Schutzes einer Schaltung vor elektromagnetischen Feldern und statischer Aufladung sollte in einem anderen Artikel ausführlich beleuchtet werden.
Geeignete Stromquellen
Siehe auch Versorgung aus einer Zelle
- Li-Knopfzellen (z. B. 3V CR2032) haben eine sehr flache Entladekurve und hohe Energiedichte, gefürchtet bei Tauchern weil sie dann plötzlich bei Entladeschluss ausfallen.
- Alkali-Mangan (LR) Primärzellen sind besser als Zink-Kohle (R).
- Nickel-Cadmium Akkus sollte man eigentlich inzwischen vergessen (Memoryeffekt, giftiges Cadmium)
- Nickel-Metallhydrid Akkus haben leider eine niedrigere Spannung als Primärzellen (1,2V anstatt 1,5V).
- Kleine Solarzellen gekoppelt an Goldcaps oder Akkuzellen.
- Stromerzeugung durch Bewegung der Schaltung.
- Goldcaps haben leider oft hohe Innenwiderstände und die Entladekurve ist natürlich nicht flach.
- Stromversorgung durch ein äusseres elektromagnetisches Wechselfeld, siehe RFID.
- Lithium Primärzellen, wie z. B. CR123 oder CR2 (Fotobatterien 3V). Die Entladespannung ist recht stabil und bricht erst bei Entladeende stark ein.
Hinweis:
- Mikro (AAA/(L)R03) Primärzellen haben etwa 500-1300 mAh.
- Mignon (AA/(L)R06) Primärzellen haben etwa 900-3000 mAh.
- Lithium CR123 hat etwa 1600 mAh, bis etwa 1A belastbar, Puls 2-3 A.
- Lithium CR2 hat etwa 800-1000 mAh, bis 1A belastbar, Puls 2-3 A
- Knopfzellen, z.B. CR2032, sind nur mit geringen Strömen belastbar, maximal 5-20 mA Dauerstrom. (<- Woher stammt diese Angabe? Standard-Knopfzellen mit Lithium-Mangandioxid-Technologie erlauben einen Nenn-Entladestrom von 200µA um die Nennkapazität aus der Batterie entnehmen zu können, siehe z.B. http://biz.maxell.com/files_etc/9/catalog/en/CR_12e.pdf Hohe/Höhere Ströme beeinträchtigen die Lebensdauer der Knopfzellen signifikant.)
Die Entladekurve von Primärzellen ist in etwa eine Gerade. Eine volle Zelle hat etwas mehr als 1,5 V und bei 0,8 bis 1,0 V ist Schluss. Akkus haben dagegen eine Klemmenspannung, die zu Beginn deutlich abfällt, dann einigermaßen stabil bleibt um schliesslich recht plötzlich abzufallen. Die Kapazität ist vom Strom selbst abhängig, siehe Peukert`sche Regel. Bei hohen Entladeströmen nimmt die zur Verfügung stehende Energiemenge ab (gilt vor allem auch für hohe Pulsströme).
Thema Selbstentladung von Batterien (Primärzellen)
Wir können in etwa von einer Selbstentladung von 1-5% der Kapazität pro Jahr ausgehen. Dabei ist noch zu beachten, daß Batterien aber nicht ewig benutzbar sind und bei der Lieferung schon eine gewisse Zeit gelagert waren. Daher ist es seriös davon auszugehen, daß eine Batterie bei Betriebsbeginn nur noch die Hälfte der theoretischen Kapazität hat. Über diesen Wert und mit Hilfe von mittlerem Stromverbrauch + Selbstentladung kann man dann bei Zimmertemperatur etwa die maximale Betriebsdauer abschätzen.
Beispiele:
AAA/LR03/Micro Zelle mit 1000 mAh. Selbstentladung angenommen 5%/Jahr. Der "virtuelle" Entladestrom wäre dann circa 6µA.
CR2032 Lithium Mangandioxid mit 235mAh. Selbstentladung 1%/Jahr. Selbstenladestrom: 235mAh * 1% / 1yr = 0,27µA
Selbstentladung von Akkus
Sekundärzellen entladen sich sehr viel schneller als Primärzellen. Bei Bleisäurezellen liegt der Verlust bei ca 5% im Monat. Nickel-Metallhydridzellen können 10 bis 30 % pro Monat verlieren, am meisten innerhalb der ersten 24 Stunden. Nach 3 Monaten können 80% der Ladung nicht mehr zur Verfügung stehen. Faustformel: 1% / Tag. Hohe Temperaturen erhöhen die Selbstentladung. NiMH der nächsten Generation (z. B. Panasonic eneloop) haben deutlich geringere Selbstentladung, ca. 15 % pro Jahr.
Weblinks
- http://www.batteryuniversity.com/
- NiMh Battery Shoot Out
- Ultra-Low-Power-Oszillator z.B. für Ladungspumpe
- Forumsbeitrag: Aktive Nachbildung einer HV-Z-Diode, Linearregler für 2kV/2µA
- Spannungsversorgung für batteriebetriebene Geräte
- CR2032 behavior, Low power Tips für Knopfzellen