Balancer-Modul mit Einzelzell-Überwachung

Hi.

Ich arbeite gerade (mal wieder) intensiv am Balancer-Modul und der Einzelzell-Überwachung. Diesbezüglich und zur genaueren Erläuterung des Problems möchte ich hier mal eben einen Dialog zwischen Matthias und mir wiedergeben.

Matthias fragte:

Nochmal zum mitschreiben.
Was genau muss bei den einzelnen Blöcken nochmal überwacht werden? Das die Spannung bei jedem einzelnen nicht zu hoch wird?

Falls ja, hast dus schon mal mit einer Zener-Diode probiert?

Meine Antwort darauf:

Das sie nicht zu hoch und nicht zu niedrig wird, ausserdem müssen die Zellen gegeneinander „ge-balanced“ werden (Stichwort: BMS, Balancer). Dh., unterm Strich braucht man eine permanente Anzeige der Spannungen der einzelnen Zellen.

Zener-Diode ist ein möglicher Weg, um eine Überspannung hardwaremässig bzw. analog zu verhindern, das reicht hier aber nicht bzw. die Überwachung und Steuerung soll digital, d.h. über Mikrocontroller erfolgen. Soweit so gut, das Problem an dem ich knabbere dreht sich nur darum, wie man die Einzelzell-Überwachung am besten technisch realisieren kann. Normalerweise liest man Spannungen am Arduino-ADC über einen Spannungsteiler ein. Das geht auch bei mehreren Zellen, über mehrere Spannungsteiler.

Allerdings hast Du hier dann das Problem, das alle messungen sich auf den gemeinsamen GND des Arduino beziehen, d.h., Du misst entlang der Zellen 3.2V, 6.4V, 9.6V, usw. und ermittelst dann durch Subtraktion den Einzelzellwert. Damit wird die Messung entlang der Zellen aber immer ungenauer; bei der untersten Zelle bildest Du eine Spannung von 3.3V mit einer Auflösung von 10Bit=1024 ab, bei der obersten (von vier) zellen sind es schon 12.8V, geteilt durch 1024. Bei einer Anwendung wie Pedelec (36V) oder Elektroauto (72V oder gar 96V) werden es dann noch mehr bzw. wird die Ungenauigkeit noch größer.

Und was aus meiner Sicht noch schlimmer ist: Die unterste Zelle „sieht“ nur ihren Spannungsteiler bzw. verballert Strom darüber. Die nächste zelle verbrät Strom über sowohl ihren als auch über den Spannungsteiler der untersten zelle. Die nächste zelle sieht sowohl ihren, als auch die beiden darunterliegenden Spannungsteiler, usw. Auch wenn das zunächst jeweils nur wenige Millivolt sind, summiert sich das doch über die zeit rasch auf, was bei einer Akuanwendung eh unerwünscht bzw. fatal ist, aber am schlimmsten dabei ist, dass Du die zellen dann sehr ungleichmässig bzw. unterschiedlich entlädst und damit erst recht und gezielt aus dem Gleichgewicht bringst bzw. sie „de-balanced“. Bei allen Lithium-Akkus ist das balancen aber sozusagen kriegsentscheidend: Wenn die Zellen zu stark auseinander „driften“ besteht nicht nur die Möglichkeit, daass der Akku zerstört wird, sondern er kann sogar explodieren. Und hier gehts nicht nur um kleine handy-Akkus, sondern zB. um fette Solarspeicher für Haus-Photovoltiok-Analage, mit einem zig-fach höheren Energiegehalt, das ist dann wahrlich kein Spass mehr, wenn so ein teil hochgeht sondern eher ne Art Hiroshima-Bombe.

Der eleganteste Weg, um die Messung zu machen, wäre differentiell zu messen, also zwischen den jeweiligen zellen, so wie mit nem Multimeter von Hand, und stets nur 3.2V. Das macht man mit Op-Amp und Comparator, aber es ist halt technisch anspruchsvoll und übersteigt meinen elektrotechnischen Horizont um etliche Kilometer. Ich hatte aber dennoch eine Chance darin gesehen, das mit nem ADC, wie zB. dem MCP3208 machen zu können und habs ausprobiert. Es ging dann zwar, die einzelnen 3.2V-Werte zu messen, aber ab der zweiten Zelle überstieg die Zellspannung mit 6.4V die zulässige Höchstgrenze des ADCs von 5.5V. Um das festzustellen hab ich drei Stück von den Dingern durchgebraten > :wink: > die genaue Beschreibung dieses Ansatzes findest Du hier: > Akku Einzelzellenüberwachung mit MCP3208 differentiell ? - Mikrocontroller.net

