Download Quellcode:
Lolin32_mit_BAT_OLED.ino
Die Software auf dem ESP32 ist
in erster Linie dafür zuständig, das System bei Inaktivität in den
DeepSleep zu versetzen und bei Betätigung der Mechanik wieder
aufzuwecken. Für diese Funktionalität wird Pin 13 des Lolin32 lite
als Wakeup-Interrupt verwendet. An diesem Pin liegen 3,3V (also
"High") an, sobald der Generator eine Spannung liefert.
Im
wachen Zustand wird die Spannung an Pin 27 (Spannungsteiler) analog
ausgelesen. Anhand dieses Wertes kann der Batterieladestand mit den
folgenden Berechnungen ermittelt werden:
- der analoge
Eingang hat Werte zwischen 0 und 4095 (entspricht 0V bis 3,3V) -
es ergibt sich: 3300/4096 = 0,8056 mV pro Schritt des ADC
- weil der Spannungsteiler die Batteriespannung halbiert, muss
dieser Wert noch mit Faktor 2 multiplziert werden: 0,8056*2
= 1,6113 mV pro ADC-Schritt - Hieraus ergibt sich:
Batteriespannung = 1,6113 * ADC-Wert - der so
ermittelte Spannungswert kann direkt in den prozentualen Ladezustand
umgerechnet werden, weil dieser proportional zur Batteriespannung
ist (4,2V Ladeabschaltspannung = Akku voll / 3,0V Abschaltspannung
Entladung = Akku leer).
Der berechnete Batterieladestand wird
anschließend zusammen mit dem BootCount auf dem angeschlossenen
OLED-Display für 1,5 Sekunden angezeigt. Während der ESP32 wach ist
leuchtet außerdem die vorhandene Onboard-LED zur Symbolisierung
dieses Zustandes. Nach Ablauf der eingestellten Zeit werden das
Display und die Onboard-LED ausgeschaltet und der ESP32 versetzt
sich wieder in den DeepSleep, bis die Vorrichtung das nächste Mal
betätigt wird. |