Forum: Mikrocontroller und Digitale Elektronik Algorithmus Batterie laden - CCCV IU-Ladeverfahren


von Stefan (Gast)


Lesenswert?

Hallo leute,

ich möchte ein Algorithmus nach dem IU-Ladeverfahren schreiben. Ich weiß 
leider nicht, ob ich mit den Ideen, die ich dazu habe, auch richtig 
liege.

Meiner Ansicht nach sind es im Grunde gesehen sind es 2 Regler, um 
jeweils Strom und Spannung zu regeln.
Die "digitalen" Regler an sich, sind nicht da Problem.

Die entscheidende Frage ich, wie diese Regler zusammenwirken müssen, um 
eben das IU-Ladeverfahen zu realisieren.

Ich habe 2 Regelgrößen zur Verfügung (Istwert Strom und Spannung) und 
nur eine Stellgröße (das PWM Signal, welche ich an die Vollbrücke des 
DC-DC Wandlers gebe. Die Stellgröße ist demnach die Totzeit des PWM 
Signals)

Wie müsste ich die beiden Regler "ausrichten", um den gewünschten Effekt 
zu erzielen?

Danke

von Jochen S. (jochen_s)


Lesenswert?

Hallo,

das ist vonm Prinzip her ganz einfach.

Es ist eigentlich immer nur ein Regler im Eingriff. Demanch gibt der 
andere dann immer "Vollgas".

Also muss immer de Regler in den Eingriff gehen der die kleinere 
Regelgröße ausgibt.

kannst Du dir vorstellen wie ein Labornetzteil, da ist es auch so, dass 
der Regler in Eingriff geht dessen Grenzwert gerade erreicht wird.

Der Punkt des CC-CV Übergangs sollte genau betrachtet werden, da fängt 
es gerne mal an zu schwingen.

Gruß

Jochen

von Stefan (Gast)


Lesenswert?

Jochen S. schrieb:
> Hallo,
>
> das ist vonm Prinzip her ganz einfach.
>
> Es ist eigentlich immer nur ein Regler im Eingriff. Demanch gibt der
> andere dann immer "Vollgas".
>
> Also muss immer de Regler in den Eingriff gehen der die kleinere
> Regelgröße ausgibt.
>
> kannst Du dir vorstellen wie ein Labornetzteil, da ist es auch so, dass
> der Regler in Eingriff geht dessen Grenzwert gerade erreicht wird.
>

Vom Gedanken her habe ich mir das auch genauso vorgestellt.
Was ich mich gefragt habe, ist jedoch, ob das wie eine Art 
Kaskadenregelung realisiert wird oder ob ich da mit if-Abfragen 
anschaue, welche der beiden Regelgrößen über die Grenzen schießt und 
entsprechend den Regler dieser Regelgröße regeln lasse.

> Der Punkt des CC-CV Übergangs sollte genau betrachtet werden, da fängt
> es gerne mal an zu schwingen.
>

Das ist eine weitere Sache, wo ich nicht weiß, wie ich es genau umsetzen 
soll.

Nach dem IU-Ladeverfahren wird bei einer entladenen Batterie Konstant 
ein Strom eingeprägt. Dieser Strom ist maximal so groß, wie ich es im 
Stromregler vorgebe.

Während dieser Zeit liegt eine Spannung an, die durch den Strom bzw. 
durch die Stromregelung bestimmt wird, denn die Stellgröße der 
Stromregelung ist ebenso die Stellgröße des Spannungsregelung.

Die Batterie ist dann irgendwann soweit aufgeladen, dass es der Strom 
"von selbst" unter die vom Regler vorgegebene Grenze tritt, was die 
abfallende Stromkurve des IU-Ladeverfahrens erklären würde.

Die Spannung steigt entsprechend der sich ändernden Stellgröße, die vom 
Stromregler vorgegeben wird, an.
Das geht eben solange, bis die Spannung die vom Spannungsregler 
vorgegebene Grenze erreicht. Ab dann greift der Spannungsregler.

Wäre der von mir geschilderte Gedankengang richtig? Wie würde man das 
programmtechnisch realisieren?

Danke

von Sven L. (svenl)


Lesenswert?

Jochen S. schrieb:

