Forum: Mikrocontroller und Digitale Elektronik Pi Pico: Stromverbrauch senken (Sleep)


von Felix (felix_1507)


Lesenswert?

Hallo zusammen,

ich stehe derzeit vor dem Problem, den Stromverbrauch des Raspberry Pi 
Pico für ein automatisches Gießsystem zu reduzieren. Für meine Anwendung 
möchte ich zweimal am Tag 5 Sensoren auslesen und je nach Ergebnis die 
Pumpen ansteuern. Anschließend soll der Mikrocontroller wieder in den 
Schlafmodus versetzt werden. Der Pico soll auch durch Betätigung eines 
Knopfes geweckt werden können, um externe Einstellungen vornehmen zu 
können. Die Programmierung soll nach derzeitigem Stand in MicroPython 
erfolgen. Allerdings habe ich festgestellt, dass die Schlafmodi dort 
noch nicht wie in C implementiert sind. Weiß jemand, wie man das am 
besten lösen kann?

Zur Verfügung steht eine 18650-Batterie mit einer Kapazität von ca. 3000 
Milliamperestunden. Die Laufzeit soll 2 Wochen betragen. Bei einem 
Ruhestrom von nur 6 Milliampere würden bereits 2016 Milliamperestunden 
in 2 Wochen verbraucht werden, was den Großteil der Batteriekapazität 
ausmacht. Ist es realistisch, den Stromverbrauch auf diesen Wert zu 
reduzieren und gleichzeitig die erforderlichen Funktionen zu erfüllen? 
Im normalen Modus benötigt der Pico etwa 26 Milliampere, was deutlich zu 
hoch ist, wie ich gelesen habe.

Vielen Dank für eure Hilfe.

von H. H. (Gast)


Lesenswert?

Felix schrieb:
> Für meine Anwendung
> möchte ich zweimal am Tag 5 Sensoren auslesen und je nach Ergebnis die
> Pumpen ansteuern.

Und sowas muss man in Python programmieren?

von Keks F. (keksliebhaber)


Lesenswert?

Das Problem ist die falsche Konzeption mit dem falschen Mikrokontroller.
Meinst du ernsthaft, es ist für ein batteriebetriebenes Gerät, auch noch 
ein Gießsystem, sinnvoll, alle 2 Wochen die Batterien wechseln zu 
müssen?
Solange du die Pumpen nur per Funk ansteuerst, kannst du das mit einem 
vernünftigen Kontroller per Knopfzelle machen, und selbst da hält das 
Teil 5 Jahre.

H. H. schrieb:
> Und sowas muss man in Python programmieren?

Das liegt an der "Makerspace" Abzock-Influencer-Fraktion.
Als Neuling, wenn du dich da einarbeiten möchtest, und etwas googlest, 
hast du keine Chance und fällst garantiert in den 
Arduino-RaspberryPi-Schwachsinn, und kaufst überteuerte, veraltete 
Komponenten und betreibst die in schlechten bis gefährlichen 
Schaltungen, zusammengehalten mit kopiertem "Code".
Ich habe auch noch unzählige Arduino Nanos, 2 RPi Zero W, 9V 
Lithium-Blockbatterien, verschiedene andere Batterien, etc. aus dieser 
Zeit hier.

: Bearbeitet durch User
von Falk B. (falk)


Lesenswert?

Felix schrieb:
> ich stehe derzeit vor dem Problem, den Stromverbrauch des Raspberry Pi
> Pico für ein automatisches Gießsystem zu reduzieren. Für meine Anwendung
> möchte ich zweimal am Tag 5 Sensoren auslesen und je nach Ergebnis die
> Pumpen ansteuern.

Dafür reicht der kleinste Arduino Nano. Der kann schlafen, wenn gleich 
man da ggf. an der Hardware was machen muss, u.a. die Power-LED ablöten. 
Der RP2040 ist für sowas maximaler Overkill, dazu braucht es keine 32 
Bit CPU mit 133MHz.

von Rainer W. (rawi)


Lesenswert?

Felix schrieb:
> Zur Verfügung steht eine 18650-Batterie mit einer Kapazität von ca. 3000
> Milliamperestunden.

> Im normalen Modus benötigt der Pico etwa 26 Milliampere, was deutlich
> zu hoch ist, wie ich gelesen habe.

Bist du sicher, dass du das richtig verstanden hast. Warum soll das zu 
hoch sein?

von Axel S. (a-za-z0-9)


Lesenswert?

H. H. schrieb:
> Felix schrieb:
>> Für meine Anwendung
>> möchte ich zweimal am Tag 5 Sensoren auslesen und je nach Ergebnis die
>> Pumpen ansteuern.
>
> Und sowas muss man in Python programmieren?

