Die Tücken der ESP32-Stromversorgung


Es sieht alles so supereinfach aus: man nehme einen ESP32, schließe diesen per USB-Kabel am Computer oder einem Streckennetzteil an und das Teil läuft. Es spielt dabei auch keine Rolle, ob es ein ESP8266 oder der leistungsfähigere ESP32 ist. Wenn dann die Software aufgespielt wird und eine regelmäßige WiFi-Kommunikation stattfindet, stürzen die Teile einfach regelmäßig ab.

Digital-Speicheroszilloskop

Mit einem einem Digital-Speicheroszilloskop (Rohde & Schwarz RTB2000-Serie) soll sichtbar gemacht werden, wo die Probleme liegen könnten bzw. was zu tun ist, um das Ganze stabil zu bekommen. Ein altes Analog-Oszilloskop ist hier nicht nutzbar, da eine Aufzeichnung über mehrere Sekunden notwendig ist, die später analysiert werden muss bzw. die Details mit richtigem Trigger aufgezeichnet werden müssen.

Problem: ungeeignete USB Netzteile


Ich traute meinen Augen nicht, als ich mit einem einfachen USB-Steckernetzteil die 5-V-Stromversorgung des ESP32-Moduls per Oszilloskop gemessen habe: da war ein 500 mV 2-kHz-Sägezahn auf der Leitung – unglaublich! Das ist mit jedem Oszilloskop sichtbar. Interessant war, dass die 3,3 V Betriebsspannung nach dem LDO-Regler wieder glatt war und unproblematisch aussah. Bei Belastung im WiFi-Betrieb wurde es aber schlimmer mit den 5 V und auch die 3,3 V waren nicht mehr stabil.


Die gute Nachricht ist, dass ein anderes 1-A-Steckernetzteill diese Probleme nicht aufwies. Daher empfehle ich eine kurze Überprüfung der 5-V-Betriebsspannung auch unter WiFi-Betrieb, damit solche Probleme vorab bereits ausgeschlossen werden können.

Stromverbrauch beim ESP32

So ein ESP32 benötigt mit einem einfachen Arduino-Programm etwa 50-70 mA, im WiFi-Betrieb geht der Stromverbrauch sogar bis auf etwa 80-170 mA hoch. Zumindest zeigen es die Messgeräte so an. Das ist aber ein Trugschluss; im WiFi-Betrieb werden auch mal schnell 400 mA und mehr genutzt, allerdings nur für wenige Millisekunden. Fällt die Spannung dann unter einen Wert von 2,55 Volt, stürzt der ESP32 (oder auch der ESP8266) ab. Ja, ein Spike nach unten für weniger als eine Millisekunde reicht aus, und der Absturz folgt.

Problem: USB-Kabel zum PC oder Netzteil

Ich habe schöne USB-Kabel von 1 Meter Länge, die vom PC oder Steckernetzteil zum ESP32 gehen. Auch ein gutes Labornetzteil habe ich zum Testen verwendet – immer mit ein und demselben Ergebnis: im WiFi-Betrieb bricht die 3,3-Volt-Spannungsversorgung des ESP32 zusammen. Dies führt teilweise auch wieder zum Absturz des ESP32-DevKit-Moduls.


Das Bild zeigt einen Spannungszusammenbruch beim Senden vom WiFi-Datenpaketen, hier ist deutlich zu sehen, dass die Spannung von etwa 3,3 V auf 2,8 Volt (Differenz 0,5 V) einbricht. Das sieht nicht besonders stabil aus, und es fehlt auch nicht mehr viel und der Reset kommt.


Beim WiFi-Empfang sieht es deutlich besser aus. Das ist aber auch dadurch bedingt, dass beim Empfang deutlich weniger Strom benötigt wird als beim Senden.

Lösung: kurze USB-Kabel bzw. Kabel mit größerem Leitungsquerschnitt

Mit dem identischen 5-V-Netzteil habe ich einfach mal kurze Kabel bzw. solche mit einem größeren Leitungsquerschnitt verwendet.

WiFi senden mit dicken Kabeln:

WiFi empfangen mit dicken Kabeln:

Hier sind die Probleme gelöst; der geringe Ripple stört den ESP32-Betrieb nicht und alles läuft stabil. Jetzt gibt es noch zwei Möglichkeiten, die Stromversorgung weiter zu verbessern: man nehme einen 47-µF-Tantalkondensator, der direkt am ESP32-Modul zu den Pins VDD/GND parallel geschaltet wird. Dieser ist in der Lage, die geforderten Stromspitzen schneller als der LDO-Regler bzw. andere Kondensatoren zu liefern. Zusätzlich zum Tantalkondensator gibt es dann noch die Möglichkeit, einen großen Low-ESR-Elektrolytkondensator mit einer Kapazität von 470 µF bis 2000 µF zu verwenden. Der Elko ist dann in der Lage, den Tantal nachzuladen, womit die Spannungsversorgung weiter stabilisiert wird.

Diese Maßnahmen (dicke Kabel und zusätzliche Kondensatoren) kosten nicht viel, lösen aber die Probleme!

Batteriebetrieb: kurze Leitungen und leistungsstarke Batterien

Hier noch einmal Abbildungen der gemessenen Spannung beim WiFi-Betrieb mit einer LiFePO4-Batterie, welche den ESP32 (Beispiel „ECO Power“-Board) direkt betreibt.

WiFi empfangen:

WiFi senden:

Wie auch hier zu sehen ist, sieht die Spannungsversorgung gut aus. Hier gibt es nur minimale Einbrüche und der ESP32 im WiFi-Betrieb funktioniert selbst mit einem LiFePO4-Akku oder Lithium-Batterien einwandfrei. Verantwortlich für die gute Funktion im Batteriebetrieb ist bei unserem ESP32 „ECO Power“-Board Folgendes:

  • Der LiFePO4-Akku bzw. die 3-V-Lithiumbatterie kann die geforderten Stromspitzen von über 400 mA auch schell liefern.
  • Vom Batteriefach zum ESP32-Modul werden breite und kurze Leitungen verwendet (nur wenige Zentimeter lang). Lange und dünne Leitungen (z. B. 20 cm) zu einem externen Batteriefach können schon wieder Probleme bereiten.
  • Die Stromversorgung des ESP32 wird durch schnelle MLCC-Kondensatoren unterstützt, zusätzlich wird ein Low-ESR-Elko mit einer Kapazität von 470 µF direkt am Eingang der Batteriespannung verwendet.

Zusammenfassung

Zusammengefasst lässt sich sagen, dass viele Probleme beim ESP32 oder auch beim ESP8266 mit der richtigen Stromversorgung zusammenhängen. Die Aussage „… es ist ja gelaufen, nur plötzlich geht etwas nicht mehr!“ habe ich oft gehört. Meistens lag es jedoch nicht am WiFi-Netz sondern schlichtweg an der Stromversorgung. Mit einem guten Digital-Speicheroszilloskop (hier Rohde & Schwarz RTB2000-Serie) können solche Probleme sehr gut untersucht werden:

In der Arduino-Hannover-Gruppe treffen sich regelmäßig Elektronik- und Arduino-Interessierte. Viele von uns verwenden den ESP32 oder ESP8266 für Ihre Projekte. Interessenten können bei unseren regelmäßigen Treffen teilnehmen, wir helfen gerne und tauschen Erfahrungen aus. Auch gemeinsame Messungen, wie die hier beschriebenen, können bei uns durchgeführt werden. Auf der Maker Faire 2018 in Hannover können Interessenten gerne am Stand von Arduino-Hannover vorbeikommen und über die ESP32-Stromversorgung und unsere LoRa-Funktechnik Boards diskutieren.

Wir bedanken uns bei der Firma Rohde & Schwarz GmbH & Co. KG, welche Arduino Hannover aktiv unterstützt.

Links:

Arduino Hannover Homepage
ESP32 DevKit-C Board
ECO Power Board
Rohde & Schwarz RTB2000-Serie

*Info: In diesem Beitrag verweisen orangefarbende Links auf Affiliates.