> Der Punkt des CC-CV Übergangs sollte genau betrachtet werden, da fängt
> es gerne mal an zu schwingen.

Das ist bei einem Ladealgorithmus ziemlich unerheblich, weil der 
Übergang CC->CV genau ein einziges Mal pro Ladevorgang vorgenommen wird.

Der eine Regler wird abgeschaltet, der andere eingeschaltet und dann 
wird stur weiter gemacht.

Einzig eine Ladestromüberwachung bei CV-Ladung sollte man integrieren, 
welche den Ladevorgang abbricht, wenn der Strom bei CV-Ladung über den 
Strom der CC-Ladung ansteigt.

Viele Grüße!

Sven

von Stefan (Gast)


Lesenswert?

Sven L. schrieb:
> Jochen S. schrieb:
>
> Der eine Regler wird abgeschaltet, der andere eingeschaltet und dann
> wird stur weiter gemacht.
>
> Einzig eine Ladestromüberwachung bei CV-Ladung sollte man integrieren,
> welche den Ladevorgang abbricht, wenn der Strom bei CV-Ladung über den
> Strom der CC-Ladung ansteigt.
>

Danke für die Hinweise.

Das ist eben eines der Punkte, wo ich mich frage, wie das realisiert 
wird.

Wie wird der Regler denn einfach abgeschaltet?
Wann wird der Regler abgeschaltet? (Wenn eine bestimmte Spannung 
erreicht ist? Welche wäre das?)

Wie realisiet man eine Überwachung?

Wie würde der gesamte Algorithmus aussehen?

Etwa so:

if(RegelrößeStrom > GrenzeStrom){

while(ÜbergangSpannung >= RegelgrößeSpannung){
-Stromregler-
}
}

