Conrad Charge Manager 2010

Projekt eingestellt.

Da ich schon eine halbe Ewigkeit keine Zeit mehr gefunden habe, am CM2010Project weiterzuarbeiten, stelle ich hiermit offiziell das Projekt ein. Wer auf eigene Faust daran weiterentwickeln möchte, kann sich bei mir melden und kann dann hier bei SourceForge als Entwickler eingetragen werden.
Schon vor etwa 1 Jahr hab ich LogView entdeckt und damals war schon absehbar, dass es nur noch eine Frage der Zeit sein würde, bis die beiden Entwickler Unterstützung für den CM2010 einbauen. Dies ist nun geschehen und die neueste Version 1.14.2 unterstützt den Charge Manager 2010.

My CM2010

Das ist mein CM2010. Das beste an ihm ist die RS232-Schnittstelle an der Rückseite. Leider rückt der Hersteller nicht mit Informationen über das verwendete Datenformat raus. Aber anhand der Beschreibung von Christoph Heine war ich in der Lage, ein kleines Programm zu schreiben und bin während des Programmierens sogar auf neue Informationen gestossen.

Im folgenden werde ich alles wichtige über die PC-Anbindung des CM2010 erklären. Wen das nicht interessiert, kann auch gleich runter zum Download springen.

Ersten Kontakt herstellen
Geschwindigkeit:9600 baud
Datenbits:8
Parität:keine
Stoppbits:1
Flusskontrolle:DTR
Für das Auslesen des CM2010 braucht man einen freien seriellen COM-Port und ein Nullmodemkabel. Die Übertragungsparameter sind in der Tabelle rechts zu sehen.
Es werden kontinuierlich Informationen gesendet. Man erhält 4 Mal pro Sekunde Informationen über einen einzelnen Schacht, d.h. in 1 Sekunde hat man die Daten über alle 4 Schächte zusammen.

Das Datenformat
Jeder Datensatz über einen einzelnen Slot besteht aus 34 Bytes.
Hier kommt eine Aufschlüsselung über die gesendeten Informationen. Numerische Werte sind im Big Endian Format codiert, d.h. das höchstwertige Byte steht links. Also 256d wäre dann 01 00h und 65538d 01 00 02h.
Mit "xx/Hi" meine ich die vier ersten(linken) Bits des Bytes, mit "xx/Lo" dann natürlich die 4 letzten(rechten) Bits des Bytes.
Byte(s)Beschreibung
01Nummer des Slots, über den die Daten sind
02/Hi???
02/LoGibt Auskunft über die momentane Display-Anzeige.
HexBinBeschreibung
00000---- (kein Akku eingelegt)
10001SELECT AUTO/MAN: AUTO
20010SELECT AUTO/MAN: MANUAL
30011SELECT PROGRAM: CHARGE
40100SELECT PROGRAM: DISCHARGE
50101SELECT PROGRAM: CHECK
60110SELECT PROGRAM: CYCLE
70111SELECT PROGRAM: ALIVE
81000CHA
91001DIS
a1010CHK
b1011CYC
c1100ALV
d1101RDY
e1110ERR
f1111TRI

Hinweis: Bei 2h springt das Display nach 3 Sekunden zur Kapazitätswahl. Natürlich sieht man dann im Display nicht mehr "SELECT AUTO/MAN: MANUAL", sondern die Auswahl für die Kapazität. Dies sieht man dann aber am dritten Byte.
03/HiGibt Auskunft über die gewählte Akku-Kapazität im manuellen Modus.
HexBinBeschreibung
00000Automatische Erkennung (SELECT AUTO/MAN: AUTO)
10001100-200 mAh
20010200-350 mAh
30011350-600 mAh
40100600-900 mAh
50101900-1200 mAh
601101200-1500 mAh
701111500-2200 mAh
810002200-... mAh

Hinweis: Wenn dieses Teilbyte NICHT 0h ist, befindet sich der Ladeschacht im "MAN"-Modus, ansonsten dann "AUTO".
03/LoGibt Auskunft über den Ablauf des Programms.
HexBinBeschreibung
00000kein Programm aktiv / Kein Akku eingelegt
10001Laden<-- ALV startet hier
20010Entladen
30011Laden<-- CYC startet hier
40100Entladen<-- CHK startet hier
50101Laden<-- CHA startet hier
60110Entladen(wird übersprungen, nur bei DIS startet das Programm hier)
70111Erhaltungsladung(Trickle)
81000RDYFertig!

