Forum: Projekte & Code Projekt Li-Ion Akkutester


von Axel S. (a-za-z0-9)


Angehängte Dateien:

Lesenswert?

Moin,

hier kommt ein kleines Projekt, das ich wegen akuter Notwendigkeit 
gerade  durchgezogen habe. Es ist ein Kapazitätstester für Li-Ionen 
Akkus. Bei Akkus von ebay oder Pollin weiß man oft nicht genau, ob die 
die Specs einhalten. Deswegen wollte ich ein kleines Gerät, das einen 
Akku kontrolliert entladen und die Entladung auch protokollieren kann.

Der Einfachheit halber entlade ich mit einem konstanten Lastwiderstand 
und messe nur die Spannung (der Strom ergibt sich dann ja). Das lokale 
LC-Display zeigt die letzten Meßwerte an, während über RS-232 die 
komplette Historie geloggt wird.

Die Hardware ist sehr simpel. Ein Arduino nano (China Klon) befeuert ein 
16x2 LCD. Ein Pin schaltet den Lastwiderstand über einen LL-MOSFET zu. 
Und schließlich mißt ein ADC-Pin die Spannung am Akku. Der ganze Krempel 
steckt derzeit auf einem Steckbrett. Den Leistungsteil habe ich auf ein 
Stück Lochraster verfrachtet.

Der Lastwiderstand kann mit zwei Jumpern zwischen 15R, 7.5R und 5R 
umgeschaltet werden. Die Akkuspannung wird mit einem Spannungsteiler 
47K:15K heruntergesetzt um zur internen 1.1V Referenzspannung zu passen. 
Der MOSFET stammt von einem alten Mainboard und muß lediglich für 
U_gs=4.5V einen spezifizierten (niedrigen) R_ds_on haben. Der SPD28N03L 
ist mit 28mR weit auf der guten Seite.

Da der Strom nicht gemessen wird, muß man der Software den verwendeten 
Lastwiderstand mitteilen. Auch der Spannungsteiler + Referenzspannung 
muß kalibriert werden. Das geht direkt über die RS-232 Verbindung. Die 
Kalibrierdaten werden im EEPROM gespeichert.

Eine Session sieht per RS-232 ungefähr so aus:
1
$picocom /dev/ttyUSB0
2
...
3
Terminal ready
4
Li-Ion Akku Tester 1.0 - XL 2016/03/02
5
Press 'c' to calibrate
6
Press 'd' to start discharge
7
Press 's' to show status
8
> s
9
U=4.168V, R=5.00Ohm
10
> c
11
calibration. U=4.165V
12
Your value (V): 4.17
13
recalibrated. U=4.168V
14
Load resistor (Ohm): 5
15
R=5.00Ohm
16
calibration done
17
> d
18
discharge requested
19
discharge started - stop with CTRL+C or 'q'
20
21
seconds volt    ampere  Ah      Wh
22
10      3.977   0.795   0.0022  0.0088
23
20      3.973   0.795   0.0044  0.0176
24
qdischarging stopped
25
> s
26
U=4.158V, R=5.00Ohm
27
> (CTRL+A, CTRL+Q)
28
Thanks for using picocom

Wenn man die Daten mitloggt, kann man sie anschließend in ein 
Spreadsheet importieren und auswerten wie im angehängten Screenshot.

Die Software compiliert hier auf einem Ubuntu mit installierten 
arduino und arduino-mk Paketen. Upload auf den Arduino am USB geht 
wie üblich mit make upload.

Was ich daran noch tun will:

- lokale Tasten für Status und Discharge für den Betrieb ohne PC
- eventuell automatischer Start wenn ein Akku angesteckt wird
- Display auf 4-Bit Betrieb abspecken und Pinbelegung so ändern, daß 
auch ein mega168 oder mega328 im DIP28 reicht

von Marko ⚠. (mos6502) Benutzerseite Flattr this


Lesenswert?

OK, cool, aber der hier macht das gleiche, kostet auch nicht mehr als 
die Summe deiner Bauteile, hat noch ein Gehäuse und nicht nur das, er 
lädt die Akkus auch noch:

http://www.ebay.de/itm/iMAX-B6-Lipo-NiMh-Li-ion-Ni-TJ-RC-Battery-Balance-Digital-Charger-Discharger-TJ-/291640273224

Es wäre sinnvoller, sich so ein Teil anzuschaffen, und dann zu helfen, 
die Open Source Firmware zu verbessern:

https://github.com/stawel/cheali-charger

: Bearbeitet durch User
von Tomas (Gast)


Lesenswert?

14 Euro im Gegensatz zu vielleicht 3?

von Axel S. (a-za-z0-9)


Angehängte Dateien:

Lesenswert?

Malignes M. schrieb:
> OK, cool, aber der hier macht das gleiche, kostet auch nicht mehr als
> die Summe deiner Bauteile, hat noch ein Gehäuse und nicht nur das, er
> lädt die Akkus auch noch:

(ebay Link gesnipt)

Nett. Aber ganz andere Baustelle.

Weder wollte ich einen Lader bauen. Noch überhaupt eine eierlegende 
Woll-Milch-Sau. Mir ging es einfach um einen simplen, flexiblen Akku- 
Entlader mit (das ist mir wichtig) Protokollierung.

Nur mit der Protokollierung finde nämlich Sachen heraus wie in den oben 
angehängten Plots: der Original-Akku des Fahrrad-Lichts hat eine 
deutlich steiler verlaufende Spannungskurve als der bei ebay gekaufte 
Zusatzakku.

Der Kurvenverlauf ist insbesondere dann interressant, wenn man einem 
Gerät eine Akkustandanzeige spendieren will, die aus der Klemmenspannung 
die verfügbare Restkapazität abschätzt.