else if(RegelgrößeSpannung >= ÜbergangSpannung){

while((GrenzeStrom >= RegelgrößeStrom) || (VolleBspannung >= 
RegelgrößeSpannung){
-Spannungsregler-
}
}


GrenzeStrom - Der maximal mögliche Strom, den der Regler zulässt
ÜbergangSpannung - Die Spannung, bei der von Strom- auf 
Spannungsregelung gesprungen wird
ReglergrößeStrom - Gemessener Strom
ReglergrößeSpannung - Gemessene Spannung
VolleBspannung - Batterie geladen

von MaWin (Gast)


Lesenswert?

Stefan schrieb:
> ich möchte ein Algorithmus nach dem IU-Ladeverfahren schreiben

WELCHEN Akkutyp willst du denn Laden ?

Stefan schrieb:
> Die entscheidende Frage ich, wie diese Regler zusammenwirken müssen, um
> eben das IU-Ladeverfahen zu realisieren.

Simples Maximumwertbilden.

Stefan schrieb:
> Wie würde der gesamte Algorithmus aussehen?

Nicht so.

Es gibt keinen "Stromwertregler" und "Spannungswertregler". Wenn es die 
schon gibt, muss man nichts mehr regeln. Es gibt ein "Stellelement" den 
Transistor, und den kann man aufregeln oder zuregeln.

Akkus sind langsam, also könnte das ausregeln theoretisch auch ein 
schlecht programmierter uC tun, aber wenn man Akkus anklemmt, kann der 
uC-Regler langsamer sein als der Transistor stirbt.

von Stefan (Gast)


Lesenswert?

MaWin schrieb:
> Stefan schrieb:
>> ich möchte ein Algorithmus nach dem IU-Ladeverfahren schreiben
>
> WELCHEN Akkutyp willst du denn Laden ?

Einen "normalen" 12V Bleuakku.

> Stefan schrieb:
>> Die entscheidende Frage ich, wie diese Regler zusammenwirken müssen, um
>> eben das IU-Ladeverfahen zu realisieren.
>
> Simples Maximumwertbilden.

Ich würde mich sehr freuen, wenn das genauer ausgeführt wird.

> Stefan schrieb:
>> Wie würde der gesamte Algorithmus aussehen?
>
> Nicht so.
>
> Es gibt keinen "Stromwertregler" und "Spannungswertregler". Wenn es die
> schon gibt, muss man nichts mehr regeln. Es gibt ein "Stellelement" den
> Transistor, und den kann man aufregeln oder zuregeln.
>
> Akkus sind langsam, also könnte das ausregeln theoretisch auch ein
> schlecht programmierter uC tun, aber wenn man Akkus anklemmt, kann der
> uC-Regler langsamer sein als der Transistor stirbt.

Mit Stromregler und Spannungsregler, war eben der Codeabschnitt gemeint, 
wo die Stellgrößen berechnet und die Transistoren angesteuert werden.
Der Übersichtlichkeit halber habe ich dies einfach mit den begriffen 
abgekürzt.

von Stefan (Gast)


Lesenswert?

Hat das sonst keiner eine Idee die mir vielleicht weiter hilft?

Danke

von Nosnibor (Gast)


Lesenswert?

Vielleicht hilft es, nicht von Reglern, sondern von Begrenzern zu 
sprechen, denn man will ja nicht auf Teufel komm raus einen bestimmten 
Strom erzwingen, sondern nur verhindern, daß er überschritten wird. Und 
ebenso für die Spannung.
Also:
Wenn der Strom zu groß wird, Stellgröße verringern.
Wenn die Spannung zu groß wird: Stellgröße verringern.
Wenn keins von beiden passiert: vorsichtig Gas geben.

Sonst könnte man noch die Labornetzteilschaltung nachbilden: ein Regler 
für Strom, ein Regler für Spannung, und wer von den beiden die kleinere 
Stellgröße ausgibt, hat das Sagen. Aber aufpassen, falls irgendwo ein 
I-Anteil drin ist, daß der nicht sonstwohin abwandert, während der 
andere Regler am Ruder ist.

von Stefan (Gast)


Angehängte Dateien:

Lesenswert?

Ok, also anhand der Informationen die hier gegeben wurden habe ich 
folgende Idee.

Nochmal erwähnt:

Die Stellgröße zum verändern der Spannung "und" des Stroms ist der 
Tastgrad, den ich bestimme. Der Tastgrad geht an die Vollbrücke und 
beeinflusst so direkt beide Werte.

Nach dem IU-Ladeverfahren wird die leere Batterie mit einem begrenzten 
Strom geladen (Konstantstrom), somit wird der Strom erstmal begrenzt, 
weil eine leere Batterie würde versuchen, soviel Strom wie möglich aus 
der Quelle zu ziehen.
Nach erreichen der Ladeschlussspannung (ca. 13,5-14V) wird von der 
Stromregelung auf Spannungsregelung über geganen. Theoretisch sollte der 
Strom, der gezogen wird,  abfallen. Es wird also mit Konstantspannung 
geladen, bis die Batterie kaum noch Strom zieht.

Ich denke in diesem Fall würde eine Art Kaskadenregelung in Frage 
kommen. (Ich bin mir aber nicht sicher, ob das klappen wird)

1) Im ersten Schritt würde der Istwert der Spannung mit dem Sollwert der 
Spannung verglichen werden. Das Ergebnis wäre der Tastgrad, der an die 
Vollbrücke gehen muss, damit der Sollwert der eingestellten Spannung 
eingeregelt wird. Dies würde aber auch einem gewissen Strom entsprechen, 
weil der ausgegebene Tastgrad auch den Strom beeinflusst.

2) Im nächsten Schritt würde die Regelgröße des PI Reglers der 
Spannungsregelung als Sollwert für die Stromregelung dienen. Dies müsste 
mit dem Istwert des Stroms verglichen werden und mit einem weiteren PI 
Regler geregelt werden.
Es würde aber nur geregelt werden, wenn der Strom zu groß wird, aber 
nicht wenn der Strom zu klein wird. Der dieser soll ja mit der Zeit 
kleiner werden bzw. je nach ladestand abschwächen.

Ist die Idee soweit in Ordnung? Das große Fragezeichen, welches ich hier 
habe, ist der Sollwert im zweiten Schritt, also der Sollwert der 
Stromregelung. Dieser aus der Spannungsregelung erzeugte Sollwert ist 
ein Tastgrad. Ich müsste daraus iwie ermitteln, was für einem Strom das 
entspricht, damit eine sinnvolle Differenzbildung für die Stromregelung 
erfolgen kann. Der Istwert der Strommessung wird mit einem LEM-Wandler 
Realisiert.

