Raspberry Pi Pico W: Messung des Stromverbrauchs

Wie viel Strom verbraucht ein Raspberry Pi Pico W eigentlich? Je nach Quelle bekommt man Werte zwischen 20 und 30 mA. Wir wollen wissen, ob das richtig ist.

Den Stromverbrauch zu wissen ist dann wichtig, wenn man einen Raspberry Pi Pico W an einem Akku oder einer Batterie betreiben möchte. Dann sollte der Stromverbrauch so gering wie möglich sein, damit die Spannungsquelle möglichst lange hält.

  • Messgerät: USB- und DC-Power-Monitor von Portapow
  • Messaufbau: Messung in der USB-Verbindung zwischen Host-Computer und Raspberry Pi Pico W

Messungen

  1. Ohne Programmcodeausführung
  2. Laufendes Programm mit blinkender Onboard-LED
  3. Nachdem eine WLAN-Verbindung aufgebaut wurde
  4. Laufendes Programm mit aktiver WLAN-Verbindung
  5. Laufendes Programm mit beendeter WLAN-Verbindung
  6. WLAN deaktiviert

Messung 1: Ohne Programmcodeausführung

Die erste Messung führen wir ohne Programmausführung durch. Dadurch können wir feststellen, ob der Messaufbau grundsätzlich korrekt ist.
Die folgenden Messwerte stellen sich ein nachdem der Raspberry Pi Pico mit dem MicroUSB-Kabel verbunden wurde. Das ist der sogenannte Ruhezustand.

  • Spannung: 5,051 V
  • Strom: 0,019 A (19 mA)

Achtung, der kurzzeitig auftretende Einschaltstrom liegt deutlich höher. Er war aber mit dem vorhandenen Messgerät nicht exakt zu ermitteln.

Messung 2: Laufendes Programm mit blinkender Onboard-LED

Bei der zweiten Messung geht es darum ein einfaches Programm mit einer blinkenden Onboard-LED auszuführen und dabei den Stromverbrauch zu ermitteln.

  • Spannung: 5,048 V
  • Strom: 0,031 A (LED aus), 0,034 A (LED an)

Bei der Ausführung eines Programms steigt der Strom auf etwas über 0,03 A. Zusätzliche angeschlossene Bauteile vergrößern den Strom. Beispielhaft die Onboard-LED, wenn sie leuchtet.

# Bibliotheken laden
from machine import Pin
from time import sleep

# Initialisierung der Onboard-LED
led_onboard = Pin("LED", Pin.OUT)

# Wiederholung (Endlos-Schleife)
while True:
    # LED-Zustand wechseln (EIN/AUS)
    led_onboard.toggle()
    # 1 Sekunde warten
    sleep(1)

Hinweis: Die Onboard-LED auf dem Pico W ist mit dem WLAN-Chip und nicht mit dem RP2040 verbunden. Das bedeutet, nutzt man diese Onboard-LED, dann wird automatisch auch dieser Chip aktiviert, der dann auch Strom verbraucht.

Messung 3: Nachdem eine WLAN-Verbindung aufgebaut wurde

Bei dieser Messung geht es darum, herauszufinden, wie viel eine WLAN-Verbindung zusätzlich an Strombedarf aufweist.
Bei der Ausführung des Programms wird die WLAN-Verbindung hergestellt. Nachdem die Verbindung hergestellt wurde, wird der Programmcode automatisch beendet (die WLAN-Verbindung bleibt bestehen) und danach die Messung durchgeführt.

  • Spannung: 5,057 V
  • Strom: 0,041 A

Beim Herstellern der WLAN-Verbindung steigt der Strom auf etwas über 0,01 A an. Exakt ließ sich das nicht ermitteln.
Im Ruhezustand mit WLAN-Verbindung beträgt der Strom 0,039 A. Gelegentlich steigt der Stromverbrauch auf etwas über 0,05 A an (vermutlich sind das WLAN-interne Übertragungen).

# Bibliotheken laden
import machine
import network
import rp2
import time

# WLAN-Konfiguration
wlanSSID = 'WLANNAME'
wlanPW = 'WLANPASSWORD'
rp2.country('DE')