Und hier: > https://discourse.test.opensourceecology.de/t/solarbox-powerbank-prototyp-v-01/560/1

Hier nochmal der Schaltplan von dem differential-Ansatz (auch wenn der so nich funktioniert hat, aber zum besseren Verständniss):





Mein aktueller Ansatz besteht nun darin, die jeweilige Messleitung bzw. die Spannungsteiler-Widerstände nun doch nicht differentiell, sondern gegen einen gemeinsamen GND zu messen und sie dafür aber elektronisch an- und abschaltbar zu machen, so dass über sie nicht permanent Strom verbraten wird, sondern nur für einen kurzen Sekundenbruchteil während der messung einer jeweiligen zelle. Sieht so aus, als könnte das funktionieren, zumindest hab ich gestern damit zum ersten mal eine zelle bzw. deren messung gzeielt an und ab geschaltet und ausserdem zum ersten mal einen Balance-Vorgang durchgeführt. ich evaluiere das derzeit noch, aber es könnte so gehen.

Ich werde weiter dazu berichten …

Gruss, Oliver

Hier der aktuelle Ansatz, bei dem die einzelnen Messleitungen durch einen Transistor individuell eingeschaltet werden können.

https://wiki.opensourceecology.de/images/f/f6/Mcp3208switch_transistor2.pdf


Die Möglichkeit zu schalten beinhaltet auch, dass man die jeweilige Einschaltdauer individuell bestimmen kann. Ich denke, damit kann man dann auch das Problem der unterschiedlich starken Stromentnahme („de-balancing“) beheben. Man müsste dazu einfach nur die unteren Zellen entsprechend länger messen, so dass der unteren Zelle über die Zeit eine Menge an Strom entnommen wird, die in Summe aequivalent ist zu der erhablich höheren Stromentnahme-Menge der obersten Zelle.


An dieser Stelle kam mir der Gedanke, das es eigentlich auch möglich sein müsste, die Spannungsteiler-Widerstände quasi als Lastwiderstände zum balancen zu gebrauchen. Aber der Strom liegt im einstelligen Mikroampere-Bereich, so das das Balancen ewig dauern würde.

Ich habe daher nochmal die gleiche Mimik mit Lastwiderständen von jeweils 150 Ohm realisiert, und zwar ebenfalls unter Verwendung eines BC547 Transistors. Normalerweise nimmt man hierzu Mosfets, aber da der BC547 mit ca. 200 mA belastet werden kann und ich einen Balance-Strom von kleiner als 100 mA anstrebe, sollte das wohl ausreichend sein und m.E. etwas kostengünstiger.

Das Balancen funktioniert übrigens so: Die Zellen werden ja permanent überwacht. gegen Ende des regulären Ladevorgangs, also wenn die Zellen voll sind, wird auf die Unterschiede zwischen den einzelnen Zellen geschaut, die im Idealfall möglichst nur wenige mV auseinanderliegen und man identifiziert die stärkste und die schwächste Zelle. Bei der stärksten Zelle wird nun über den Lastwiderstand gezielt etwas Strom abgelassen. Man nennt diese Art von Balancing auch „Bleeding“, d.h., der stärksten zelle wird etwas „Blut“ abgezapft, und zwar soviel, bis sie den Wert der schwächsten Zelle erreicht hat. Nun liegen alle Zellen wieder etwas unter dem Maximalwert (= der Ladeschlussspannung) und können wieder geladen werden, bis wieder eine der zellen den Maximalwert erreicht. Auch dieser wird wieder etwas Strom abgezapft, und der Vorgang wiederholt sich solange, bis alle Zellen mehr oder weniger gleichzeitig den Maximalwert erreichen und somit nun ausbalanciert sind. Mission accomplished :wink:


Ja, soweit der aktuelle Plan. Ich hab die Einzelzellüberwachung bereits auf dem Steckbrett aufgebaut und es scheint zu funktionieren, jetzt muss ich noch die Balancer hinzufügen. Das balancing hab ich aber zumindest schon mal separat an einer einzelnen zelle getestet und es schien ebenfalls zu funktionieren, mal schauen ob es das auch im Gesamt-Aufbau tut :wink:

Als ADC hab ich hier den MCP3208 mit 12-Bit Auflösung und 8 Kanaälen verwendet, die ADC-Ports des Arduino haben im Vergleich dazu nur 10 Bit. ich hab aber so das Gefühl, das die 10-Bit zumindest bei einem 4s-BMS (also bei einem Batterie-Management-System welches zur Überwachung von 4 Einzelzellen in Reihe ausgelegt ist) ausreichend sein könnten. Idealerweise strebt man eine Messgenauigkeit von bis zu 10mV an und die kann man mit den 10Bit-ADCs des Arduino so einigermaßen erreichen: 12.8V / 1024 = 12.5 mV bzw. 14.4V / 1024 = 14mV (12.8V ist der Nennwert, 14.4V die Obergrenze).

Man könnte also demnach für 4s den MCP auch weglassen. Umgekehrt kann man ihn bei größeren Zellzahlen, die ja einen größeren Volt-Bereich umfassen, verwenden oder gar einen MCP mit einer noch höheren Auflösung verwenden. Ich hab hier z.B. noch einen MCP3304 mit 13-Bit Auflösung rumfliegen, sowie das ADS1115-Breakout-Board von Adafruit (16-Bit, aber nur 4 Kanäle, https://www.adafruit.com/product/1085). Hab die beiden noch nicht getestet, aber im Prinzip müsste es damit genauso gehen; der MCP3304 ist sogar pin-kompatibel zum MCP3208.

Insofern tendiere ich im Moment zu zwei Varianten: einmal eine möglichst einfache 4s-Version, bei der ein kleiner Arduino Nano zum Einsatz kommt und auf den MCP verzichtet wird (oder dieser optional ist), sowie eine größere 12s- oder gar 16s-Version (36V bzw. 48V). Dafür bräuchte man dann schon einen Arduino Mega256, der über wesentlich mehr freie Pins als der Nano verfügt. Und hier wäre dann auch aufgrund des höheren Volt-Bereiches auch der Einsatz von mindestens zwei externen ADCs mit entsprechend höherer Auflösung höchst sinnvoll.


Gruss, Oliver

oha, ich glaub ich seh da noch einen dicken Fehler im obigen Schaltplan:

Der balancer-Lastwiderstand darf natürlich nicht gegen den gemeinsamen GND gehen sondern muss sich jeweils über einer Zelle aufspannen, zwischen dem Pluspol der Zelle und deren Minuspol bzw. dem Pluspol der nächsten Zelle.

Gruss, Oliver

So, jetzt hab ich den Fehler behoben.

Und die Schaltung vervollständigt.

Ausser dem Balancer und der EinzelZell-Überwachung ist jetzt noch das Charger- und Discharger-Modul hinzugekommen, sowie ein IoT-Modul für Datasampling, mit eigenr 3.3V-Stromversorgung und desweiteren noch eine 5V-Stromversorgung für den Arduino. Achja, und den MCP3208 hab ich für diese s4-Version erst mal wieder weggelassen, nach dem Motto: Einfachheit ist Trumpf :wink: und weil ich ausprobieren möchte, ob der interne 10-Bit ADC vom Arduino bzw. die 14mV messauflösung nicht auch ausreichend sind, wie ich vermute .

Hier der gesamte Schaltplan (in KiCAD erstellt):

https://wiki.opensourceecology.de/images/4/43/Mcp3208switch_transistor4.pdf

Als nächsten Schritt werde ich die Schaltung jetzt komplett auf dem Steckbrett aufbauen und im Gesamtzusammenhang testen. Wenn das funktioniert (daumendrück) fange ich an, ein Platinenlayout dafür zu routen.

Gruss, Oliver

Übrigens gibts noch eine Sache, die suboptimal ist und die ich gerne noch verbessern würde.

Ich verwende für den Charger- und Discharger-Mosfet einen IRF9540. Der hat aber den Nachteil das er, wie alle P-Channel-Mosfets, einen sehr hohen R_DSon Wert von 0.3 Ohm aufweist und somit ziemlich viel kostbare Energie in Form von Wärme sinnlos verbrät.

Was ich stattdessen wesentlich lieber verwenden würde, das wäre ein IRLIZ44N. Das ist zum einen Logic-Level-Mosfet (was den Aufbau verschlanken würde) und zum anderen hat der einen um ca. Faktor 10 besseren R_DSon-Wert von nur 0.02 Ohm.

Aber leider ist das ein N-Chanel-Mosfet, der nur in Low-Side-Konfiguration eingesetzt werden kann. Und ich weiss nicht wie das geht, bzw. das scheint wohl irgendwie nicht so trivial zu sein, weil es dann Rückstromprobleme mit der intrinsischen Body-Diode geben kann oder so.

Da wäre ich für Hinweise von jemandem der Ahnung hat dankbar.

Gruss, Oliver

So, das ist jetzt der aktuelle Plan. Ich hab die Transistoren zur Steuerung der Balancer-Lastwiderstände noch durch IRLZ34N Mosfets ersetzt und diese vom Arduino galvanisch entkoppelt mittels 4N25 Optokopplern. Und hab Zur Messung jetzt doch wieder nen ADC hinzugefügt, aber mit einer höheren Bit-Auflösung (15 Bit). Mit dem Arduino-ADC würde es auch gehen, aber der hat nur 10 Bit, dadurch hat man eine größere Ungenauigkeit, von knapp 5 mV. Der ADS1115 hingegen liefert stabile Messwerte auf 1mV genau, bei einer Auflösung von 0.1875 mV :wink:.

https://wiki.opensourceecology.de/images/3/3a/Solarbox_balancer_ads1115.pdf


Bezügl. der Power-Mosfets vom Charger-Modul strebe ich an, die P-Chanel Mosfets durch N-Chanel IRLIZ44N zu ersetzen, die mittels eines IR2104-treibers im Bootstrap-Modus in High-Side-Konfiguration betrieben werden können und einen R-DSon von 22 MilliOhm aufweisen.
Das ist Faktor 15 besser als jetzt, aber Optimierungen können später noch erfolgen, jetzt heissts erstmal, die Schaltung ans laufen zu bringen.

Bin momentan noch dabei, die Sache auf dem Breadboard aufzubauen und zu testen, sowie, die Firmware für den Arduino zu programmieren.

So siehts da gerade aus :wink:

Oben links ist das Charger-Modul. Ganz links ist der Photovoltaik-Eingang (blauhe Anreihklemme). Die beiden großen grünen Platinen sind der Charge- und Discharge-Mosfet. Die beiden blauen Platinen sind die ACS712 zur Strommessung, sowohl eingangsseitig, als auch Verbraucher-seitig.

Unten links der Arduino-Nano, mit einem Schaltregler zur Stromversorgung aus der Batterie. Rechts vom Nano befindet sich der ADS1115 ADC.

Rechts davon ist das Balancer-Modul. In der oberen Reihe sieht man die Spannungsteiler-Kaskade zur Messung der einzelnen Zellspannungen. In der unteren Reihe die Mosfets für die Steuerung der Balancer-Lastwiderstände. Die Optokoppler musste ich hochkant stellen um alles auf dem Board unterbringen zu können :wink: Die blaue Anreihklemme ganz rechts oben ist der Batterie-Haupteingang.

Am unteren Rand sieht man die einzelnen Adern vom Balancer-Kabel (orange, lila, grau, weiss) welches mit der Batterie verbunden ist.

Dadrüber befindet sich das WLAN-Kommunikations-Modul für IoT-Datalogging, mitsamt einer eigenen 3.3V-Stromversorgung. Die blaue Anreihklemme ist der Verbraucher-Ausgang.




Gruss, Oliver

Nachdem ich die Firmware grob beisammen habe gehts jetzt ans testen. Dazu hab ich zunächst nochmal die Sensorik feinstmöglich kalibriert. Die einzelnen Zellen werden jetzt mit einer Genauigkeit von < 10 mV gemessen. Die Messung von Solar- und Laststrom erfolgt mit einer Auflösung von 27 mA.

Damit geht es jetzt ans Balancing. Hier der erste vorsichtige Versuch, bei dem einfach nur der Akku bei einem leichten Ladestrom, aber noch ohne Last für ein paar Stunden gebalanced wurde.

Tags zuvor hatte ich noch einige Probleme damit die darauf basierten, dass der Balance-Strom mit 320 mA (10 Ohm Last-Widerstand) deutlich zu hoch gewählt war. Durch das Balancen einer Zelle ergeben sich nämlich anscheinend auch auf den anderen Zellen Spannungsabfälle und -Zunahmen, deren Ausschläge von 2.8 bis 3.7 mV reichen. Damit wurden dann aber gleich automatisch die Über- und Unterspannungsabschaltung ausgelöst so das das ganze System ständig am hin- und her-switchen war … das resultierende Chaos kann man im Diagramm zum Zeitpunkt Do 12:00 sehen.

Ich habe die Last-Widerstände dann gegen 67 Ohm ausgetauscht, so dass der Laststrom auf 48mV beschränkt ist und damit bleiben die Ausschläge innerhalb des gewünschten Arbeitsbereiches und der Balancing-Algorithmus kann unbehelligt arbeiten.

Ich hab das Balancing dann Fr 11:00 erstmalig manuell eingeschaltet und laufen lassen. Sobald der Ladestrom vom Solarpanel unter 100 mA fiel stoppte auch das balancing programmgemäß, kurz nach 18:00 Uhr.

Hier ein Bild von der Endphase:

Die einzelnen Peaks in der Darstellung geben nicht ganz korrekt den exakten Verlauf des Balancings wieder, sondern sind das Resultat einer Unterabtastung, weil das Datasampling und die Visualisierung serverseitig im Takt von 1 Minute erfolgt, während die Daten vom Arduino selbst im 3-Sekundentakt ausgespuckt werden. Da die Balancingphase immer jeweils auf 6 Sekunden beschränkt ist kann es sein, dass die vom Server gerade nicht mit erwischt wird, was aber auch von der Länge des dazwischenliegenden Intervalls abhängt. Das kann (bei starkem Balancing-Bedarf) minimal 3 Sekunden dauern bis hin zu einem längeren Intervall, wenn die Zellen gut ausbalanciert sind, zB. waren so 6s bis 30s Intervall nach einer einmaligen Balancingphase (von 6 s), durchaus nicht unüblich, soweit ich das direkt an der (schnelleren) seriellen Datenausgabe vom Arduino beobachtet habe, aber es mag später auch zu längeren Intervallen gekommen sein, wie das Diagram auch trotz der Unterabtastung nahelegt - bei einer längeren Intervallphase erhöht sich einfach die Wahrscheinlichkeit, das das Intervall mit auf dem Sample abgebildet wird. Abgesehen davon gibts auch noch von Seiten der rrdtool-Visualisierung einen gewissen Average-Effekt, der einzelne Peaks tendenziell unterdrückt.

Im vorliegenden Versuch war der Akku bereits schon vorher gut ausbalanciert, insofern geht seine Aussage wohl eher in die Richtung: „Mein Balancing Algorithmus scheint die Balance der Zellen zumindest schonmal nicht verschlechtert zu haben“. Was bei dieser Sportart schonmal ein gutes Zeichen ist :wink:

Wie man auf dem Diagramm sehen kann beträgt das größte Delta zwischen den Zellen gerade mal 4mV. Vom Programm her war dabei ein max_Delta von 15mV eingestellt.

Das Balancing scheint also schonmal so halbwegs zu laufen. Aber leider gibt es im Vorfeld noch ein Problem. Ich bekomme irgendwie keinen höheren Ladestrom als rund 200 mA zustande. Wie man im folgenden Diagramm sehen kann ist die lila Kurve, die den reinkommenden Solarstrom anzeigt oberhalb von 200 mA quasi platt abgeschnitten.

Ich hab keine Ahnung woran das liegen kann. Dachte zuerst, mein Solarpanel (18V, 0.5A, 10W) wäre zu schwach da es sich an einer etwas ungünstigen Position (indoor, unterm Dachfenster mit Ostausrichtung) beffindet. Das lieferte so je nach Sonneneinstrahlung zwischen 200 und 300 mA. Daraufhin hab ich ein 100W-Panel (mit Süd-Ausrichtung) drangehangen, bei dem ich den abgezaptften Strom mit einem 22Ohm Widerstand auf rund 800 mA beschränkt habe, die auch als Panel-Kurzschlusstrom anliegen bzw. messbar sind.

Trotzdem gibts da diese magische Grenze. Ich hab zuerst gedacht es liegt vielleicht an der Rückstromdiode vom charger-modul oder an dem Charge-Mosfet oder was weiss ich, aber selbst wenn ich die überbrücke, scheint die Batterie partout nicht mehr schlucken zu wollen. Ok, nun war sie auch ziemlich voll vorher, die einzige Last, die da permanent drauf liegt, das ist der Eigenbedarf der Schaltung, das sind rund 80mA. Insofern werd ich nochmal schauen, ob die Schaltung bei leererem Akku mehr Strom aufnimmt, aber so richtig dran glauben tu ich nicht, dafür erscheint mir die abgeschnittene Ladekurve irgendwie zu gerade abgeschnitten.

Ich frage mich auch, ob es vielleicht an meinen Zellen liegen kann, immerhin haben die i.d. Vergangenheit beim testen schon mal den einen oder anderen leichten Schlag (read: Kurzschluss) abbekommen. Ich glaube ich sollte wirklich mal so langsam die Sicherungen davorsetzen, die im Schaltplan ja auch vorgesehen sind, aber in der Praxis platzmässig nicht mehr mit auf das Breadboard gepasst haben. :wink:

Na, mal schauen. Bis hierhin erstmal.

Gruss, Oliver

[Nachtrag: Ich hab nochmal den Akku direkt mit dem Panel verbunden. Zieht auch nur 200mA. Dann nochmal einen anderen LiFePO4-Akku drangehängt, der zog 950mA. Es liegt also definitiv am Akku. Ich hoffe es ist nur eine Zelle defekt, ich hab auch noch Ersatzzellen dafür da :wink: Aber nervig, den jetzt zerlegen zu müssen.]

So, als nächstes hab ich mal den Akku näher untersucht und dabei festgestellt, dass jede Zelle einzeln etwas über 600mA ziehen kann … auch die Bottom-Zelle, welche ich in Verdacht hatte. Wenn man zwei Zellen zusammenschaltet, dann verringert sich das auf rund 500 mA, bei 3 dann auf rund 350mA und alle vier zusammen nur noch auf den bereits bekannten Wert von rund 170mA. Das leuchtet mir nicht wirklich ein, da die Zellen doch seriell und nicht parallel verschaltet sind. Vielleicht ist da noch ein Denkfehler oder ein fehler im messaufbau … k.A.

Dann hab ich mir mal den Innenwiderstand angeschaut mittels einer Strommessung an einem Lastwiderstands (von 10 Ohm) jeweils an einer einzelne Zelle, nach der Formel R_i = (U_0 - U_Last) / I. dabei zeigte sich bei den oberen 3 Zeilen jeweils ein ähnlicher Innenwiderstand von 4 Ohm, was mir sehr hoch vorkommt. Die Bottom-Zelle hat sogar 6 Ohm. Ich hab letztere daraufhin ausgetauscht, aber nun ergab sich das Problem, das die Ersatz-Zelle in einem anderen, besseren Zustand ist, als die drei übrigen Zellen vom Pack. Insbesondere scheint sie die Energie schneller und besser aufzunehmen und gibt sie auch schneller wieder ab. In der Hoffnung das sie sich den anderen angleicht hab ich die Sache mal ein paar Tage laufen lassen, ohne Last, d.h., bis auf die Last durch die Schaltung selbst (was immerhin rund 80mA sind) und schliesslich schien sich die Differenz doch deutlich zu verringern und auch die Balance verbesserte sich.

Da ich dem Akku aber erstmal nicht mehr traute, hatte ich zwischenzeitlich einen neuen bestellt, und zwar diesmal einen mit 20Ah, statt nur wie beim alten Akku 10Ah. Damit ist der Akku ideal passend für die Solarpanel-Zielgröße von 100Wp, worauf auch die Schaltung ausgelegt ist. Um eine lange Lebensdauer zu erreichen möchte ich den Akku nur mit 3/10 C laden, das macht dann 7A … ein 100Wp-Panel gibt maximal 5.5 bis 6 A ab, passt also prima.

Da die Winstons bei meinem Anbieter erst ab 40Ah verfügbar sind, hab ich diesmal GBS-Zellen genommen. Die haben einen etwas schlechteren Innenwiderstand (3 mOhm) als die Winstons (0.5 mOhm), kosten dafür aber auch um einiges weniger. Also eine gute Gelegenheit, die auch mal auszuprobieren und damit hab ich dann schon von 4 der bekannteren LiFePo4-Marken (Winston, GBS, Headway und Wina) Akkus im Hausgebrauch :wink: .

Die Zellen haben an den Anschlusspolen ein M5-Innengewinde. Es gibt dazu schicke Kupferbänder als Verbinder, aber da ich die grad nicht da hatte hab ich selbst Verbinder mit M5-er Kabelschuhen gebaut. Ebenso das Balancer-Kabel und das Pack-Kabel. Da die Adern vom Balancer-Kabel sehr dünn sind habe ich da vorher noch einen DuPont-Stecker drangekrimpt, der etwas dicker ist und sich somit im Kabelschuh besser festklemmen lässt (aber ausserdem hab ich die Kabel auch noch zusätzlich im Kabelschuh verlötet).

Dann kam der spannende Moment: Am meisten interessierte mich natürlich, ob das Problem der geringen Stromaufnahme durch den neuen Akku jetzt behoben wäre.

Aber leider war dem nicht so :frowning: , sondern auch hier kamen beim laden nicht mehr als 200 mA in den Akku, obwohl auf der PV-Leitung 780 mA (gemessener Kurzschlussstrom) anliegen. Verbibsch ! :wink:

Ohne eine Antwort auf dieses Problem zu haben, hab ich dann trotzdem erstmal die Sache laufen lassen um mir das balancing anzuschauen, welches im folgenden dargestellt ist:

Was schonmal nicht so erfreulich ist, das ist, dass die Ausschläge wieder ziemlich groß sind und gelegentlich sogar die HVC/LVC-Grenzwerte von 3.5 und 3.0V über- und unterschreiten was dann entsprechende CuttOffs nach sich zieht. Ich bin mir nicht sicher ob es vom Algorithmus her ok ist, die während des balancens gemessenen Werte bei den CutOff-Tests mit zu berücksichtigen, aber andererseits haben die ja ihren Sinn; die Zellen sollen einfach niemals die Grenzwerte unter- oder überschreiten. Meine Hoffnung wäre nun, das sich das wieder legt bzw. die Ausschläge kleiner werden, wenn die Zelle erstmal gut ausbalanciert wäre. Ich hatte sie in diesem Fall so drangehängt wie sie ab Werk waren und nicht vorher anderweitig (z.B. mit meinem IMaxB6) balanciert o.ä.

Erfreulich ist, das das balancing an sich zu funktionieren scheint. Nachdem in der ersten Zeit vor allem die Top-Zelle recht intensiv balanciert wurde (lila Kurve) gab es nach einer Weile erste vereinzelte Phasen, wo die Zellen weitgehend in der Balance waren, zB. um 9:05, 9:30 und 9:50.

Im weiteren Verlauf sieht man, wie sich das abwechselt und mal diese und mal jene Zelle balanciert wird (was man auch so erwarten würde da ja die Zellen derweil trotzdem noch geladen werden).

Gegen Ende betrug das Delta weniger als 10 mV, was ich als Indikator dafür sehe, das das Balancing an sich wohl doch irgendwie zu funktionieren scheint. Allerdings wurde auch diesmal wieder ohne Last und mit einem leidlich vollen Akku getestet. Mit Last zu testen wäre jetzt der nächste Schritt, oder auch aus einem entladeneren Zustand heraus. Darum werd ich jetzt mal während der Nachtphase den Verbraucher anschalten, der zieht rund 290 mA, zusammen mit dem Eigenverbrauch der Schaltung sind das dann ca. 370mA.

Zuguterletzt gab es im Hinblick auf das Problem der verminderten Stromaufnahme noch einen deutlichen Fortschritt. Da es ja nun wohl doch nicht am Akku lag hab ich mir nochmal die PV-Zuleitungsstrecke genauer angeschaut und einfach mal spasseshalber den 22 Ohm durch einen 10 Ohm Widerstand ausgetauscht. Und siehe da, auf einmal wanderten rund doppelt soviel, nämlich knapp 400 mA, in den Akku, wobei der Kurzschlussstrom auf der PV-Leitung 1.5A betrug.

Das ist schon ziemlich hart an der Grenze. Die Schaltung ist zwar für bis zu 10A ausgelegt, aber solange das Ganze noch auf dem Breadboard stattfindet, wollte ich 1A nicht überschreiten, sonst schmilzt mir noch das Breadboard :wink: Ansonsten hätte ich den Widerstand gerne mal ganz rausgenommen. Aber zumindest sind wir damit bei dem Problem schonmal einen Schritt weiter und mit 400mA Ladestrom kann man schon deutlich besser testen. Und ich weiss schonmal, an welcher Schraube ich drehen kann, wenn ich noch mehr haben möchte :wink: .

Gruss, Oliver

Nachdem die Ausschläge zwar zunächst wieder recht hoch waren, dann aber nach einiger Zeit balancing deutlich kleiner wurden und sich sogar teilweise wieder innerhalb des gewünschten Bereiches bewegten (3V bis 3.5V) und dann keinen LVC/HVC mehr auslösten, bin ich einfach mal mutig geworden :wink: und hab die Messung während des balancens jetzt komplett rausgenommen, d.h., jetzt wird einfach für 6s gebalanced ohne zu messen, danach 2s warten, damit sich die Leitungen wieder „beruhigen“ und dann messen.

Das scheint recht gut zu funktionieren, die folgenden Diagramme sehen jetzt so aus, wie ich es eigentlich erwartet/gewünscht habe:

Das Delta ist kleiner als 10 mV.

Und so sieht die zugehörige Ladekurve am Solareingang aus:

Wie man sieht gibts keine Fragmentierungen mehr durch LVC/HVC-bedingte Unterbrechungen. So soll es sein :wink:

Da insgesamt noch nicht wirklich viel Strom reingeladen wurde und in den letzten Tagen auch eh das Wetter ein bischen mau war, kommt mir der Akku ziemlich leer vor. Um nun die Sache auch mal unter Last zu testen will ich die Batterie vorher richtig voll machen, d.h., mit höheren Ampere laden.

Daher besteht jetzt der nächste Schritt darin, zumindest schonmal das Lade-Modul weg vom Breadboard und auf eine feste Platine zu bringen, dann kann ich volles Pfund geben :wink:

Ich wollte ja eigentlich für das Lade-Modul ein kleines Platinenlayout machen, aber hab mir überlegt, das sich das nicht lohnt, weil die p-channel Mosfets ja mittelfristig eh durch was effizienteres ersetzt werden müssen und da denke ich insbesondere an Martins High-Side-N-Switch Variante mit dem BQ76200.

Na, jedenfalls, um jetzt mal eben meine bisherige Variante mit höheren Strömen auf nem stabilen PCB testen zu können, hab ich mir jetzt für die P-Mosfets ein kleines Breakout-Board gelayoutet (unter KiCad). Das wollte ich eh haben, weil ich das auch für andere Sachen gebrauchen kann und damit kann ich dann auch mal eben schnell mein Lade-Modul auf Lochraster zusammenlöten.

Hier das Schema:




und das PCB-Platinenlayout:




und nochmal als 3D-Darstellung. Bestückungsseite:




Lötseite:

Ich verwende diesese Breakoutboard auch bereits auf meiner Breadboardschaltung, wie etwas weiter oben schon auf dem Bild https://wiki.opensourceecology.de/images/8/81/Sb3_bb5.jpg zu sehen, allerdings handelt es sich da noch um eine auf Lochrasterplatine gelötete Version. Ein geätztes PCB wär da natürlich etwas komfortabler :wink: