Minimale Stromaufnahme ESP32 reduzieren

  • Hallo Zusammen,

    gestern haben wir den Stromverbrauch des ESP32 im Deep Sleep Mode gemessen. Egal bei welchem Code und Anschlussmöglichkeiten kamen wir im Deep Sleep Mode auf 9,5 mA.

    Auf heise.de ist die Rede, dass man den Stromverbrauch bis auf 2µA reduzieren könne. Hiervon sind wir mit unseren ~9,5 mA somit sehr weit entfernt.

    Verwendeter ESP32: hier [Anzeige]

    Gemessen wurde mit einem Multimeter welches bei der Stromversorgung in Reihe geschalten wurde. Bei den Messungen waren keine weiteren externe Geräte oder Bauteile angeschlossen.

    2 Codes welche verwendet wurden zum testen:

    C
    #include <stdio.h>
    #include "esp_sleep.h"
    
    void app_main()
    {
        esp_deep_sleep_start();
    }

    Letzterer Code wurde ohne Arduino IDE überspielt, da diese angeblich viel Overhead produziert.

    Weitere Codebeispiele welche probiert worden sind, kann eventuell Pertl nachreichen.

    Die Spannungsversorgung wurde bei den Tests probiert via USB, 5V direkt und 3.3 Volt direkt – immer kam es zu einem Stromfluss von rund ~9.5mA im Deep sleep Mode.

    Kann der hohe Stromverbrauch dem Hardware Design geschuldet sein? So wie ich das gesehen habe sind die Platinen von den Anbietern unterschiedlich.

    Wäre nett wenn ihr euren Stromverbrauch im Deep Sleep Mode messt und die Ergebnisse hier mitteilt.

  • Die einzige zusätzliche Beschaltung bei dem von Hofei verwendeten ESP-WROOM-32-Module, ist der USB-TTL-Converter.


    Unterschiede machen sich bereits durch unterschiedliche Toolchains bemerkbar... Da kann der exakt selbe Code mit einer älteren Toolchain noch 10µA verbrauchen, eine aktuelle Toolchain hingegen verballert 30µA.

    Verändert hat sich zum Beispiel dass im deep_sleep zusätzlich der "fast and slow RTC ram" an bleibt, der zuvor aber auch abgeschaltet wurde, was mit einem Bug der ESP32 Revision zu tun hat.

    Das geht mit folgendem abzuschalten:

    Code
    esp_deep_sleep_pd_config(ESP_PD_DOMAIN_RTC_PERIPH, ESP_PD_OPTION_OFF);
    esp_deep_sleep_pd_config(ESP_PD_DOMAIN_RTC_SLOW_MEM, ESP_PD_OPTION_OFF);
    esp_deep_sleep_pd_config(ESP_PD_DOMAIN_RTC_FAST_MEM, ESP_PD_OPTION_OFF);
    esp_deep_sleep_start();

    Quelle: https://esp32.com/viewtopic.php?…97983023fd74ebf

    Siehe dazu auch

    https://www.espressif.com/sites/default/…in_esp32_en.pdf

    https://forum.micropython.org/viewtopic.php?t=3555

    https://forum.sparkfun.com/viewtopic.php?t=45931

    https://pcbreflux.blogspot.de/2017/02/esp32-…ep-example.html

    https://hackaday.com/2016/09/15/esp…wesome-promise/

  • Hallo, ich war gestern mit im Bunde und kann vlt. noch etwas Input geben. Ich habe zum einen lt. Beiblatt über die Arduino-IDE bespielt (k.A. was da genau für ein Toolchain verwendet wird). War einfach copy und paste von der Beschreibung.

    Testweise bin ich dann zusätzlich noch hergegangen und habe den ESP32 entsprechend der Espressif IoT Development Framework - Get Started-Anleitung das ganze installiert und über make auf den EPS übertragen.

    Unterschiede machen sich bereits durch unterschiedliche Toolchains bemerkbar... Da kann der exakt selbe Code mit einer älteren Toolchain noch 10µA verbrauchen, eine aktuelle Toolchain hingegen verballert 30µA.

    Das habe ich bereits vielfach gelesen, wenn ich in den Bereich von 500µA kommen würde wäre ich schon äußerst zufrieden.... wir reden ja aktuell von 9.5mA also gut dem 20 fachen von dem was ich anstreben würde und dem über 100 fachen von 30µA.

    Irgendwo muss da eine grobe Hardware-Schwachstelle sein, die ich aber mangels Elektronik-Kenntnisse am Board selbst nicht ausmachen kann. Ich hab z.B. herausgefunden, dass einige den Spannungsregler AMS1117 direkt vom Board nehmen da dieser anscheinend viel Leistung nimmt [1]?! Kann man das irgendwie prüfen bevor ich das Board manipuliere? Allerdings frache ich mich, wenn ich über 3.3Volt versorge sollte der Spannungsregler doch gar nicht laufen oder?


    [1] https://itooktheredpill.irgendwo.org/2017/reducing-…er-consumption/

  • Naja wie raspiprojekt bereits indirekt anmerkte, habt ihr nicht nur einen nackten ESP-WROOM-32 sondern es befindet sich auch noch ein USB-TTL-Converter uf der Platine.

    Je nach dem wie der verschaltet ist kann es durch aus sein dass der ebenfalls permanent mit Strom versorgt wird, auch wenn ihr ihn gar nicht verwendet/nutzt.

    Die Effizienz des AMS1117 ist vermutlich auch nicht berauschend, würde aber IMHO nicht so einen signifikaten Unterschied ausmachen... Laut deiner Seite sind es 4mA die der AMS1117 verpuffen lässt. Wenn du den also abklemmst sinkt dein Verbrauch auf 4,5mA?

    Zu beachten ist übrigens auch zu dem von Heise.de angeblich verwendeten ESP32:

    Zitat

    Wir haben uns das Developer Board des ESP32 angeschaut. Bisher haben erst 200 Beta-Tester weltweit ein ESP32-Entwicklerboard bekommen. Auf diesem ESP-WROOM-03 ist ein Chip mit der Bezeichnung "ESP31B" verbaut, der sich zu dem endgültigen Chip noch unterscheiden kann.

    Quelle: Den von Hofei genannten Artikel ;)

  • Wenn du den also abklemmst sinkt dein Verbrauch auf 4,5mA?

    Das habe ich mich noch nicht getraut

    Zu beachten ist übrigens auch zu dem von Heise.de angeblich verwendeten ESP32:

    >>Wir haben uns das Developer Board des ESP32 angeschaut. Bisher haben erst 200 Beta-Tester weltweit ein ESP32-Entwicklerboard bekommen. Auf diesem ESP-WROOM-03 ist ein Chip mit der Bezeichnung "ESP31B" verbaut, der sich zu dem endgültigen Chip noch unterscheiden kann.

    Quelle: Den von Hofei genannten Artikel

    Bei mir am Board ist ein Chip mit der Bezeichnung ESP-WROOM-32 verbaut.

    Naja wie raspiprojekt bereits indirekt anmerkte, habt ihr nicht nur einen nackten ESP-WROOM-32 sondern es befindet sich auch noch ein USB-TTL-Converter uf der Platine.

    Irre ich mich oder kann ich ohne den USB-TTL-Converter das Ding gar nicht programmieren? Oder wäre es z.B. möglich, dass ich einen reinen ESP-WROOM-32 Chip nehme, einen USB-TTL-Converter anstecke zum Programmieren und dann für den Betrieb wirklich nur den blanken Chip [1] nutze? Allerdings muss ich mich dann auch wieder um Akkuanschluss usw kümmern - also im Endeffekt wieder das was am Board drauf sitzt doch anbauen. Sind meine Erwartungen zu hoch, dass man damit eine Messeinheit auch > 6 Monate hinweg sinnvoll für kleines Geld betreiben kann? Ich habs gestern mal überschlagen die Elektronik wäre 99% der Zeit im Sleep-Modus...

    [1] z.B. https://eckstein-shop.de/Espressif-ESP-WROOM-32

  • Oder wäre es z.B. möglich, dass ich einen reinen ESP-WROOM-32 Chip nehme, einen USB-TTL-Converter anstecke zum Programmieren und dann für den Betrieb wirklich nur den blanken Chip [1] nutze?

    Ja.

    Bei mir am Board ist ein Chip mit der Bezeichnung ESP-WROOM-32 verbaut.

    Aber die Werte von Heise.de beziehen sich nicht auf den ESP32, da sie einen ESP31B hatten ...

    Sind meine Erwartungen zu hoch, dass man damit eine Messeinheit auch > 6 Monate hinweg sinnvoll für kleines Geld betreiben kann?

    Wäre der ESP32 dafür nicht etwas oversized? Was spricht gegen den ESP8266 ?

  • Wäre der ESP32 dafür nicht etwas oversized? Was spricht gegen den ESP8266 ?

    Eigentlich nichts, hab nur vom ESP32 gelesen und wollte den mal ausprobieren. Grundsätzlich gehts mir eigenltlich eh blos darum, dass ich einen vernünftigen Wert bekomme, mit wie viel Stromaufnahme ich im Sleep-Mode rechnen muss.

    Kurzer Exkurs warum das ganze überhaupt gestartet wurde:
    Ich arbeite derzeit an meiner Diplomarbeit (Bauingenieur) im Bereich Siedlungswasserwesen. Mir wurde Mess- und Übertragungelektronik bereitgestellt - die im Tagesschnitt 22mA bei 5 Volt braucht. (Betriebsmodus 2x täglich senden, minütlich messen) Ziel war daher eigentlich mit einem SIM800 Modul und dem ESP Vergleichsmessungen zu machen um nächste Woche klar stellen zu können dass irgendwas mit der Messelektronik schief läuft (zu viel Stromverbrauch). SIM Modul benötigt zum senden rund 1 Minute und bis zu 3 Ampere, Messsensor benötigt 5mA beim messen (ca. 1 Sekunde). Rechnet man das ganze mal hoch ist eigentlich ganz egal was man zum Senden (2 Minuten täglich) oder Messen (24 Minuten täglich) braucht.
    Ich habe anbei mal eine kleine Excel-Aufstellung die links die gestern ermittelten Werte (im schlimmsten Fall mit ESP) darstellt. Man sieht bereits hier, dass wir im Tagesschnitt um 10mA weniger benötigen als in der bereitgestellten Messelektronik. Jetzt mal vorausgesetzt, dass der AMS1117 nochmal gute 5mA verbrät, wäre ich bei einem durchschnittlichen Strom von 8.77mA (rechter Teil).
    Da das Ziel der Arbeit, die Untersuchung von autarken Messeinheiten ist, die sich über Mini-Generatoren selbst mit Strom versorgen, muss ich so haushalten, dass mein erzeugbarer täglicher Strom (ca. 2000-3000 Ws hätte ich mal grob als Potential errechnet) abzüglich Verluste beim Laden/Entladen von Li-Po / Li-Io Akku größer ist als die verbrauchte Energie ist.

    Da wir leider nicht 100%ig von der Studienrichtung her die Kompetenz besitzen und man sehr viel liest im µA Bereich - wollte ich einfach mal "Leihenhaft" das ganze nachvollziehen können. Es handelt sich ja wie gesagt rein um eine Machbarkeitsstudie und reine Prototypen, die dann sicherlich von Elektronikern viel besser umgesetzt werden können.

    Also Schlussendlich steht für mich noch immer die Frage im Raum, kann ich mit 2000-3000 Ws täglich einfache Messelektronik mit GSM-Übertragung autark betreiben. Ziel sollte sein in den Bereich, der vermutlich ohne den AMS1117, erreicht wird zu kommen (mit professionellerer Ausarbeitung als meiner kann dann der Betrieb sichergestellt werden). Ich werde die nächsten Tage mal auf Support-Antwort vom Chip-Hersteller warten ob die genauere Werte haben für Sleep-Mode und ansonsten werde ich meinen Chip opfern und mal das Bauteil entfernen.

  • Sorry jetzt bin ich etwas verwirrt... Hast Du und Hofei das gleiche Anliegen, oder kaperst du gerade den Thread? :-/

    Erst mal festhalten: Ein einzelner ESP32 Chip verbraucht selbstverständlich weniger Strom, als ein Development-Board mit integriertem USB-TTL und Spannungswandler etc..

    Ich versteh aber auch weiterhin nicht wieso Du überhaupt einen ESP32 für einfache Messungen in Betracht ziehst - zumal du kein WLAN nutzen willst sondern GSM, da wäre selbst ein ESP8266 die falsche Wahl...

    Wodurch zeichnet sich ein ESP32 aus?

    - integriertes WLAN und Bluetooth... Hast du vor das in deinem Projekt zu nutzen?

    - Dualcore 160MHz... Brauchst du wirklich so viel Rechenleistung?

    - 4MB Flash und erweiterbarer RAM auf bis zu 16MB... Brauchst du das für deine einfache Messung?

    - Viele GPIO's (PWM, ADC, DAC, I/O, etc..)... Wie viele GPIO's benötigt dein Projekt?

    Du scheinst auch bereits eine Vorgabe von dem was maximal verbraucht werden darf zu haben und solltest dann eher Klein anfangen. Es macht wie ich finde wenig Sinn von vorneherein mit großer Hardware anzufangen und irgendwie zu versuchen dessen Verbrauch zu kastrieren.

    Es gibt genug µC die mit Sensoren und GSM sprechen können - evtl. kommst du sogar ohne GSM aus, je nachdem wie die Umgebung aussieht könnte evtl. LoRa reichen. Allgemein haben Mobilfunksysteme eine zu hohe Leistungsaufnahme und sind im Unterhalt eigentlich auch zu teuer. Mittlerweile gibt es gerade wegen IoT immer mehr nutzbare Alternativen, siehe dazu https://de.wikipedia.org/wiki/Low_Power_Wide_Area_Network

  • Hallo meigrafd nö er kappert den Thread nicht. Pertl ist ein RL Freund mit dem ich das gestern gemessen habe.

    Richtig wir müssen eigentlich nur alle Minute einen Sensor auswerten und die Daten solange speichern bis alle erfassten Messwerte per GSM Modul übertragen worden sind.(2 x am Tag)

    Mehr muss der Controller nicht machen. Ich kam auch auf die Idee etwas anderes zu verwenden, deshalb holte ich heute einen alten Schatz hervor (siehe Bild)

    Leider fehlt hier sehr die Erfahrung und Routine...das stammt alles von vor ca 8Jahren als ich damit in der Ausbildung in Berührung war

  • Ich versteh aber auch weiterhin nicht wieso Du überhaupt einen ESP32 für einfache Messungen in Betracht ziehst - zumal du kein WLAN nutzen willst sondern GSM, da wäre selbst ein ESP8266 die falsche Wahl...

    eigentlich habe ich den ESP für private experimente gekauft und wollte nur anhand des Chips einfach die gemessen Werte aus dem Unisystem (rapidM2M M3) evaluieren. Da der bereitgestellte Chip auch Bluetooth und den ganzen anderen Schnickschnak hat dachte ich es wäre für Vergleichsmessungen ausreichend.

    https://www.microtronics.com/de/produkte/rapidM2M_M3.html

    Es gibt genug µC die mit Sensoren und GSM sprechen können

    Das ist so bischen das Problem, dass selber bauen immer bischen schwierig ist, soll heißen: ich mache Entwurf, Labortechniker baut es und ich kann es dann nutzen. Und dort fiel die Wahl auf oben gennantes fertiges Modul, mit dem ich mich jetzt auseinandersetzen muss.... und dessen Werte ich über Messungen am ESP32 abgleichen wollte.

    kommst du sogar ohne GSM aus, je nachdem wie die Umgebung aussieht könnte evtl. LoRa reichen

    LORA hatten wir schon auf dem Tisch, allerdings mangels Infrastruktur (Gateways usw.) zum flächendeckenden Einsatz verworfen.


    EDIT:

    Sry vergas zu erwähnen, dass ich das wir ausgemacht habe ;)

    gestern haben wir den

  • Ich bin mit einem ("nackten") ESP8266 auf einen Deepsleep-Strom auf unter 100microA gekommen.

    Als Herausforderung stellte sich der Schaltregler 5V=>3,3V heraus, welcher einen sehr geringen Ruhestrom haben sollte.

    Ich hatte 'damals' hier im Forum nach einem Schaltwandler mit geringem Grundverbrauch gefragt, finde aber auf die Schnelle den alten Thread nicht....

    Wichtig war, das WLAN in einen bestimmten Modus zu schalten... ist nun schon 'ne weile her, kann auch gerade nicht auf die Sourcen zugreifen.. aber mal als Anregung?

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!