# Status-LED
led_onboard = machine.Pin('LED', machine.Pin.OUT, value=0)

# WLAN-Verbindung herstellen
wlan = network.WLAN(network.STA_IF)
if not wlan.isconnected():
    print('WLAN-Verbindung herstellen')
    wlan.active(True)
    wlan.connect(wlanSSID, wlanPW)
    for i in range(10):
        if wlan.status() < 0 or wlan.status() >= 3:
            break
        led_onboard.toggle()
        print('.')
        time.sleep(1)

# WLAN-Verbindung prüfen
if wlan.isconnected():
    print('WLAN-Verbindung hergestellt / WLAN-Status:', wlan.status())
    led_onboard.on()
    ipconfig = wlan.ifconfig()
    print('IPv4-Adresse:', ipconfig[0])
else:
    led_onboard.off()
    print('WLAN-Status:', wlan.status())
    raise RuntimeError('Keine WLAN-Verbindung')

# WLAN-Verbindung beenden
wlan.disconnect()
print('WLAN-Verbindung beendet')

Messung 4: Laufendes Programm mit aktiver WLAN-Verbindung

Mit „aktiver WLAN-Verbindung“ ist gemeint, dass die Verbindung zum WLAN hergestellt ist und gerade für eine Übertragung genutzt wird. Im Programmcode lösen wir das durch das Initiieren eines HTTP-Requests. Die Messung erfolgt nach dem Drücken des Tasters, der den Request auslöst.

  • Spannung: 5,056 V
  • Strom: schwankt zwischen 0,041 und 0,063 A

Nicht ganz unerwartet, ist der Stromverbrauch während der aktiven Verbindung nicht konstant, sondern steigt schnell an, fällt ab und steigt erneut an. Der maximale Strom hat bei 0,063 A gelegen. Es kann sein, dass er auch noch darüber liegt.

# Bibliotheken laden
import machine
import network
import rp2
import time
import requests

# WLAN-Konfiguration
wlanSSID = 'WLANNAME'
wlanPW = 'WLANPASSWORD'
rp2.country('DE')

# Status-LED für die WLAN-Verbindung
led_onboard = machine.Pin('LED', machine.Pin.OUT, value=0)

# WLAN-Verbindung herstellen
wlan = network.WLAN(network.STA_IF)
if not wlan.isconnected():
    print('WLAN-Verbindung herstellen')
    wlan.active(True)
    wlan.connect(wlanSSID, wlanPW)
    for i in range(10):
        if wlan.status() < 0 or wlan.status() >= 3:
            break
        led_onboard.toggle()
        print('.')
        time.sleep(1)

# WLAN-Verbindung prüfen
if wlan.isconnected():
    print('WLAN-Verbindung hergestellt / WLAN-Status:', wlan.status())
    led_onboard.on()
    ipconfig = wlan.ifconfig()
    print('IPv4-Adresse:', ipconfig[0])
else:
    led_onboard.off()
    print('WLAN-Status:', wlan.status())
    raise RuntimeError('Keine WLAN-Verbindung')

# Button initialisieren
btn = machine.Pin(15, machine.Pin.IN, machine.Pin.PULL_UP)
print()
print('Bitte Taster drücken')

# Funktion zur Taster-Auswertung
while True:
    time.sleep_ms(100)
    if not btn.value():
        print()
        print('Taster wurde gedrückt')
        print('HTTP-Request wird gesendet')
        # HTTP-Request senden
        request = requests.get('https://www.elektronik-kompendium.de/')
        # HTTP-Response-Status-Code ausgeben
        print('Status-Code:', request.status_code)
        # Verbindung schließen
        request.close()
        print()
        print('Bitte Taster drücken')

Messung 5: Laufendes Programm mit beendeter WLAN-Verbindung

Wenn man die vorherigen Messungen betrachtet, dann braucht eine passive WLAN-Verbindung rund 0,01 A mehr Strom nachdem diese Verbindung aufgebaut wurde. Die Frage ist, ist das grundsätzlich so? Wie viel Strom kann man sparen, wenn man die WLAN-Verbindung wieder beendet, wenn man sie nicht mehr braucht?

