Pi Pico: Stromverbrauch senken (Sleep)

OP #7414080
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.

#7414094
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.

#7414103
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.

#7414146
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.

#7414152
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.

Beitrag #7414157 wurde von einem Moderator gelöscht.
#7414172
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.

OP #7414187
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.

#7414190
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?

OP #7414202
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?

#7414481
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.

(Firma: Torrox.de) #7414604
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.

(Firma: Torrox.de) #7414629
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.

#7414703
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.

#7415033
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren