# ESPuino schaltet vor Erreichen der Critical Voltage aus

**URL:** <https://forum.espuino.de/t/espuino-schaltet-vor-erreichen-der-critical-voltage-aus/2578>\
**Category:** Bugreports / Fehlersuche\
**Created:** [22. Dezember 2023 um 23:34 UTC](https://forum.espuino.de/t/espuino-schaltet-vor-erreichen-der-critical-voltage-aus/2578 "2023-12-22T23:34:55Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![StadiC](https://forum.espuino.de/letter_avatar_proxy/v4/letter/s/db5fbb/32.png) [@StadiC](https://forum.espuino.de/u/StadiC)\
**Post date:** [22. Dezember 2023 um 23:34 UTC](https://forum.espuino.de/t/espuino-schaltet-vor-erreichen-der-critical-voltage-aus/2578/1 "2023-12-22T23:34:55Z")

</div>

Die Euphorie über den ersten Build hält noch an, der ESPuino läuft seit einer Weile. Heute Abend habe ich erstmals spontanes Ausschalten gehabt, sowohl im BT- als auch im WLAN-Modus. Aber nur im reinen Akku-Betrieb. Spannung war mindestens bei 3.07V, (wobei die Akkuspannung eine Differenz von 0,11V zur Spannung auf der Platine hat, welche ich nach dem Vorgehen in [dem Thread](https://forum.espuino.de/t/messreihe-mit-lifepo4-akku/1119/6) gemessen habe).

Ich habe dann `#define SHUTDOWN_ON_BAT_CRITICAL` wieder aus der settings.h auskommentiert und seitdem läuft es. Scheint also etwas damit zu tun zu haben. Die Critical Voltage liegt bei 3.00V, wurde also eigentlich noch nicht erreicht.

Jetzt möchte ich gern auf Fehlersuche gehen, weiß aber nicht, wie. Serial Monitor läuft nur mit USB-Verbindung und der Log auf der Website ist Session-spezifisch. Habt ihr eine Idee, wie ich an eine Fehlermeldung ran komme (oder vielleicht sogar, woran das Verhalten liegt)?

---

<div class="post-metadata">

**Author:** ![SZenglein](https://forum.espuino.de/user_avatar/forum.espuino.de/szenglein/32/297_2.png) [@SZenglein](https://forum.espuino.de/u/SZenglein)\
**Post date:** [23. Dezember 2023 um 10:17 UTC](https://forum.espuino.de/t/espuino-schaltet-vor-erreichen-der-critical-voltage-aus/2578/2 "2023-12-23T10:17:46Z")

</div>

Schau mal ob der richtige Wert gesetzt ist. Es kann sein, dass ein alter Wert in die Preferences geschrieben wurde und Änderungen in der settings.h gar nichts bewirken. Das ist leider noch nicht im Web-frontend einstellbar.

---

<div class="post-metadata">

**Author:** ![biologist](https://forum.espuino.de/user_avatar/forum.espuino.de/biologist/32/66_2.png) [@biologist](https://forum.espuino.de/u/biologist)\
**Post date:** [23. Dezember 2023 um 10:51 UTC](https://forum.espuino.de/t/espuino-schaltet-vor-erreichen-der-critical-voltage-aus/2578/3 "2023-12-23T10:51:40Z")

</div>

Der Analogeingang ESP32 ist halt einfach kein Präzisionsinstrument. So 100 % genau ist das nie.  
Die Frage ist aus meiner Sicht, was man sich von `SHUTDOWN_ON_BAT_CRITICAL` erwartet. So lange man keinen Schaltregler verwendet, wird die Spannung irgendwann unter einen Punkt fallen, wo der ESP32 nicht mehr „anständig“ arbeitet. Hier kann es passieren, dass manche Dinge nicht wie vorgesehen funktionieren. Wenn man jetzt sagt, dass man solch mehr oder weniger undefinierte Zustände vermeiden möchte, dann kann man das benutzen.  
Davon ab ist es jedoch so, dass sich das Gesamtsystem selbst limitiert: D.h. die Spannung ist irgendwann zu niedrig und denn läuft der ESP32 eh nicht mehr. Sicherlich wird aber auch noch dann ein kleiner Ruhestrom fließen. Ein Hardware-Schutz für den Akku kann `SHUTDOWN_ON_BAT_CRITICAL` also nicht sein. Hierfür braucht es das BMS des Akkus, der das Ganze vor weiterer Tiefentladung schützt.

Anders sieht es bei einem Schaltregler aus: Da kann die Spannung extrem niedrig absinken und man kriegt es gar nicht mit, weil der ESP32 noch normal arbeitet. Hier braucht’s aus meiner Sicht einen Hardware-Schutz. Für die [Complete](https://forum.espuino.de/t/esp32-laesst-sich-nicht-flashen/1462/30), welche leider (weiterhin) noch nicht fertig ist, habe ich das verwendet. Das Problem ist jedoch, dass kurze Spannungseinbrüche das Monitoring sofort dazu veranlassen, hinten ein LOW auszugeben. Also da reicht’s schon, wenn USB + Akku angeschlossen sind und der Akku aber nur so halb voll. Dann ziehst du USB ab und dann schaltet’s den ganzen ESPuino aus. Also grundsätzlich funktioniert die Platine, aber mit solchen Sachen habe ich noch Probleme. Da bin ich immer mal wieder am Rumexperimentieren.

---

<div class="post-metadata">

**Author:** ![StadiC](https://forum.espuino.de/letter_avatar_proxy/v4/letter/s/db5fbb/32.png) [@StadiC](https://forum.espuino.de/u/StadiC)\
**Post date:** [23. Dezember 2023 um 12:12 UTC](https://forum.espuino.de/t/espuino-schaltet-vor-erreichen-der-critical-voltage-aus/2578/4 "2023-12-23T12:12:43Z")

</div>

Danke für die schnellen Rückmeldungen.

> [@SZenglein](#):
>
> Es kann sein, dass ein alter Wert in die Preferences geschrieben wurde und Änderungen in der settings.h gar nichts bewirken.

Wenn irgendwo ein Wert von 3.1V hinterlegt ist, würde das die Ausfälle beschreiben. Ich kann aber leider die richtige Stelle außerhalb der settings.h nicht finden, in denen ich die Preferences nachschauen kann. Kannst du mir das noch etwas genauer erklären bitte?

> [@biologist](#):
>
> Die Frage ist aus meiner Sicht, was man sich von `SHUTDOWN_ON_BAT_CRITICAL` erwartet.

Das ist eine sicher berechtigte Frage. Dass das ganze nicht zuverlässig genau funktioniert war vorher schon gut beschrieben und mir auch klar. In der Anwendung habe ich dann erst gesehen, was das genau bedeutet: Unsicherheiten von bis zu 0,05V je Messung (kurzer empirischer Test). Das erläutert dann auch, warum der ESPuino ausging, sofern irgendwo noch die 3.1V hinterlegt sind.

Da es das erste Mikrocontroller-Projekt für mich ist bin ich gedanklich wohl noch dabei, dass ein harter Shutdown zu Datenverlust führen bzw. auf Dauer die SD-Karte schädigen kann. Wenn das hier aber hardwarebedingt nicht relevant ist werde ich auch ohne das Feature gut klarkommen.

---

<div class="post-metadata">

**Author:** ![SZenglein](https://forum.espuino.de/user_avatar/forum.espuino.de/szenglein/32/297_2.png) [@SZenglein](https://forum.espuino.de/u/SZenglein)\
**Post date:** [23. Dezember 2023 um 12:40 UTC](https://forum.espuino.de/t/espuino-schaltet-vor-erreichen-der-critical-voltage-aus/2578/5 "2023-12-23T12:40:04Z")

</div>

Sollte beim Start eigentlich geloggt werden:

> <https://github.com/biologist79/ESPuino/blob/894c6d8392b4f1aa92d3c73bf10635e8b4b59e1b/src/BatteryMeasureVoltage.cpp#L47>

Zu dem Feature im Allgemeinen:  
Ein Hardware-Schutz ist es natürlich nicht. Eher eine Art vorbeugende Akkupflege. Denn immer erst am absoluten Limit des Akkus auszuschalten ist bestimmt auch nicht ideal.  
So kann man ein paar Tage gewinnen, in denen der ESPuino „leer“ aber nicht tiefentladen ist. Das ist in der Regel ausreichend.

Ich finde es aber primär sinnvoll, um undefinierte Zustände jeder Art zu vermeiden. Das kann ja von korrupten SD-Karten über Audio-Fehler bis zu geänderten Konfigurationen durch Brownout gehen.  
Man muss auch bedenken, dass ja einige Komponenten schon mit 3.3V außerhalb der vorgesehenen 5V laufen. Dann gibt es Streuung, das heißt nicht jedes BMS oder sonstige Elektronik verhält sich exakt gleich.

Klar, wenn man das am laufen hat und auf Dauer keine Probleme dieser Art feststellt, kann man es theoretisch auch weglassen.

ZL;NG: Ich finde es sinnvoll für ein ruhiges Gewissen, kann i.d.R. aber auch weggelassen werden.

---

<div class="post-metadata">

**Author:** ![StadiC](https://forum.espuino.de/letter_avatar_proxy/v4/letter/s/db5fbb/32.png) [@StadiC](https://forum.espuino.de/u/StadiC)\
**Post date:** [23. Dezember 2023 um 12:57 UTC](https://forum.espuino.de/t/espuino-schaltet-vor-erreichen-der-critical-voltage-aus/2578/6 "2023-12-23T12:57:05Z")

</div>

Tatsächlich habe ich im (Websrver)Log folgende Einträge:

```auto
I [158] Unterer Spannungslevel (Batterie) fuer Neopixel-Anzeige aus NVS geladen: 3.00V
I [159] Oberer Spannungslevel (Batterie) fuer Neopixel-Anzeige aus NVS geladen: 3.30V
I [172] Spannungslevel (Batterie) fuer Niedrig-Warnung via Neopixel aus NVS geladen: 3.10V
I [184] Spannungslevel (Batterie) fuer Kritisch-Warnung via Neopixel aus NVS geladen: 3.10V

```

In den settings.h sieht das aber so aus:

```auto
constexpr float s_warningLowVoltage = 3.1;                      
constexpr float s_warningCriticalVoltage = 3.0;                 
constexpr float s_voltageIndicatorLow = 3.0;
constexpr float s_voltageIndicatorHigh = 3.3; 

```

Deine Vermutung trifft also zu. Hilft hier dann evt. ein Erase Flash und ein neuer Versuch? Oder gibt es da andere Wege?

---

<div class="post-metadata">

**Author:** ![SZenglein](https://forum.espuino.de/user_avatar/forum.espuino.de/szenglein/32/297_2.png) [@SZenglein](https://forum.espuino.de/u/SZenglein)\
**Post date:** [23. Dezember 2023 um 18:42 UTC](https://forum.espuino.de/t/espuino-schaltet-vor-erreichen-der-critical-voltage-aus/2578/7 "2023-12-23T18:42:43Z")

</div>

> [@SZenglein](#):
>
> `gPrefsSettings.getFloat("wCritVoltage", 999.99);`

Am einfachsten wäre es für’s erste,

```auto
gPrefsSettings.getFloat("wCritVoltage", 999.99);

```

durch 999.99 zu ersetzen. Damit wird der NVS Wert immer ignoriert.

---

<div class="post-metadata">

**Author:** ![StadiC](https://forum.espuino.de/letter_avatar_proxy/v4/letter/s/db5fbb/32.png) [@StadiC](https://forum.espuino.de/u/StadiC)\
**Post date:** [23. Dezember 2023 um 21:02 UTC](https://forum.espuino.de/t/espuino-schaltet-vor-erreichen-der-critical-voltage-aus/2578/8 "2023-12-23T21:02:16Z")

</div>

Habe gerade einen Erase Flash gemacht und mit den neuen Werten für CriticalVoltae gesetzt und jetzt passt es 👍  
Vielen Dank für die schnelle Hilfe und ein paar schöne Feiertage an alle!

---

<div class="post-metadata">

**Author:** ![tueddy](https://forum.espuino.de/user_avatar/forum.espuino.de/tueddy/32/22_2.png) [@tueddy](https://forum.espuino.de/u/tueddy)\
**Post date:** [23. Dezember 2023 um 21:15 UTC](https://forum.espuino.de/t/espuino-schaltet-vor-erreichen-der-critical-voltage-aus/2578/9 "2023-12-23T21:15:58Z")

</div>

Das Thema ist schon länger offen, vielleicht hat jemand Lust & Zeit etwas dazu beizutragen:

> <https://github.com/biologist79/ESPuino/issues/207>
>
> If SHUTDOWN\_ON\_BAT\_CRITICAL is enabled, espuino shuts off if the voltage falls b…elow the critical voltage setting. 
> This setting is written to NVS and cannot easily be changed afterwards: because the NVS value is set, the settings.h value is ignored.
> 
> It should be easy to add the critical voltage option to battery settings, but I don't know if I can find the time. 
> It could also be a good first contribution if someone is interested :).
