Forum: Mikrocontroller und Digitale Elektronik Akku laden - Wirkungsgrad in C einfügen


von Florian G. (flobuk)


Lesenswert?

Bei einem momentan laufenden Projekt messe ich über den DS2740 den 
Akkustand aus. Über diesen Chip kann man den Strom in einer 14-Bit 
Auflösung auslesen, daraufhin wird vom Chip die Kapazität eigens 
umgerechnet. Beim Entladen funktioniert ja alles toll- mein Problem ist 
jetzt nur das Laden, da gibts nämlich einen kleinen Wirkungsgrad von 0,8 
sagen wir mal.
Ich kann das Register für die Kapazität nach Belieben beschreiben wann 
ich will, allerdings stellt sich mir die Frage, WIE?

Ich messe alle 5 sek die Kapazität und den Strom. Je nach Sign Bit kann 
ich nun sagen, ob gerade Strom und oder aus dem Akku fließt.

Allerdings geht es nicht, dass ich sage:

(if SignBit == 1)
{
   capacity = capacity*0.8;          //rechne Wirkungsgrad 0.8 ein
   overwrite_capacity_register();    //überschreibe Register mit richt. 
Wert
}

Wie macht man das? Rechnet man die Differenz von altem und neuen Wert 
der Kapazität aus, multipliziert sie mit 0.8, rechnet sie zum alten Wert 
dazu und überschreibt diesen? ich habe gerade echt keine Ahnung wie ich 
das machen könnte, dass das zu 100% passt.

Danke für eure Hilfe,
Flo

von Florian G. (flobuk)


Lesenswert?

Keine Idee? :-(

von Karl H. (kbuchegg)


Lesenswert?

Florian G. schrieb:

> das machen könnte, dass das zu 100% passt.

Es wird sowieso nie passen.
Es gibt nur einen Weg, zuverlässig herauszufinden wieviel der Akku bei 
diesem Laxdevorgang tatsächlich gespeichert hat: vollständig entladen 
und mitzählen.

von Torsten C. (torsten_c) Benutzerseite


Lesenswert?

Florian G. schrieb:
> overwrite_capacity_register

Was ist denn ein capacity_register?

Im Datenblat steht ein "Current Register" und ein "Accumulated Current 
Register", kein  "Capacity Register".

Alles andere macht (wie Karl Heinz bereits schrieb) keinen Sinn. Jeder 
Akku hat eine andere Kapazität. Die kann man mit dem DS2740 wunderbar 
messen, aber nicht einstellen oder gar vorgeben.

Ich bin daher gerade dabei, jedem Akku einen Barcode aufzukleben. Aber 
das ist ein anderes Thema.

: Bearbeitet durch User
von Matthias X. (current_user)


Lesenswert?

Ich würde es so versuchen:
Beim Wechsel SignBit 0 -> 1 : start_cap=capacity
Beim Wechsel SignBit 1 -> 0 : capacity = 0.8*(capacity - start_cap) + 
start_cap

Um welchen Akkutyp handelt es sich? Nixx oder PB?
Zu hundert Prozent passen wird es nie weil der Wirkungsgrad von vielen 
Parametern abhängig ist. Als grobe Richtlinie passt es aber.

In regelmäßigen Abständen musst du bei Erkennung des 
Ladeabschaltkriteriums aber deine "capacity" mit der zur Verfügung 
stehenden Akkukapazität überschreiben. Die Akkukapazität kannst du dabei 
eigentlich nur aus einem kompletten Entladezyklus ermitteln.
Falls man nie einen kompletten Zyklus hat um den aktuellen Wert 
zuermitteln muss man die Kapazität abschätzen. z.B. Nennkapazität - (x 
mAh pro Ladezyklus) - (y mAh pro Jahr). Kommt halt immer darauf an wie 
genau man es haben will.

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