Den Stromverbrauch eines Mikrocontrollers mit dem Nordic Power Profiler-Kit II messen
Wenn es um das Messen von Strömen geht, denkt man normalerweise sofort an ein Multimeter. In vielen Fällen reicht das auch völlig aus, ganz egal ob es um viele Ampere oder wenige Mikroampere geht. Bei Mikrocontrollern ist die Sache aber etwas schwieriger, wie ich beim Messen des Stromverbrauchs der Wetterstation-Sensoren feststellen musste.
Die Grenzen des Multimeters
Aber was ist jetzt das eigentliche Problem mit einem Multimeter? Zunächst einmal kann das Multimeter immer nur den aktuellen Wert des Stromverbrauchs liefern. Es ist nicht möglich, den durchschnittlichen Verbrauch über einen bestimmten Zeitraum zu ermitteln. Das ist aber besonders wichtig, wenn man wissen will, wie energieeffizient die Hardware und Software sind.
Ein weiteres Problem ist die Tatsache, dass der Stromverbrauch eines Mikrocontrollers extrem schwanken kann. Von einigen hundert Milliampere bei der intensiven Verwendung der eingebauten Komponenten bis zu wenigen Mikroampere im Deep Sleep Modus. Um das Problem zu verstehen, muss man den internen Aufbau eines Multimeters kennen. Üblicherweise würde man zur Messung dieses Setup verwenden:
Das Messgerät wird also in Reihe zur Stromversorgung geschaltet. Im Multimeter sind intern Widerstände verbaut, an denen je nach Stromstärke eine gewisse Spannung abfällt. Für jeden Messbereich, also Ampere, Milliampere oder Mikroampere, werden unterschiedliche Widerstände verwendet. Das ist das Grund, warum man überhaupt den Messbereich umschalten muss. Diese Werte können ganz einfach mit einem Ohmmeter gemessen werden. Bei meinem Multimeter sind es folgende Werte:
Ampere: | 1,3 Ω |
Milliampere: | 3,3 Ω |
Mikroampere: | 102,8 Ω |
Der Mikrocontroller verhält sich aus Sicht der Stromversorgung auch wie ein Widerstand. Das vereinfachte Schaltbild sieht dann folgendermaßen aus:
Was passiert nun, wenn man das Multimeter vor den Mikrocontroller schaltet? Dazu müssen die Spannungen berechnet werden, die an den einzelnen Widerständen abfallen. Der Widerstand des Multimeters ist für jeden Messbereich bekannt, es fehlt aber noch der Widerstand des Mikrocontrollers. Der lässt sich aber ganz leicht ausrechnen. Ich gehe davon aus, dass der Mikrocontroller maximal 300 mA benötigt, im Deep Sleep Modus aber nur 15 µA. Aus dem Ohm’schen Gesetzt R = U / I ergeben sich jeweils die Werte 16,6 Ω bzw. 333,3 kΩ. Mit der Formel für einen Spannungsteiler U = (UTot * RX) / (R1 + R2) können jetzt die Spannungen berechnet werden. Es ergeben sich folgende Werte, je nachdem ob das Multimeter der Milliampere oder Mikroampere Betriebsart ist:
Betriebsart | UMultimeter | UMikrocontroller | Modus |
---|---|---|---|
Milliampere | 0,83 V | 4,17 V | Volllast |
Mikroampere | 4,3 V | 0,7 V | |
Milliampere | 0,0000495 V | 4,9999505 V | Deep Sleep |
Mikroampere | 0,0015 V | 4,9985 V |
Was lässt sich aus dieser Tabelle ablesen? Wenn das Multimeter im Milliampere-Modus betrieben wird, funktioniert der Mikrocontroller wie erwartet, da die benötigte Spannung lediglich 3,3 V beträgt. Die Anzeige ist jedoch so ungenau, dass präzise Werte für den Deep Sleep Modus nicht ermittelt werden können. Auch in der Betriebsart Mikroampere arbeitet der Mikrocontroller normal, solange er sich im Deep Sleep Modus befindet. Sobald er aber unter voller Last läuft, fällt am Innenwiderstand des Multimeters so viel Spannung ab, dass der Mikrocontroller nicht mehr ausreichend versorgt wird. Dieses Phänomen nennt man Brownout, im Gegensatz zum sogenannten Blackout, wo die Spannung komplett ausfällt.
Power Profiler-Kit II
Diese beiden Probleme löst das Power Profiler-Kit II (PPK2) von Nordic Semiconductor. Mit diesem Tool ist es möglich, den Stromverbrauch in Echtzeit zu messen, wobei automatisch zwischen fünf Strommessbereichen umgeschaltet wird. Ich habe mein Power Profiler-Kit II bei Digi-Key für knapp 100 Euro gekauft. Das ist zwar für den Hobbybereich nicht gerade billig, aber andere vergleichbare Geräte sind wesentlich teurer.
Die wichtigsten Merkmale des Power Profiler-Kit II sind
- Präzise Strommessung: Der PPK2 kann Ströme von 200 nA bis 1 A mit einer Auflösung von 100 nA bis 1 mA messen. Dies ermöglicht die genaue Messung des Stromverbrauchs in verschiedenen Betriebszuständen, selbst bei sehr niedrigen Leistungsaufnahmen.
- Flexible Stromversorgung: Der PPK2 kann entweder als Stromquelle (Source measure unit mode) oder als Strommessgerät (Ampere meter only mode) verwendet werden. Im Stromquellen-Modus kann der PPK2 eine per Software einstellbare Spannung von 0,8 V bis 5,0 V und einen Strom von 1 µA bis 1 A liefern.
- Digitale Eingänge: Das PPK2 verfügt über acht digitale Eingänge, die als einfacher Logikanalysator verwendet werden können. Dies ermöglicht die Korrelation von Stromverbrauchsmessungen mit Software-Ereignissen.
- Sample Rate: Die Sample Rate des PPK2 kann von 100 Hz bis 100 kHz eingestellt werden. Dies ermöglicht die Auswahl der optimalen Auflösung und Aktualisierungsrate für die Messung.
- Standalone-Gerät: Das PPK2 ist ein eigenständiges Gerät, das keine zusätzliche Hardware benötigt. Es kann einfach über ein USB-Kabel mit einem PC oder Mac verbunden werden.
Bevor das PPK2 benutzt werden kann, muss zunächst der nRF Connect for Desktop installiert werden. Innerhalb dieser Applikation wird anschließend die Power-Profiler App installiert. Beim ersten Start installiert diese App auch gleich die Firmware für das Power Profiler-Kit II. Auf der Website von Nordic Semiconductor gibt es dazu eine ausführliche Dokumentation.
Damit ist die Installation auch schon abgeschlossen. Jetzt kann gemessen werden. Ich verwende das PPK2 im Source Measure Unit Modus. In diesem Modus müssen lediglich die Pins VOUT und GND mit dem Mikrocontroller verbunden werden.
In der Applikation wird zunächst der PPK2 ausgewählt. Die Versorgungsspannung stelle ich in meinem Fall auf 4,2 V ein, was einem geladenen Lithium-Ionen-Akku entspricht. Zuletzt wird die Sample Rate eingestellt und wie lange die Messung dauern soll. Sobald man jetzt auf den Start-Button drückt, beginnt die Messung.
Wie viel Strom verbrauchen die Wetterstation-Sensoren wirklich?
In meinem Artikel über die ESP32 Wetterstation konnte ich den Stromverbrauch nur ungefähr abschätzen. Nur beim Deep-Sleep-Modus gelang es mir, mithilfe eines Tricks den Verbrauch genau zu messen. Die Neugierde war also sehr groß, wie hoch die Werte tatsächlich sind.
Hier zunächst ein Screenshot, der den Stromverbrauch im Deep Sleep Modus anzeigt. Die 13,04 µA liegen sehr nahe an den 12,8 µA, die das Multimeter angezeigt hat.
Der zweite Screenshot zeigt den Verbrauch im aktiven Modus. Wie man sieht, steigt der Wert kurzfristig auf über 300 mA an. In dieser Zeitspanne ist das WLAN-Modul aktiv und sendet die Daten. Der durchschnittliche Wert von 50,23 mA ist aber deutlich geringer als die 200 mA, die ich damals angenommen habe.
Der letzte Screenshot zeigt schließlich den Durchschnitt über ein Intervall von 10 Minuten. Das ist genau die Zeitspanne, die sich der Sensor im Deep Sleep Modus befindet und anschließend wieder Daten schickt. Der PPK2 gibt hier einen Wert von 80,4 µA an.
Damit lässt sich jetzt ganz einfach ausrechnen, wie lange ein Lithium-Ionen-Akku durchhalten würde. Bei einer Kapazität von 2000 mAh ergibt das 2000 mAh / 0,0804 mA = 24.876 Stunden. Das sind 1036 Tage, also fast drei Jahre. Ich habe mich hier immerhin um den Faktor 3 verschätzt! Mit diesem Wissen frage ich mich natürlich, ob die ganze Ladeelektronik überhaupt notwendig war. Alle drei Jahre den Akku laden ist nicht so schlimm...
Ich denke, deutlicher kann man nicht zeigen, wie wichtig so ein Tool sein kann. Meine Wetterstation ist kein kommerzielles Produkt, also ist es in dem Fall egal, aber im professionellen Bereich wären diese Informationen sehr wichtig. Ich bin jedenfalls sehr froh, dass ich mir das Power Profiler-Kit II zugelegt habe, auch wenn ich es wahrscheinlich nicht sehr oft brauchen werden.