Forum: Haus & Smart Home StateOfCharge anzeige basteln


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Hadmut F. (hadmut)


Lesenswert?

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
von Steve van de Grens (roehrmond)


Lesenswert?

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.

: Bearbeitet durch User
von Hadmut F. (hadmut)


Lesenswert?

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
von Steve van de Grens (roehrmond)


Lesenswert?

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.

: Bearbeitet durch User
von Michael B. (laberkopp)


Lesenswert?

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.

von Hadmut F. (hadmut)


Lesenswert?

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.

von Hadmut F. (hadmut)


Angehängte Dateien:

Lesenswert?

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
von Εrnst B. (ernst)


Angehängte Dateien:

Lesenswert?

in den Registern für den SoC steht nix?

von Hadmut F. (hadmut)


Angehängte Dateien:

Lesenswert?

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
von Alexander (alecxs)


Lesenswert?

Bau einen Energiezähler rein und raus und rechne das gegen die Kapazität 
des Akkus.

von Hadmut F. (hadmut)


Lesenswert?

Ε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
von Hadmut F. (hadmut)


Angehängte Dateien:

Lesenswert?

Ich kann jetzt den SoC intervall einstellen :)
Das hwisst wie weit der akku entladen oder geladen wird.

: Bearbeitet durch User
von Hadmut F. (hadmut)


Lesenswert?

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.

von Hadmut F. (hadmut)


Angehängte Dateien:

Lesenswert?

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
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
Noch kein Account? Hier anmelden.