Wenn man nur einen Hammer hat, sieht jedes Problem aus wie ein Nagel.

von Dominik (50hz)


Lesenswert?

Keks F. schrieb:
> Das liegt an der "Makerspace" Abzock-Influencer-Fraktion.
> Als Neuling, wenn du dich da einarbeiten möchtest, und etwas googlest,
> hast du keine Chance und fällst garantiert in den
> Arduino-RaspberryPi-Schwachsinn, und kaufst überteuerte, veraltete
> Komponenten und betreibst die in schlechten bis gefährlichen
> Schaltungen, zusammengehalten mit kopiertem "Code".
> Ich habe auch noch unzählige Arduino Nanos, 2 RPi Zero W

Welcher Mikrocontroller würdest Du stattdessen vorschlagen? Ich finde 
ehrlich gesagt die Arduino-IDE sehr komfortabel, ebenso die Möglichkeit 
die Arduino- und ESP-Dev-Boards ohne Umwege über irgendwelche Programmer 
direkt über USB zu programmieren. Ich bin froh, dass die Zeiten vorbei 
sind, wo man uC nur mit speziellen (z.T. teuren) Programmern 
programmieren/brennen konnte und jeder Hersteller eine eigene, komplexe 
IDE hatte, die irgendwann nicht mehr lief.
Mich nervt es allerdings auch, dass man die Boards nicht Batteriebetrieb 
kompatiblel entwickelt hat. Ein paar kleines Jumper um 
USB-Schnittstelle, on-board-Regler, Status-LED später abzuschalten, wäre 
nicht die Welt gewesen.

von Keks F. (keksliebhaber)


Lesenswert?

Ein bisschen Informationen wären nicht schlecht.
Wie ist der Aufbau? Welche Sensoren? Wie werden welche Pumpen 
angesteuert?
Man kann durchaus einen Nano nehmen, allerdings sind da noch LED und 
andere Komponenten drauf, Ruhestrom ist nach dem Entfernen der LED bei 
2mA.
Ich nehme für meinen ganzen Kram ATTinys der 2-Series. Sind mit 
Arduino-Bibliotheken kompatibel (Google: Megatinycore). Brauchst aber 
entsprechende Platinen bzw. Breadboardformate, je nachdem was du selber 
machen kannst.
Davon ausgehend, dass die Pumpen per Funk angesteuert werden, würde ich 
für mit einen entsprechen ATTiny nehmen (weil ich den habe und den halt 
immer verwende), NRF24L01 als Funkmodul, und Stromversorgung entweder 
über 2AAAs oder 1 2450 Knopfzelle.
Funkmodul ist ein Transceiver, kann also über Knopfdruck auch mal in den 
Receiver-Modus umgeschaltet werden für 5 Minuten um dann eine neue 
Konfiguration aufzuspielen.
Gegenseite (Pumpe und Programmierer) brauchen dann auch entsprechendes 
Funkmodul.
Du kannst auch deinen jetzigen Kram per externem Timer-Modul 
entsprechend an- bzw. ausschalten lassen.

Dominik schrieb:
> Mich nervt es allerdings auch, dass man die Boards nicht Batteriebetrieb
> kompatiblel entwickelt hat.

Naja, was heißt nicht dafür.
Die sind für fast alles schlecht. Willkommen im Makerspace.
Man muss aber auch zugeben, Langzeitbatteriebetrieb ist eine Nische. Da 
suchst du schon vernünftige Komponenten raus und lässt deine Platine 
anfertigen. Ruheströme kannst du dann in der Regel nicht mehr (genau) 
mit einem Multimeter messen.
Du schreibst ja selber, du willst keinen Programmierer, im Prinzip 
nichtmal einen USB-TTL-Adapter verwenden. Da musst du schon Abstriche 
machen.
Außerdem, man soll ja Batterien und Akkus verkaufen können.

: Bearbeitet durch User
Beitrag #7414157 wurde vom Autor gelöscht.
von Jack V. (jackv)


Lesenswert?

Um mal zur Frage zurückzukommen:

Felix schrieb:
> Ist es realistisch, den Stromverbrauch auf diesen Wert zu
> reduzieren und gleichzeitig die erforderlichen Funktionen zu erfüllen?
> Im normalen Modus benötigt der Pico etwa 26 Milliampere

Mit machine.lightsleep() kommt man auf 1,5mA

von Mi N. (msx)


Lesenswert?

Jack V. schrieb:
> Felix schrieb:
>> Ist es realistisch, den Stromverbrauch auf diesen Wert zu
>> reduzieren und gleichzeitig die erforderlichen Funktionen zu erfüllen?
>> Im normalen Modus benötigt der Pico etwa 26 Milliampere
>
> Mit machine.lightsleep() kommt man auf 1,5mA