Wir starten ein Programm, dass eine WLAN-Verbindung aufbaut und danach wieder abbaut. Wir lesen die Messwerte ab und vergleichen sie mit Messung 3.

  • Spannung: 5,058 V
  • Strom: 0,038 A

Vergleicht man den gemessenen Strom mit der Messung 3 dann braucht eine passive WLAN-Verbindung nur etwa 0,003 A (3 mA) mehr Strom. Das Beenden der WLAN-Verbindung bringt also nicht viel Stromersparnis.

# Bibliotheken laden
import machine
import network
import rp2
import time

# WLAN-Konfiguration
wlanSSID = 'WLANNAME'
wlanPW = 'WLANPASSWORD'
rp2.country('DE')

# WLAN-Status-LED
led_onboard = machine.Pin('LED', machine.Pin.OUT, value=0)

# WLAN-Verbindung herstellen
wlan = network.WLAN(network.STA_IF)
if not wlan.isconnected():
    print('WLAN-Verbindung herstellen')
    wlan.active(True)
    wlan.connect(wlanSSID, wlanPW)
    for i in range(10):
        if wlan.status() < 0 or wlan.status() >= 3:
            break
        led_onboard.toggle()
        print('.')
        time.sleep(1)

# WLAN-Verbindung prüfen
if wlan.isconnected():
    print('WLAN-Verbindung hergestellt / WLAN-Status:', wlan.status())
    led_onboard.on()
    ipconfig = wlan.ifconfig()
    print('IPv4-Adresse:', ipconfig[0])
else:
    led_onboard.off()
    print('WLAN-Status:', wlan.status())
    raise RuntimeError('Keine WLAN-Verbindung')

# LED ausschalten
led_onboard.off()
print('Ende')

Messung 6: WLAN deaktivieren

Die Frage ist, ob man den Raspberry Pi Pico W so betreiben kann, dass er nicht mehr Strom verbraucht, als ein normaler Pico (ohne WLAN). Das wollen wir mit dieser Messung klären.
Dazu wird im folgenden Programmcode das WLAN aktiviert, ein WLAN-Scan durchgeführt und anschließend das WLAN deaktiviert.

  • Spannung: 5,071 V
  • Strom: 0,019 A
# Bibliotheken laden
import network

# WLAN-Interface aktivieren
wlan = network.WLAN(network.STA_IF)
wlan.active(True)

# WLANs ausgeben
print(wlan.scan())

# WLAN deaktivieren
wlan.active(False)
wlan.deinit()

Mehr Informationen zur Stromversorgung

Raspberry Pi Pico: Stromverbrauch und Messungen

Weitere verwandte Themen:

Frag Elektronik-Kompendium.de

Elektronik-Set Pico WLAN Edition

Elektronik-Set Pico WLAN Edition

Hardware-nahes Programmieren mit dem Mikrocontroller Raspberry Pi Pico W und MicroPython.

  • Raspberry Pi Pico W mit gelöteten Stiftleisten
  • Spezielles Steckbrett mit GPIO-Beschriftung
  • Einführung ins Hardware-nahe Programmieren
  • Schwerpunkte: WLAN, MQTT und Internet
  • Deutschsprachige Anleitung als PDF-Datei zum Download

In unseren Online-Workshops bieten wir intensiven Erfahrungsaustausch in kleinen Gruppen und Unterstützung bei individuellen Problemen.

Elektronik-Set jetzt bestellen Online-Workshop buchen

Online-Workshop: Programmieren mit dem Raspberry Pi Pico

Programmieren mit dem Raspberry Pi Pico

Gemeinsam mit anderen und unter Anleitung experimentieren? Wir bieten unterschiedliche Online-Workshops zum Raspberry Pi Pico und MicroPython an. Einführung in die Programmierung, Sensoren programmieren und kalibrieren, sowie Internet of Things und Smart Home über WLAN und MQTT.

Online-Workshop buchen

Besuchen Sie unser fast monatlich stattfindendes Online-Meeting PicoTalk und lernen Sie uns kennen. Die Teilnahme ist kostenfrei.

Termine und Newsletter-Anmeldung

 

Elektronik-Sets für das Hardware-nahe Programmieren