Direkt zum Inhalt
PekawayPekaway
Batterieüberwachung Shunt

Batterieüberwachung Shunt

en aktuellen Ladezustand einer Batterie zu überwachen, ist beim Campen und autarken Leben ein essenzielles wichtiges Element. Gerade bei der Verwendung von Lifepo4 Batterien, bei welchem man über die Spannung der Batterie nur sehr ungenaue Ergebnisse bekommt, muss man ein besseres Verfahren verwenden. 

 

Spannung vs. Strom messen

1. Messen der Spannung.

Dieses Verfahren ist ein sehr einfaches, daher auch nicht so genaues Verfahren. Hierbei wird über die Batterie-Spannung ein aktueller Zustand der Batterie berechnet. Dies ist möglich, da dieser mit dem Ladestand sinkt.  Dies ist bei einer AGM/Bleigel-Batterie noch ziemlich genau, da man hier von einem fast linearen Abfall sprechen kann, so ist es jedoch kaum anwendbar bei einer LiFePO4 Batterie, da hier die Spannung sehr stabil bleibt und nur zum Schluss stark abfällt.

 

2. Zählen des Stroms.

Die Kapazität wird in Amperestunden Ah oder Wattstunden Wh angegeben. Nehmen wir jetzt eine 100Ah LiFePO4 Batterie als Beispiel kann diese 100A für eine Stunde abgeben oder eben 1A für 100 Stunden. Wir benötigen nun also die Möglichkeit, die ausgehenden und eingehenden Ströme der Batterie zu überwachen und über die Zeit zu zählen. Diese Funktion ist bei vielen (nötigen) Batterie-Management-Systemen für LiFePO4 Batterien schon integriert und wir können den Ladezustand, oft SOC (State of Charge), erfahren. Dafür stellen die verschiedenen Hersteller Apps oder Schnittstellen bereit. In unserem VAN PI System werden momentan Daly/JBD - Xiaoxing/Liontron über Kabel oder Bluetooth unterstütz. Eine andere Methode den Strom zu überwachen ist ein Shunt. Dies ist ein kalibrierter "Widerstand" - besser gesagt ein Bereich im Stromkreis - wo wir über den entstehenden Spannungsabfall den Strom berechnen können. Solche Shunts haben einen typischen Spannungsabfall von 75mV auf einen bestimmten Strom wie zum Beispiel 100A. Dieser Spannungsabfall ist linear und wir können somit die Ströme genau berechnen und überwachen.

 

Beispiel Rechnung Shunt

Wir wissen also nun, dass ein Shunt ein kalibrierter niederohmiger Widerstand im Stromkreis ist, über den wir den Spannungsabfall messen, um darüber den Strom zu berechnen.  

Für die Berechnung benutzen wir das ohmsche Gesetz: U=R*I

Wir haben einen Verbraucher und unseren Shunt im Stromkreis. Über beide fallen jetzt messbare Spannungen ab. Alles, was wir nun tun müssen, ist das Messen des Spannungsabfalls über den Shunt. Wenn wir diesen Wert haben, können wir sehr einfach den aktuellen Strom berechnen, in dem wir einfach nach I umstellen.

I=U/R 

und 

R=U/I

also R=0,000375Ohm (0,075V/200A) bei unserem 200A Shunt. 

Somit können wir jederzeit den aktuellen Strom berechnen, sobald wir den Spannungsabfall messen können. 

 

Messen des Spannungsabfalls

Um den Spannungsabfall vom Shunt zu messen, verwenden wir einen Analog Digital Wandler mit einer Auflösung von 16bit. Den ADS1115 dieser wird über den I2C Bus eingebunden und misst dauerhaft den Spannungsabfall. 

Wer sich mehr dazu interessiert und selber etwas bauen möchte, findet in diesem Video eine sehr gute Erklärung. 

https://www.youtube.com/watch?v=uGb_i9UPIg8

Das Wichtigste an dieser Stelle ist nochmal zu betonen, dass der ADS nur sehr kleine Spannungen messen kann. Deswegen muss der Shunt an letzter Stelle vor der Batterie eingebaut werden. Somit fällt dort nur noch eine geringe Spannung ab, da die meiste Spannung schon über den Verbrauchern abgefallen ist. Solltet ihr den Shunt an falscher Stelle oder ein zu dünnes Kabel zur Batterie legen, wird der ADS höchstwahrscheinlich zerstört. Ebenfalls ist es ein Problem, dass wir über den ADS einen Massebezug haben. Solltet ihr versehentlich nur die PLUS Leitung am VanPI System angeschlossen und den Shunt verbunden haben, besteht ein Masseschluss über den ADS. Dieser kann so viel Strom nicht ab und wird zerstört. Deswegen immer zwingend die Masseleitung gleichzeitig mit der Plusleitung trennen und verbinden. 

Neben der Spannung vom Spannungsabfall müssen wir jedoch auch die Systemspannung messen. Dies passiert über einen Spannungsteiler. 

Hier findet ihr dazu die Beschaltung:

https://pekaway.de/docs/shunt/

 

Software zur Überwachung der Batterie 

Bis jetzt wissen wir ja nur den Spannungsabfall und damit den Strom. Was wir nun noch tun müssen, ist die über die Zeit zu addieren. Damit können wir den aktuellen Ladestand der Batterie ermitteln. Wir zählen also mit, wieviel Strom aus der Batterie entnommen wird und wie viel geladen wurde. 

Wir müssen relativ oft und sehr schnell die Abfrage des ADS und die dazugehörige Berechnung machen. Dies könnte direkt in Node-Red passieren, wäre aber zeitkritisch nicht optimal, da Node-Red immer noch eine EIN-THREAD Anwendung ist. Da unser RaspberryPi aber 4 Kerne hat und Node-Red also nur einen davon effektiv nutzt, wäre es doch schön, wenn wir die anderen 3 Kerne auch nutzen können. 

Genau dies haben wir getan, in dem wir die eigentlichen Shunt-Berechnungen in einem Python Script laufen lassen. Somit können wir unabhängig von allen Anfragen und Aufgaben in Node-Red den Shunt konstant auswerten. Dies bringt nur die Herausforderung, dass wir die Daten wieder zu Node-Red bekommen müssen und dies ungern über die SD machen wollen. Denn wir wissen ja, dass viele Schreibzyklen der SD nicht guttun. Deswegen haben wir in dem Python Script einen kleinen Webserver, integriert über den Node-Red sich die Daten via HTTP Abfrage holen kann. Die Daten kommen also dann aus dem Arbeitsspeicher und nicht aus einer File von der SD. Der aktuelle Batterieladezustand wird jedoch alle 5min auf die SD geschrieben, um nach einem Neustart wieder einen Anfangspunkt für die Überwachung der Batterie zu haben. 

Der Anfangspunkt ist hierbei auch nochmal wichtig zu erklären. Im Webinterface müsst ihr beim Einstellen der Batterie auch einen ungefähren Ladezustand der Batterie angeben. Denn der Shunt kann nur Strom überwachen, der raus und reingeht, aber nicht den tatsächlichen Zustand der Batterie auslesen. Ist der Anfangspunkt also falsch gesetzt, kann es hier falsche SOC-Werte vom Shunt kommen. Unser Python Script erkennt automatisch eine volle Batterie nach 15min Ladespannung ohne Ladestrom und setzt die Batterie auf voll. 

Wer sich das Script anschauen möchte, findet es an dieser Stelle auf dem Raspberry: 

~/pekaway/ads_py/web1.py

 

Ansonsten gilt natürlich wie immer: Fragen und Wünsche gerne in die Kommentare.

Hinterlasse einen Kommentar

Deine Email-Adresse wird nicht veröffentlicht..

weitere Tutorials

OpenSource needs Support

werde jetzt Patron

Mehr Projekte, mehr Tutroials und mehr unterstütze Geräte. Unsere Community wächst und freut sich auch über deine Unterstützung. Werde also jetzt Patron um immer die neuesten Inhalte zu erhalten und gleichzeitig das VAN PI Projekt zu unterstützen.

Patron werden
Warenkorb 0

Dein Warenkorb ist leer

Beginn mit dem Einkauf