Habe auch ein Bild hinzugefügt, wie ich mir das vorstelle.

Ich würde mich über Ideen freuen.

von Stefan (Gast)


Lesenswert?

Keiner ne Idee wie das realisierbar ist? Oder liegt das an dem Sonntag 
Abend ;D.

von Daniel Korb (Gast)


Lesenswert?

Was hindert dich daran, die jeweils kleinere Stellgröße zu nehmen, die 
die beiden Regler ausspucken?

Kleiner Tipp: Vergiß alles, nimm ein Blatt Papier und fange von vorne an

von Stefan (Gast)


Lesenswert?

Daniel Korb schrieb:
> Was hindert dich daran, die jeweils kleinere Stellgröße zu nehmen,
> die
> die beiden Regler ausspucken?
>
> Kleiner Tipp: Vergiß alles, nimm ein Blatt Papier und fange von vorne an

Hast recht. Läuft im Grunde gesehen auf dasselbe hinaus.

Der Gedankengang hat mich auch auf einen Fehler bei meiner 
Vorgehensweise gebracht.

Also müsste ich im Grunde gesehen 2 Regler (Begrenzer) laufen lassen und 
jeweils die kleinere Stellgröße berücksichtigen.
Wenn die Stellgröße der Stromregelung negativ wird bzw. die 
Differenzbildung ((i_soll - i_ist) < 0) negativ wird, dann wird diese 
Stellgröße nicht mehr berücksichtigt (Prinzip des IU Ladeverfahrens).

---

Der Spannungsregler ist leicht um zu setzen (habe ich bereits).
Doch ich weiß nicht wie ich den Stromregler umsetzen kann.

Der Stromsensor soll wie bereits genannt ein Lem Wandler werden. Ich 
weiß noch nicht genau wie das funktioniert. Was ich bisher verstanden 
habe ist, dass der Lem-Wandler eine Spannung ausgibt, die sich 
proportional zum gemessenen Strom ändert.

Ich verstehe jedoch nicht, wie ich aus der Spannung bzw. 
Spannungsänderung bestimmen soll, welchen Strom ich im moment messe.
Kurz, wie funktioniert das eigentlich ?

von chris (Gast)


Lesenswert?

Stefan schrieb:
> Doch ich weiß nicht wie ich den Stromregler umsetzen kann.

Welche Umsetzung meinst du HW oder SW??
Im Moment arbeite ich bei meinem Hobby an was ähnlichen aber das ist nur 
ein Spannungsregler der die Bat laden soll und mein Gedanke ist das ich 
zum Anfang einfach den Iist mit Isoll vergleiche(µC-Shunt) und die 
Spannung nach oben korrigiere so das der Strom konstant bleibt.

Stefan schrieb:
> Was ich bisher verstanden
> habe ist, dass der Lem-Wandler eine Spannung ausgibt, die sich
> proportional zum gemessenen Strom ändert.
>
> Ich verstehe jedoch nicht, wie ich aus der Spannung bzw.
> Spannungsänderung bestimmen soll, welchen Strom ich im moment messe.

Na Proportional heißt doch 1A an Strom siond z.B. 1V am LemWandler und 
was du dann misst sind 1V wo du nur die Maßeinheit tauschen musst sprich 
aus 1A = 1V = 1A auf der Anzeige.

Mit nem Shunt siehts doch gleich aus, nur der Strom durchfließt bei 1A 
den Widerstand von 1Ohm was eine Spannung von 1V macht.

von Walter S. (avatar)


Lesenswert?

chris schrieb:
> Na Proportional heißt doch 1A an Strom siond z.B. 1V am LemWandler und
> was du dann misst sind 1V wo du nur die Maßeinheit tauschen musst sprich
> aus 1A = 1V = 1A auf der Anzeige.

schwierig wirds aber wenn 1A 125mV sind ;-)

von chris (Gast)


Lesenswert?

Walter S. schrieb:
> schwierig wirds aber wenn 1A 125mV sind ;-)

Meinste ?? Aber sollte doch auch nicht schwieriger sein ?? 0.o oder war 
das gerade wieder ironisch gemeint... kann sowas schlecht deuten...

von Arthur Peters (Gast)


