Auf der Seite wird auch folgendes gelistet:
3,2V Nenn
3,65V Ladeschluss
2,0V Entladeschluss
Muss ich dafür irgendwas hier ändern?
#ifdef MEASURE_BATTERY_VOLTAGE
// (optional) Default-voltages for battery-monitoring via Neopixel; can be changed later via WebGUI
constexpr float s_warningLowVoltage = 3.4; // If battery-voltage is <= this value, a cyclic warning will be indicated by Neopixel (can be changed via GUI!)
constexpr float s_warningCriticalVoltage = 3.1; // If battery-voltage is <= this value, assume battery near-empty. Set to 0V to disable.
constexpr float s_voltageIndicatorLow = 3.0; // Lower range for Neopixel-voltage-indication (0 leds) (can be changed via GUI!)
constexpr float s_voltageIndicatorHigh = 4.2; // Upper range for Neopixel-voltage-indication (all leds) (can be changed via GUI!)
#endif
Irgendwie sieht es so aus als würde mein Akku im Grunde so gut wie gar nicht laden. Er zeigt immer „niedrige Spannung“ an. Lädt der Akku auch im Deep-Sleep?
Wenn ich das Kabel ziehe, bleibt die gute Kiste an - also grundlegend scheint er ja zu funktionieren.
Nutze ich persönlich gar nicht, da sich das Ganze eh von selbst limitiert, weil unter einen gewissen Spannung das Ganze eh nicht mehr läuft. Also bis 3 V etwa kann man den ESP32 stabil betreiben. Drunter wird’s dann irgendwann mehr zum Glücksspiel. Gegen Tiefentladung muss das BMS des Akkus schützen schützen, das macht nicht ESPuino.
Ja. Der ESP32 kriegt vom Laden im Endeffekt auch eh nichts mit, also der weiß nicht, dass geladen wird. Insofern spielt’s auch keine Rolle, ob er im Deepsleep ist oder nicht.
Hi, ich habe festgestellt, dass die Spannung, die im Webinterface bei Info angezeigt wird von der Spannung, die im Terminal ausgegeben wird abweicht. Woran liegt das? (3,23V vs. 3,45V)
Die offsetVoltage hatte ich mit dem Terminal auf +0,26V kalibriert.Jetzt würde ich natürlich gerne wissen, welcher Wert „der Richtigere“ ist.
Was hat es mit der referenceVoltage auf sich? Wird die tatsächlich für eine Messung verwendet? Weil die schwankt beim Lifepo Board ja und ist aufgrund des fehlenden LDO ja immer gleich der Batteriespannung?
Die unterschiedlichen Werte konnte ich bei weitern tests nicht mehr reproduzieren. Hat sich also vermutlich erledigt.
Das mit V_ref beschäftigt mich aber. Eigentlich dürfte die Spannungsmessung ja gar nicht funktionieren, da die zu messende Spannung im Batteriebetrieb ohne LDO immer proportional zu V_ref ist. Damit müsste immer mehr oder weniger das gleiche gemessen werden. Aus irgendwelchen Gründen funktioniert es wohl trotzdem, wobei mir die Offsetspannung mit ~0,2V für eine normale ADC Kalibrierung viel zu hoch vorkommt und vermutlich kalibrieren wir uns damit den generellen Fehler an einem Punkt weg und drumherum funktioniert es irgendwie doch einigermaßen.
Um das zu beheben wäre die saubere Lösung, die interne V_ref des ESP von 1,1V zu nutzen. Chat CPT sagt folgendes. Ich habe es nicht überprüft, wäre aber mal einen Versuch wert:
Der ESP32 verfügt über einen internen Analog-Digital-Wandler (ADC), der zur Messung von Spannungen verwendet wird. Die Standard-Referenzspannung (Vref) des ESP32 ADC liegt bei 1,1V, kann aber auch durch die Betriebsspannung des ESP32, üblicherweise 3,3V, als Referenz verwendet werden. Um Spannungen oberhalb von 1,1V zu messen, kann der ADC mit einer Signalabschwächung konfiguriert werden
Wenn ich das richtig verstehe, dann wird intern immer gegen 1,1 V gemessen und dann sind wir ja deutlich drüber. Man müsste wohl eine Dämpfung aktivieren.
Zum Messen verwende ich beim LFP-Board einen Spannungsteiler mit 2x 300k. Wemos verwendet beim D32 pro 2x 100k. Ist also in beiden Fällen die Hälfte der tatsächlichen Spannung. Das bedeutet, dass wir beim LFP-Board eine Spannung von max. 1,8 V haben und beim D32 pro max 1,65 V.
Was anderes: Welche Toleranzen haben die Widerstände des Spannungsteilers? Wenn da 10% Abweichung drin ist, würde das eine weitere nicht vorhersehbare Variable darstellen.
Ich habe auch ein wenig recherchiert und eine ganz interessante Möglichkeit gefunden, den ADC manuell (in Software) zu kalibrieren. Dafür muss man aber entweder einen kalibrierten DAC (Henne-Ei-Problem) oder eine externe genaue Spannungsquelle haben.
Auch hat der ADC einen linearen Bereich und am oberen und unteren ende einen nichtliniearen - mit dem Spannungsteiler befinden wir uns aber glaube ich im linearen Bereich, weshalb ein einfacher offset ganz gut funktioniert.
Eine andere Idee, die ich hatte, wäre die „Kalibrierung“ intern einfach zu ignorieren und sich die rohen ADC-Werte durch einmaliges Ansteuern zu merken.
Also niedrigster jemals gemessener Wert = 0%, höchster gemessener Wert (ohne 5V) = 100%
Den höchsten Wert könnte man z.B. einmal setzen wenn man den Akku vollgeladen hat und er sicher voll ist. Den niedrigsten Wert indem man bis zur Abschaltung laufen lässt.
Dann kennt man zwar die Spannung in Volt nicht wirklich, aber das ist ja aktuell auch eher Raterei.
Hallo zusammen,
ich wollte mal meine Erfahrung schreiben.
Am Anfang dachte ich auch, dass die Akkuanzeige ein wichtiges Element ist bzw. wäre.
Im täglichen Gebrauch, brauche ich diese Funktion aber eigentlich nicht.
Wenn der Akku einmal voll ist, hält er etwa drei Wochen oder länger.
Wenn man mal vergisst in dieser langen Zeit die Box über Abend zu laden, merkt man irgendwann, dass die Box etwas spinnt. Dann muss man wohl wieder laden.
Ich habe aber auch schon drüber nachgedacht, ob man das ganze recht einfach über Laufzeit und Lautstärke berechnen kann. Man müsste dann wohl einmal einen Testlauf überlegen, wie man die Resetpunkte (Geladen, Entladen) hinbekommt. Wird die Box nur halb geladen würde es nicht gehen.