Bei ALV läuft der CM2010 folgende Schritte ab: 1, 2, 3, 4, 5, 8.
Bei CYC: 3, 4, 5, 8.
Bei CHK: 4, 5, 8.
Bei CHA: 5, 8.
Bei DIS: 6, 8. Wenn nach dem Laden die Akkuspannung sinkt, kommt TRI.
04??? (Könnte was mit der Füllstandsmessung zu tun haben. Bei 00h (ganz kurz) aktualisiert er die symbolische Batterie im Display. Sonst unterschiedliche Werte.)
05Interner Zähler. Zählt nach Einlegen des Akkus die 3 Sekunden, die man Zeit hat, eine Option zu wählen, rückwärts. Ansonsten zählt er von 60d rückwärts und bei 00 erfolgt Umsprung auf die nächste Minute.
06Stunden, die der Akku bearbeitet wurde.
07Minuten, die der Akku bearbeitet wurde.
08???
09-10Spannung (U; in mV) - nur beim Aufladen, sonst 00 00. Evtl. max. Spannung für Delta-U-Abschaltung.
11??? (evtl. ungefährer Füllstand des Akkus?)
12???
13???
14-15Stromstärke (I; in mA) mit der geladen/entladen wird.
16-17Spannung (U; in mV) des Akkus.
18-20Geladene Kapazität. (CCap; in 10-2 mAh)
21-23Entladene Kapazität. (DCap; in 10-2 mAh)
24??? (0Bh, wenn nicht geladen wird. Sonst auch mal was anderes.)
25-26Vor-vor-vor-letzte Spannung
27-28Vor-vor-letzte Spannung
29-30Vor-letzte Spannung
31-32Letzte Spannung
33-34Widerstand im Schacht. (kein Akku: FF FF; 5 MOhm: 01 F4)

Synchronisieren
Wenn man diese Informationen auslesen will, ist es wichtig, dass man das Programm mit dem Datenstrom synchronisiert - damit man nicht irgendwelches Kauderwelsch angezeigt bekommt.
Wie man am Protokoll sehen kann, ist das erste Byte IMMER die Nr. des Ladeschachts. Also kann man darauf prima synchen - alle 35 Bytes muss der Wert um 01h größer werden und nach 04h muss 34 Bytes später 01h kommen.

Screenshot
Mein Programm in Aktion:
CM2010 Software
Oben sieht man die 4 Zeilen mit den Rohdaten für den jeweiligen Slot. Der gewählte Radiobutton zeigt immer an, für welchen Slot gerade die Daten erwartet werden.
Das grüne ist die Übersichtsanzeige, wie man sie auch auf dem CM2010 sieht - allerdings ohne die Füllstandsymbole. In der Mitte sind die 4 Anzeigen mit den Details über jeden Schacht und daneben die jeweiligen Einstellungen für Graph-Farbe und Logging-AN/AUS. (Die Schächte 3 und 4 sind leer.)
Links davon unter der Übersichtsanzeige ist der Status des COM-Ports zu sehen, sowie die Zeit, wann das letzte Zeichen vom COM-Port gelesen wurde.
Oben rechts ist der Knopf, um die COM-Port-Optionen einzustellen. Normalerweise muss nur der richtige Port eingestellt werden - der Rest sollte stimmen.
Darunter ist der Start/Stop-Knopf. Und wiederum darunter ist der Knopf, der mal das Mitloggen des Ladeverlaufs bewirken soll.
Unten ist das Graph-Feld, welches die Spannungsverläufe in den einzelnen Schächten grafisch darstellt. Schwankungen von mehr als ±0,5V werden zusätzlich mit der Zeit kommentiert.
Rechts davon ist der Regler für die Aktualisierungsrate.

CM2010Project mit Alpha-blending
Hier nochmal ein Screenshot mit aktiviertem Alpha-Blending. Normalerweise ist diese Option ausgeschaltet. Man kann sie aber durch ein paar Einträge in die CM2010Project.ini aktivieren (Siehe Changelog.)

Download

  • Meine CM2010-Software (Delphi-Quelltext und i586-win32-kompilierte CM2010Project.exe; Changelog)
  • evtl. fehlende BPLs (einfach ins Verzeichnis mit der CM2010Project.exe reinkopieren!)
  • TComPort package 2.64
  • Meine Aufschlüsselung der empfangenen Daten

    Links

  • LogView
  • Christoph Heine's CM2010-WebInterface für Perl
  • Jens Friedrich's CM2020-WebInterface für Perl
  • CM2010 bei CONRAD Electronic

    Support This Project with donations. SourceForge.net Logo