Lesenswert?

Nabend,

seit kurzem bin ich an dem iu-ladeverfahren interessiert und würde mir 
mit der zeit gerne einen primär getaktetes Ladegerät bauen.

dazu würde ich einen galvanisch getrennten dc/dc-wandler bauen und die 
regelung, wie bei dir, über die primärseite machen.

mal von der Hardware abgesehen, will ich gerne wissen wie man der 
software macht.

@Stefan - bist du mit der software schon weiter gekommen?

@Nosnibor & @Jochen S. - ich denke ihr beiden habt bisher die 
hilfreichten antworten zum thema Software für das batterieladeverfahren 
gegeben.
ich hätte aber noch fragen dazu und würde mich freuen wenn man diese 
beantworten kann.

das ladeverfahren würde ich wie folgt in worte fassen:

- leere Batterie an quelle anschließen
- Batterie zieht sehr viel Strom, daher begrenzt der stromregler
- die Spannung an den klemmen ist eher gering (8-9 V)
- sobald die ladeschlusspannung erreicht ist, versuche ich diese 
Spannung mit dem Spannungsregler bei zu behalten
- der Strom, der von der Batterie gezogen wird, wird immer geringer und 
ich kann

ist das soweit richtig?

im Prinzip müsste ich nur 2 digitale regler programmieren, die jeweils 
Strom und Spannung begrenzen.

gibt es da was zu beachten? gibt es eventuell ein Programm bzw. ein 
Algorithmus zu dem ladeverfahren, den man sich ansehen kann?

peters

von Arthur Peters (Gast)


Lesenswert?

Jetzt habe ich das auf YouTube gefunden: 
https://www.youtube.com/watch?v=vH3vCh4cJIs

dies ist ja das verhalten, was ich auch haben möchte. nur eben, dass es 
der mikrocontroller über den primär getakteten dc/dc-wandler völlig 
selbstständig macht.

wie würde man dieses verhalten des labornetzteils am besten 
programmieren?

tut mir leid, dass ich so direkt frage, ich bin kein Ass im 
programmieren und kenne mich leider nur mit einfachen Konstrukten der c 
Programmierung aus.


das was der Mann im Video mit dem einstellen am netzteil macht, stelle 
ich ja im Programm mit dem Sollwert für Strom und Spannung ein. die 
Begrenzung wird in den entsprechenden Reglern vorgenommen. doch wäre ein 
"regler" an der stelle das richtige? dieser würde ja immer versuchen den 
Strom und die Spannung an zu streben, den ich vorgebe. würde in diesem 
fall ein einfacher begrenzer nicht ausreichen?


müssen

von Oldie (Gast)


Lesenswert?

Ich würde da garnicht so abgedreht regelungstechnisch rangehen!
Konstantstrom und Konstantspannung werden nacheinander
eingesetzt.
Eine ladebedürftige Batterie muss erst mal geladen werden:
I <= Imax.
Dann muss man erkennen, dass sie voll geladen ist.
Die Lade-Taktik (der übergeordnete Algorithmus) ist auf
jeden Fall vom Akku-Typ abhängig!
Danach erhält man mit Kostantspannung ihre Ladung.

Blei-Akku:
I_max:    Maximal erlaubter Ladestrom, oder maximal
          lieferbarer Ladestrom. (Der kleinere Wert davon!)
I_erhalt: Der für den Batterietyp angegebene Erhaltungsladestrom.
U_max:    Maximal erlaubte Ladeschlussspannung.
          Besonders bei gasdichten Akkus unbedingt einhalten!
U_erhalt: Die Spannung einer vollgeladenen Batterie.
          U_erhalt < U_max

Diese Werte sind temperaturabhängig, somit gehört auch noch
eine Temperaturmessung in den Lade-Algorithmus, der die
Werte von U_max und U_erhalt für die Batterietemperatur
entsprechend dem Datenblatt der Batterie nachführt.

