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