von Axel S. (a-za-z0-9)


Angehängte Dateien:

Lesenswert?

Hier ist noch ein Update der Firmware. Bei den letzten Änderungen 
(automatisches Einfügen von \r vor \n) hatte ich an einer Stelle die 
explizite Ausgabe von \r übersehen. Das führt dazu, daß LibreOffice eine 
Leerzeile zwischen je zwei Datenzeilen einfügt.

von Marko ⚠. (mos6502) Benutzerseite Flattr this


Angehängte Dateien:

Lesenswert?

Axel S. schrieb:
> Nett. Aber ganz andere Baustelle.

Nee, identische Baustelle. Wenn ich sage "das gleiche", dann meine ich 
das auch. Der Lader gibt nämlich sämtliche Daten per TTL-RS232 aus. 
Unter Windows kann man die mit LogView auswerten, unter Linux mit einem 
20 Zeilen Python Programm und gnuplot.

> Weder wollte ich einen Lader bauen. Noch überhaupt eine eierlegende
> Woll-Milch-Sau. Mir ging es einfach um einen simplen, flexiblen Akku-
> Entlader mit (das ist mir wichtig) Protokollierung.
>
> Nur mit der Protokollierung finde nämlich Sachen heraus wie in den oben
> angehängten Plots: der Original-Akku des Fahrrad-Lichts hat eine
> deutlich steiler verlaufende Spannungskurve als der bei ebay gekaufte
> Zusatzakku.
>
> Der Kurvenverlauf ist insbesondere dann interressant, wenn man einem
> Gerät eine Akkustandanzeige spendieren will, die aus der Klemmenspannung
> die verfügbare Restkapazität abschätzt.

... siehe Anhang.

von Axel S. (a-za-z0-9)


Lesenswert?

Malignes M. schrieb:
> Axel S. schrieb:
>> Nett. Aber ganz andere Baustelle.
>
> Nee, identische Baustelle. Wenn ich sage "das gleiche", dann meine ich
> das auch. Der Lader gibt nämlich sämtliche Daten per TTL-RS232 aus.

Hmm. Wirklich nett. Vielleicht mal was für später.

von Marko ⚠. (mos6502) Benutzerseite Flattr this


Lesenswert?

In meinem Lader ist übrigens ein ATMega32 verbaut. Inzwischen sind wohl 
ARMs drin. Der Prozessor steuert einen Buck-Boost Wandler (rein in 
Software), kann also Akkus mit geringerer als auch höherer als der 
Eingangsspannung laden. Entladen wird über Widerstände auf der Platine 
(maximal 5W). Es wäre aber auch möglich, den Akku in die Quelle zu 
entladen. Dann könnte man mit voller Leistung (50W) auch entladen. Das 
müsste aber erstmal jemand programmieren.

: Bearbeitet durch User
von Harry E. (nimes)


Lesenswert?

Hi Axel,
genau sowas suche ich bzw. will ich bauen.
Bin aber erst am Anfang meiner Arduino-Karriere daher eine (vielleicht 
doofe) Frage: Wie kriegst Du die grafische Auswertung bzw die Daten ins 
Ecxel?
VG und Gruß
Nimes

von Frank L. (hermastersvoice)


Lesenswert?

steckste ein Excel-Shield auf den Arduino und gut is
SCNR

von Axel S. (a-za-z0-9)


Lesenswert?

Harry E. schrieb:
> Bin aber erst am Anfang meiner Arduino-Karriere daher eine (vielleicht
> doofe) Frage: Wie kriegst Du die grafische Auswertung bzw die Daten ins
> Ecxel?

Ein Terminalprogramm verwenden, das Daten in ein Log schreiben kann. 
Dann noch mal kurz mit dem Editor beigehen und extra Zeilen oben und 
unten löschen. Schließlich in die Tabellenkalkulation laden.

Hat aber mit Arduino nichts zu tun.

von Jörg R. (solar77)


Lesenswert?

Interessantes Projekt.

Ich habe auch vor etwas ähnliches zu bauen, allerdings gleich für 
mehrere Akkus. Nach Jahren sammeln sich so viele Akkus an die man mit so 
einer Lösung schnell mal testen kann. Das Gerät auf das weiter oben nach 
eBay verlinkt wird habe ich, bzw. ist es ein ähnliches. Es ist für 
mehere Akku-Typen geeignet, ich finde die Bedienung aber zu kompliziert.

Einen Eigenbau kann man nach und nach verfeinern und erweitern. Wenn es 
mal kaputt geht kann man das Teil reparieren. Das oben verlinkte wirft 
man weg.

Meine Vorschläge wären noch:

- evtl. auch Konstantstrombetrieb
- Umschalten auf andere Akkutypen, NiMh, Bleigel usw.
- natürlich ein Gehäuse
- Log nicht über RS232 sondern direkt im Gerät, evtl. größeres Display

Kannst Du den kompletten Code posten?

Vielen Dank.
Gruß Jörg

: Bearbeitet durch User
von Axel S. (a-za-z0-9)


Lesenswert?

Jörg R. schrieb:
> Kannst Du den kompletten Code posten?

Das ZIP ist doch oben angehängt. Letzte Version im

Beitrag "Re: Projekt Li-Ion Akkutester"

von W.S. (Gast)


Lesenswert?

Axel S. schrieb:
> Was ich daran noch tun will:

Vorschlag: den Fußpunkt des Spannungsteilers 47k+15k per FET abschaltbar 
machen.

Falls du grad für 3 Wochen in Urlaub gehst und rein zufälligerweise den 
Akku vergessen haben solltest...

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