Forum: Projekte & Code Messung von AKKU-(Entlade-)Kapazitäten mit ATTINY24 in C


von Michael S. (Gast)


Angehängte Dateien:

Lesenswert?

Messung von AKKU-(Entlade-)Kapazitäten mit ATTINY24 in C

Kürzlich hatte ich LiPo-Akkus für kleine Euros erworben - und nun wollte 
ich gerne wissen, ob die eigentlich ihr Geld wert und die Angaben zur 
Kapazität "belastbar" sind.

Dazu benötigte ich einen Helfer, der die Akkus entlädt, dabei 
kontinuierlich die Spannung im Auge behält und beim Unterschreiten der 
Entladeschlussspannung den Akku abwirft.

Da bei der Spannungsmessung der Lastwiderstand bekannt ist, kann der 
aktuell fließende Strom errechnet und über die Dauer der Entladung die 
Kapazität des Akkus ermittelt werden.

Da mich auch der zeitliche Verlauf der Entladespannung interessiert, 
sollten die Messwerte protokolliert und später mit Hilfe von gnuplot 
visualisiert werden.

Als Controller habe ich wegen der Anzahl der benötigten Pins einen 
ATtiny24 gewählt.
Die Daten werden in einem 2-wire Serial Eeprom AT24C512 mit 64 kB 
zwischengespeichert.
Die Entladung erfolgt über einen Lastwiderstand, der über einen FET 
zugeschaltet wird.

Einzelnen LiPo- bzw. LiFePO4-Zellen können direkt angeschlossen werden.
Für in Serie geschaltete Akkupacks bzw. Bleiakkus ist ein 
Spannungsteiler erforderlich.

Der ATtiny arbeitet nebenbei als USI-TWI-Slave bzw. als USI-TWI-Master.
Als Slave stellt er die aktuellen Messwerte zum Auslesen zur Verfügung.

Der Slave kann ebenfalls genutzt werden, um einige Einstellungen auf dem 
ATtiny zu verändern, ohne dass dazu der Controller neu programmiert 
werden muss. Veränderbar sind:
- die TWI-Adresse des Slaves,
- die Höhe der Referenzspannung für die Spannungsmessung,
- die Höhe der Entladeschlussspannung,
- der Lastwiderstand.
Die Werte sind im Eeprom des ATtiny gespeichert und werden bei einem 
Neustart übernommen.

Weiterhin kann der Slave genutzt werden, um den Discharger aus einer 
Benutzeroberfläche heraus zu steuern. Denn er kann Kommandos empfangen 
und ausführen zum:
- Starten einer Messreihe
  (manuell durch Betätigen der Start-Taste möglich),
- Unterbrechen der Messreihe,
- Fortsetzen einer unterbrochenen Messreihe,
- Beenden einer Messreihe (vor Erreichen der Entladeschlussspannung).

Nachdem die Entladung abgeschlossen ist (unteres Spannungslimit 
erreicht), kann das TWI-Eeprom ausgelesen und die Daten können zur 
Visualisierung weitergereicht werden.

Weitere Erläuterungen gibt's in der Readme.pdf.

Der Programmcode in C findet sich in der Datei "Discharger_140102.zip".
Einige Entladekurven für LiPos, LiFePO und PB-Gel-Akkus sind in 
"Entladekurven.pdf" und ein schematischer Schaltplan ist als 
"Discharger-Schaltplan.pdf" beigefügt.

Michael S.
04.01.2014

von Julian B. (julinho)


Lesenswert?

Nettes Projekt!
Wenn Du jetzt noch das Laden der Akkus mit integrierst, dann hast Du 
einen schönen Akkutester.

von Michael S. (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Julian,

einen LiPo-Lader habe ich schon lange in Betrieb.
Er hat erfolgreich die 2C-LiPo's (850mAh) für meinen Stuben-Heli 
geladen.

Einen Schaltplan und eine besondere Beschreibung über den kommentierten 
Programmcode hinaus gibts aber nicht.
Allerdings basiert das Programm auf der AppNote AVR450 von Atmel, hier 
kann man weitere Informationen finden.

Nachdem ich auf einen 450er TRex mit 3C-LiPo's umgestiegen war, habe ich 
mir dann ein fertiges, multifunkionales Ladeteil zugelegt.
Denn die Reparatur abgestützter Heli's kostete soviel Zeit, dass an 
einen Selbstbau nicht mehr zu denken war ...

Michael S.

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.