Mein DIY esp32 multiplus2 ve.bus controller läuft nun seit 4 monaten stabil. Was fehlt ist eine BMS anbindung. Kann der multiplus intern den ladezustand errechnen? Falls ich das DIY rechnen muss, ich integriere V*A über die zeit auf? Ich stelle max und min SOC anhand der ladespannung z.b 54.4V und 48.0V ein Gibt es da bewährte algos? Ziel ist anhand des SOC entscheiden wieviel PV leistung ins netz geht. Bei niedrig akku gar nichts, bei fast vollem akku die erlaubten 600W.
:
Bearbeitet durch User
Anhand der Spannung lässt sich der Ladezustand grob in 3-4 Stufen einschätzen. Das scheint für deinen Fall zu genügen. > Falls ich das DIY rechnen muss, ich integriere V*A über die zeit auf? Es genügt die Messung der Spannung. Schau dir mal eine Ladekurve von LiIo Akkus an. Jetzt kommt das "aber": Wenn man einen Lithium Akku voll geladen hat, soll man mit dem Laden aufhören. Dadurch sinkt die Spannung wieder ab. Deine Logik sollte aber weiterhin davon ausgehen, dass der Akku noch voll geladen ist. Hat dein Laderegler keine "Akku voll" oder "lädt gerade" Anzeige? Davon könntest du ganz einfach abhängig machen, ob du Strom ins Netz einspeist, oder nicht. > Ziel ist anhand des SOC entscheiden wieviel PV leistung ins netz geht. Das klingt nach einer mehrstufigen oder gar analogen Regelung. > Bei niedrig akku gar nichts, bei fast vollem akku die erlaubten 600W. Das ist aber digital an/aus.
Steve van de Grens schrieb: > Es genügt die Messung der Spannung. Schau dir mal eine Ladekurve von > LiIo Akkus an. Nein, ich schaue das öfters an. In der praxis sagt die spannung nur nähe voll oder nähe leer etwas aus. Steve van de Grens schrieb: > Deine Logik sollte aber > weiterhin davon ausgehen, dass der Akku noch voll geladen ist. Deshalb ja die ladezustandsberechnung unabhängig der spannung. Ich mache jetzt schon estV = measV + amps*innenwiederstand. Das gleicht spannungsunterschied laden / nichtladen weitesgehends aus. Steve van de Grens schrieb: > Das klingt nach einer mehrstufigen oder gar analogen Regelung. Ja das ist analog. Den multiplus2 kann ich von -1850W verbrauch bis +1850W generieren in 10W schritten einstellen. 1850W weil das ist max für meine DC kabel (35A).
:
Bearbeitet durch User
Schau dich mal nach "Battery Gauge IC" um. Ich denke, so etwas brauchst du, um den Ladezustand einigermaßen präzise zu erfassen. Diese Mikrochips berücksichtigen auch Verluste beim Laden, sowie Alterung der Zellen.
Hadmut F. schrieb: > Kann der multiplus intern den ladezustand errechnen? Nein. Das geht ohne Kenntnis der Zelleneinzelspannungen gar nicht. Ein Akku ist voll, wenn die ERSTE Zelle die Ladeschlussspannung (von 3.65V bei LFP) erreicht und leer, wenn die ERSTE Zelle die Entladeschlussspannung (von 2.2V) erreicht. Handelt es sich dabei um dieselbe Zelle, ist das die schwächste und der Akku ausreichend balanciert. Sind das verschiedene, sollte durch Entladung der vollsten balanciert werden. Um maximale Zyklenanzahl zu erreichen, lädt man aber nur 80%. Schon das ist bei LFP schwer genug, von 3 bis 3.4V bleibt man irgendwo. man kann nicht mehr erkennen ob die Zellen balanciert wären weil der drastische Spannungsanstieg/abfall erst an den Grenzen erfolgt. Man kann nur raten und versuchen es bestmoglich zu machen. Vergiss also deinen Ansatz Hadmut F. schrieb: > Bei niedrig akku gar nichts, bei fast vollem akku die erlaubten 600W Es gibt 2 Architekturen: billige Wechselrichter die immer MPPT ins Netz speisen und einen standalone Akku der aus dem Netz per eigener Ladeschaltung nicht mehr Ladestrom zieht als Einspeisung - Eigenverbrauch und per eigenem Wechselrichter nicht mehr einspeist als Eigenverbrauch, dann geht bei vollem Akku alle erzeugte Restleistung ins Netz. Oder vom Solarmodul immer MPPT in den Akku und vom Akku immer so viel Einspeisen wie der Eigenverbrauch beträgt. Dann gibt es Nulleinspeisung auch wenn Solarertrag wegen voller Akkus ungenutzt bleibt. Grenzen sind nur 80% voller Akku (90% SOC) und 80% leerer Akku (10% SOC), bzw. genannte 3.4 oder 3V der ersten Zelle als grobe Richtung.
Michael B. schrieb: > Das geht ohne Kenntnis der Zelleneinzelspannungen gar nicht. Die Zelleneinzelspannungen überwacht das BMS. Die 305ah 16S laufen auf besser als 0.01V synchron. Da sehe ich kein problem wenn 90% soc geladen und 20% entladen wird.
Hab mir was gebastelt:
1 | float totalAH = 305.0; |
2 | float soc = totalAH/2; |
3 | |
4 | const float StoH = 1.0/3600.0; // sec to hr |
5 | |
6 | void updateSoc(float volt, float amp, int dt) // dt in msec |
7 | { |
8 | float mdt = 0.001 * StoH * float(dt); |
9 | soc += volt * amp * mdt; |
10 | } |
Läuft aber irgendwie zu schnell. Da stimmt was nicht. Muss ich das volt weglassen? Edit: Ja, ohne volt geht besser! Nun brauch ich noch den algo der bei 48V und bei 54.4V den soc wert automatisch korrigiert. Oder reicht sowas?
1 | soc = constrain(soc + amp * mdt, 0.0, 100.0); |
:
Bearbeitet durch User
Klar sollte das gehen! TY. Hab ich nicht dran gedacht. Bedingt dann aber dass man im MP2 die AH und den anfangs-soc richtig einstellt.
:
Bearbeitet durch User
Bau einen Energiezähler rein und raus und rechne das gegen die Kapazität des Akkus.
Εrnst B. schrieb: > in den Registern für den SoC steht nix? Da steht 194 im ram-var soc register. Bei 87.33% soc. Kann ich nicht interpretieren. Da der MP2 inzwischen im keller steht ist ein check mit der victron soft etwas umständlich. Vielleicht ist die AH eingabe falsch oder der MP2 soc läuft nur mit angeschlossenem BMS? Oder das: Have you activated the internal battery monitor inside the Multi using VE.config?
:
Bearbeitet durch User
Ich kann jetzt den SoC intervall einstellen :) Das hwisst wie weit der akku entladen oder geladen wird.
:
Bearbeitet durch User
Habe meinen berechneten SoC mit dem vom daly BMS verglichen und die stimmen von 96% auf 71% auf ein halbes % genau. Also voller erfolg. Das läuft obwohl nur alle 5 sek gemessen wird.
Das problemn ist wie man eine SoC anzeige bei lifepo4 kalibriert. Einen zusammenhang aukkuspannung und ladezustand gibt es nur bei fast leer oder fast voll. Dazwischen korreliert das nicht.
1 | estvolt = BatVolt - (multiplusDcCurrent*0.017); |
2 | |
3 | if (estvolt > 53.6) // 53.6V = 90% |
4 | { if (soc < 0.9 * totalAH) soc = 0.9 * totalAH; } |
5 | if (estvolt < 48.0) // 48.0V = 10% |
6 | { if (soc > 0.1 * totalAH) soc = 0.1 * totalAH; } |
Das funktioniert nicht gut / schaltet zu früh auf 90%. Da ist noch ein systemfehler drin. Kennt jemand eine besseres system?
:
Bearbeitet durch User
Hallo zusammen, tolle Arbeit. Ich stehe gerade selbst vor dem selben Anspruch. Ich möchte den SOC wissen , möglichst genau , und dann dem MP2 mitteilen. Es gibt dafür IC´s die die Energie möglichst genau messen. An Hand der importierten Energiemenge wird auf den SOC geschlossen , so würde ich das machen wollen. Stehe grad bei der Recherche nach Schaltungen. https://www.ti.com/product/BQ41Z90
:
Bearbeitet durch User
Was ich gemerkt habe ist dass man die batterieeffizeinz auch abziehen sollte. Sonst zeigt der nach längerem betrieb zu hohe werte an. Und beim kalibrieren über spannung auf temperatur achten.
Martin K. schrieb: > Ich möchte den SOC wissen , möglichst genau , und dann dem MP2 > mitteilen. ich verstehe es ja zugegeben nicht: Wer einen mP2 hat hat auch einen großen Akku Wer einen großen Akku hat hat auch ein BMS Das BMS weiss doch den SOC rel genau? Der MP2 kann auch den SOC messen - noch besser kann er das wenn ein SMartshunt vorhanden ist ABer wozu wenn das BMS das doch eh mitteilt?
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.