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.
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?
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
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.
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?
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.
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.
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.
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
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.
Mi N. schrieb: > Gibt es in Python nicht irgendeine Funktion mit "dormant" im Namen? Ist, soweit ich weiß, nicht in Micropython implementiert.
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
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
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?
https://ghubcoder.github.io/posts/pico-w-deep-sleep-with-micropython/ Oder irgendeine Krücke mit einer C-Lib… Nachtrag: https://forum-raspberrypi.de/forum/thread/58058-pico-erneut-programmieren-nach-einsatz-von-deepsleep/
:
Bearbeitet durch User
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.
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.
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.
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.
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.
Man kann auch einfach den 3V3_EN Pin37 nutzen um die Stromaufnahme zu kappen.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.