Gibt es in Python nicht irgendeine Funktion mit "dormant" im Namen?
Der Zustand "dormant" ist dazu geeignet, Strom zu sparen und per RTC 
oder einem Ereignis an einem GPIO den Controller wieder aufzuwecken.

von Jack V. (jackv)


Lesenswert?

Mi N. schrieb:
> Gibt es in Python nicht irgendeine Funktion mit "dormant" im Namen?

Ist, soweit ich weiß, nicht in Micropython implementiert.

von Felix (felix_1507)


Lesenswert?

Keks F. schrieb:
> Ein bisschen Informationen wären nicht schlecht.
> Wie ist der Aufbau? Welche Sensoren? Wie werden welche Pumpen
> angesteuert?

Der Aufbau besteht darin, dass alle Komponenten in einer Box platziert 
werden. Die Stromversorgung erfolgt über einen Akku für alle Komponenten 
(Pumoen, Sensoren, Mikrocontroller).
Sensoren 5x:
https://www.reichelt.de/entwicklerboards-feuchtesensor-bodenfeuchte--debo-cap-sens-p223620.html?PROVID=2788&gclid=Cj0KCQjwsIejBhDOARIsANYqkD17UhHC_uDfN9akke2dn32J0dJAT4lk2k69KzEJ1NHktBdLFIwyV1waAiB1EALw_wcB
Pumpen 5x: 5V, 200mA

Die Box fungiert als Wassertank mit integrierter Elektronik, die sicher 
vom Wasser isoliert ist. Aufgrund der fortgeschrittenen Entwicklung des 
Projekts auf Raspberry Pi-Basis habe ich leider keine andere Wahl, als 
weiterhin einen Pi zu verwenden.
Gibt es eine Lösung, um den Raspberry Pi in den Schlafmodus zu versetzen 
und ihn einmal täglich durch ein Timermodul oder ähnliches aufzuwecken? 
Wenn dies nicht möglich ist, muss ich die Stromversorgung über ein 
Netzteil realisieren.

Jack V. schrieb:
> Mit machine.lightsleep() kommt man auf 1,5mA

Dazu habe ich viele Widersprüchliche Informationen gefunden. Es gibt 
einige die sagen, dass das nur mit C Programmierung möglich ist. Mit 
Micropython sind es anscheindn ~20mA.

Mi N. schrieb:
> Der Zustand "dormant" ist dazu geeignet, Strom zu sparen und per RTC
> oder einem Ereignis an einem GPIO den Controller wieder aufzuwecken.

Das ist in MicroPython anscheindn noch nicht ordentlich implementiert 
und funktuioniert nicht.

Auf dieser Seite ganz unten steht das: 
https://www.elektronik-kompendium.de/sites/raspberry-pi/2802131.htm


Falls es keine Möglichkeit gibt, bleibt noch ein Netzteil. Keine schöne 
Lösung, aber würde funktionieren.

: Bearbeitet durch User
von Jack V. (jackv)


Lesenswert?

Felix schrieb:
> Dazu habe ich viele Widersprüchliche Informationen gefunden. Es gibt
> einige die sagen, dass das nur mit C Programmierung möglich ist. Mit
> Micropython sind es anscheindn ~20mA.

Tatsächlich war ich mir wegen des tatsächlichen Stroms nicht mehr so 
sicher und hab’s deswegen schnell nachgemessen, bevor ich was Falsches 
schreibe. Daher kann ich dir mit Sicherheit sagen, dass 1,5mA mit dieser 
Funktion in der Praxis erreichbar sind. Braucht allerdings eine aktuelle 
Micropython-Version, sprich 1.20

Was spricht gegen ein Ausprobieren?

: Bearbeitet durch User
von Felix (felix_1507)


Lesenswert?

Jack V. schrieb:
> Tatsächlich war ich mir wegen des tatsächlichen Stroms nicht mehr so
> sicher und hab’s deswegen schnell nachgemessen, bevor ich was Falsches
> schreibe. Daher kann ich dir mit Sicherheit sagen, dass 1,5mA mit dieser
> Funktion in der Praxis erreichbar sind. Braucht allerdings eine aktuelle
> Micropython-Version, sprich 1.20
>
> Was spricht gegen ein Ausprobieren?

Cool, danke fürs nachmessen. Ich kann das leider selbst nicht machen, da 
ich den Pi gerade nicht da habe. Wie funktioniert das Aufwecken aus dem 
Sleep Modus? Kann dabei aktiv auf z.B. ein High eines GPIO gewartet 
werden und ist ein automatisches verlassen des Modus nach z.B. 12h (mit 
RTC) möglich?

Wie sehr ist der Ruhestrom abhöngig von den angeschlossenen Komponenten?

von Uwe D. (monkye)


Lesenswert?


: Bearbeitet durch User
von Rainer W. (rawi)


Lesenswert?

Felix schrieb:
> Cool, danke fürs nachmessen. Ich kann das leider selbst nicht machen, da
> ich den Pi gerade nicht da habe.

Für Embedded Softwareentwicklung wäre es eine gute Idee, ein 
funktionsfähiges System auf dem Tisch stehen zu haben, gerade, wenn es 
um solche Fragen geht.

Warum verwendest du MicroPython, wenn du damit nicht ausreichend Zugriff 
auf die Hardware hast.
Eine Netzstromversorgung, nur wegen einer ungeeigneten 
Prozessorbasis/Programmiersprache mag allenfalls im Einzelfall ein 
Notbehelf sein.

von Torsten R. (Firma: Torrox.de) (torstenrobitzki)


Lesenswert?

Felix schrieb:
> Ist es realistisch, den Stromverbrauch auf diesen Wert zu
> reduzieren und gleichzeitig die erforderlichen Funktionen zu erfüllen?

Bare metal mit irgend einem auf low energy getrimmten µC sind Ruheströme 
von einigen µA relativ einfach zu erreichen. Häufig haben die dann auch 
einen DC/DC Wandler eingebaut und eine auf Stromsparen optimierte RTC.

Ich nutze für meine Projekte CMake und einen Editor meiner Wahl. 
Compiler ist in der Regel GCC. Das funktioniert (meist) wunderbar auch 
wenn einem viele Hersteller lieber ihre Version von Eclipse mit 
Wunder-Code-Generatoren und Plugin nahelegen wollen.

von Mi N. (msx)


Lesenswert?

Torsten R. schrieb:
> Bare metal mit irgend einem auf low energy getrimmten µC sind Ruheströme
> von einigen µA relativ einfach zu erreichen.

Dann solltest Du aber auch den RP2040 "bare metal" verwenden.

Vielleicht würde es dem TO schon reichen, in den Schlafphasen auf 
internen Oszillator umzuschalten und den Controller im kHz-Bereich zu 
takten.

von Torsten R. (Firma: Torrox.de) (torstenrobitzki)


Lesenswert?

Mi N. schrieb:

> Dann solltest Du aber auch den RP2040 "bare metal" verwenden.

Laut Datenblatt einen Ruhestrom von typischer weise 390µA (worst case 
4,5mA). Das ist sicherlich nicht schlecht, aber insgesamt scheint mir 
der ausgewählte µC nicht optimal für die Aufgabe.

Wenn allerdings die Pumpen auch aus der Batterie betrieben werden, dann 
ist da sicherlich die meiste Musik.

von Mi N. (msx)


Lesenswert?

Torsten R. schrieb:
> Das ist sicherlich nicht schlecht, aber insgesamt scheint mir
> der ausgewählte µC nicht optimal für die Aufgabe.

Was ist schon optimal? Aber der TO möchte dieses Pico-Board verwenden - 
aus welchen Gründen auch immer. Und wenn er Python programmieren möchte, 
soll er es doch tun. Zudem ist es nicht verkehrt, wenn er bei seiner 
Problemlösung etwas dazulernt.
Im Grunde reicht ihm ja schon seine 3 Ah LiIon-Zelle für die geforderte 
Laufzeit und es wäre das Einfachste, bei Bedarf eine 2. Zelle parallel 
zu schalten.

von Florian D. (max_well)


Lesenswert?

Man kann auch einfach den 3V3_EN Pin37 nutzen um die Stromaufnahme zu 
kappen.

von Rainer W. (rawi)


Lesenswert?

Dominik schrieb:
> Ich finde ehrlich gesagt die Arduino-IDE sehr komfortabel, ebenso die
> Möglichkeit die Arduino- und ESP-Dev-Boards ohne Umwege über irgendwelche
> Programmer direkt über USB zu programmieren.

Was hat denn das eine mit dem anderen zu tun. Auch bei den Arduinos muss 
sich erstmal jemand finden, der den Bootloader drauf spielt. Ohne einen 
Programmer wird das nichts. Und was die Debug-Möglichkeiten der Arduino 
IDE betrifft, lässt sich der Komfort nicht einmal bewerten, weil es 
praktisch keine gibt.
Der Software für den Programmer ist bei der Arduino IDE sogar als 
Beispiel dabei.

von Rudi (rudils)


Lesenswert?

Felix schrieb:
> Die Laufzeit soll 2 Wochen betragen

Wenn du etwas zusätzliche Hardware dazubauen kannst, gäbe es die 
Möglichkeit mit 3 kleinen FETs den Pico komplett stromlos zu schalten. 
Das bringt Monate.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.