Lade-Ablauf:
1a Ladegerät wird eingeschaltet, Ausgang = AUS
1b Batterie ist/wird angeschlossen, U > 0 V und U < U_max
1c Wenn U >= U_max  -> Ladeerhaltungsschleife
2  Strom langsam erhöhen, bis I_max.
3  I_max und U < U_max? Weiter I_max liefern
4  U_max erreicht: I abschalten
5  Ladeerhaltungsschleife:
   Wenn U = U_erhalt: I_erhalt (Datenblatt) einschalten
   U < U_erhalt: I_erhalt ganz vorsichtig erhöhen
   U > U_erhalt: I_erhalt verkleinern
   Das pendelt sich langsam ein, ist aber eine Sache von
   Stunden! Dazu ist kein Super-Algorithmus nötig
6  Wird Batterie abgeklemmt: Ausgang = AUS

Bei NiCd, oder NiMH ist die Temperatur auf jeden Fall zu
überwachen. Hier ist I_max dem Datenblatt zu entnehmen und
bei Temperaturanstieg unbedingt zu reduzieren.
Punkt 4 (Ende der Konstantstromladung) muss mit der dU-Methode
erfasst werden.

Bei Li-Akkus solltest du dich mit den dafür entwickelten
ICs anfreunden: Wenn du was falsch machst, brennt die Bude ab!

Wie du deine Messwandler auswertest, um den Ladestrom, oder die
Ladespannung zu ermitteln, ist eine ganz andere Geschichte.
Dazu gehört auf jeden Fall ein untergeordneter Algorithmus, der
dem Messwandler die real vorliegenden Effektiv-Werte entlockt...

von CCCV-Algo (Gast)


Lesenswert?

Wenn der Schalter an einer PWM hängt

if(I > Imax || U > Umax)
      pwm_duty--;
else
      pwm_duty++;

Das alle 10ms laufen lassen.

von Arthur Peters (Gast)


Lesenswert?

Oldie schrieb:

> 2  Strom langsam erhöhen, bis I_max.

Wie macht man das mit dem "Strom langsam erhöhen"? Wenn wir jetzt 
einfach mal von einem Tiefsetzsteller vor der Batterie ausgehen. Setze 
ich den Tastgrad am Schalter des Tiefsetzsteller auf 0, damit erstmal 
kein Strom fließt, ich aber vorher mit dem Spannungssensor die Spannung 
erfassen kann, um dann zu bestimmen, was ich danach mache? 
(Ladeerhaltung oder laden) Die Erhöhung dann langsam mit einem PI 
Regler, bis ich I_max erreicht habe.

> 3  I_max und U < U_max? Weiter I_max liefern
> 4  U_max erreicht: I abschalten

Was bedeutet hier "I abschalten"? I sollte doch noch fließen und wird 
von selbst abfallen, wenn man U_max eine Zeit lang behält bzw. konstant 
hält. Oder soll bei einem Bleiakku nach erreichen von U_max der Strom 
wirklich auf I_erhalt runter geregelt werden?

> Wie du deine Messwandler auswertest, um den Ladestrom, oder die
> Ladespannung zu ermitteln, ist eine ganz andere Geschichte.
> Dazu gehört auf jeden Fall ein untergeordneter Algorithmus, der
> dem Messwandler die real vorliegenden Effektiv-Werte entlockt...

Das ist wieder eine andere Geschichte, wo ich mir was einfaches 
aussuchen muss.



danke

von CCCV-Algo (Gast)


Lesenswert?

Arthur Peters schrieb:
> einem Tiefsetzsteller

Ich liebe Tiefsetzsteller. Ich hab meine Jahresendfestflügelpuppe auch 
tiefer gelegt (aber nicht flach, nur tiefer)

von Gerhard O. (gerhard_)


Lesenswert?

In dieser App Note von ZILOG wird das Prinzip eines solchen digital 
geregelten Ladegeräts anhand eines Referenz Design mit FW Sourcen genau 
dokumentiert. Teile davon könnten für Deinen Ansatz nützlich sein:

http://www.zilog.com/force_download.php?filepath=YUhSMGNEb3ZMM2QzZHk1NmFXeHZaeTVqYjIwdlpHOWpjeTloYmpBek1EWXVjR1Jt

Der C Quell Code sollte ohne größere Schwierigkeiten auf andere uC 
portierbar sein. (Muß separat herunter geladen werden - siehe Zilog 
Encore! Unterlagen)

Auch die gesammte Schaltung dazu ist dokumentiert.

: 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.