Eine Anzeige für meinen Akku
Ich habe ja einen LiFePO4-Akku für meine Solaranlage gebaut. An sich funktioniert dieser auch gut und die Daten lassen sich per App ohne Probleme auslesen, irgendwie ist es aber doch etwas unschön, die Daten nicht richtig im Venus-OS und VRM zu haben. (Ich habe das dbus-serialbattery-plugin ausprobiert, das hat aber regelmäßig falsche Daten ausgegeben - zum Beispiel 213% Ladestand - weswegen teilweise die Laderegler aufgehört haben zu laden.) Außerdem finde ich für die Verwendung bei Demos auch eine Ladestandsanzeige hübsch, auf der mensch auch ohne Handy den Ladestand ablesen kann.
Ansprüche
- Anzeige des Ladestands des Akkus
- Anzeige der Spannung und des Aktuellen Stroms
- Anzeige der einzelnen Zellspannungen
- Anbindung an Venus-OS und VRM
Komponenten
- Ein Firebeetle-ESP-32-E
- Ein OLED-Display
- Ein Rotary-Encoder
- Ein RS485-UART/TTL-Wandler
- Ein CAN-UART/TTL-Wandler
- Ein 30V-5V Step-Down Netzteil
- Eine eigene Platine
- Standoffs und Schrauben
Der Code
Sowohl der Code, als auch das Design für die Platine, lässt sich im Git-Repo finden. Die Anbindung an das BMS läuft über RS485 und nicht über UART, weil mein BMS nur einen UART-Anschluss hat und dieser schon mit dem Bluetooth-Modul belegt ist. Das Protokoll, über das das BMS kommuniziert, lässt sich auf viel Nachfragen beim Hersteller zuschicken, für die Anbindung an Victron musste ich ein bisschen recherchieren und viel ausprobieren und habe herausgefunden, dass Victron den SMA-CAN-Standard akzeptiert. Danach musste ich "nur noch" viel im Code herumspielen und ausprobieren, damit alles funktioniert.
Die Platine
Die Platine habe ich mit KiCad designed. Ich zum zweiten mal nach langer Zeit KiCad wieder verwendet und diesmal wieder ganz viele Fehler eingebastelt, die mir erst nach langer langer Zeit und natürlich erst als die Platine da war, gefunden. Trotzdem habe ich alles lösen können und das Ergebnis ist hier:
Kosten
Insgesamt hat alles zusammen etwa 20€ gekostet, der größte Posten sind die Platinen ~9€. Die würden sich auch noch etwas optimieren lassen, ich fand sie von dem Format her aber doch schon ganz schick und praktisch.
Nutzung und Probleme
Hin und wieder stürzt der ESP32 beim senden der Daten über CAN ab. Gegebenenfalls liegt das an dem CAN-Netzwerk, wenn der ESP32 die Daten nämlich nicht gesendet bekommt, startet dieser sich neu. Dann kann es sein, dass für ein paar Sekunden der Ladestand auf Null gesetzt ist und damit die Minima und Maxima in der Statistik zerreißt. Lösen ließe sich das potentiell mit dem Speichern des letzten Messwertes im EEPROM, oder eine deutlich besseren internen Logik.
Außerdem ist die Anzahl der Zellen im Akku, die auch für die Anzeige der einzelnen Zellspannungen verwendet wird, im Code auf acht festgelegt und muss angepasst werden, ggf. wäre dafür ein Menüeintrag auch ganz hübsch.
Außerdem stürzt der ESP32 manchmal beim Speichern der Einträge im Menü ab, woran das liegt, weiß ich aber nicht.