Bevor ich mich selber ransetze und anfange, die Kommunikation auszuschnüffeln: Hat sich hier schon mal jemand mit dem Protokoll diser LiIon Akkus beschäftigt? Es handelt sich um die 'Data Battery' der Typen BN-VF808, BN-VF815 und BN-823, die vermutlich über ein 1-wire Protokoll mit der Kamera kommunizieren. Da Fremdhersteller das nicht können, müssen solche Akkus per externem Kabel an die DC-Buchse angeschlossen werden und die Kamera weiss dann den Ladezustand des Akkus nicht. D.h. das sie sich dann einfach abschaltet. Die Originalakkus sind richtig teuer, deswegen die Frage.
So, falls nochmal jemand über diesen Thread stolpert, ich habe das Protokoll zum grössten Teil geknackt. Es ist tatsächlich eine 1-Wire Kommunikation, die Kamera scheint der Initiator zu sein, indem sie die am Akku als 'C' bezeichnete Leitung für 100-150ms auf low zieht. Das 'weckt' den Akku-MC auf. Innerhalb von ca. 500ms muss nun ein Kommando der Kamera folgen, sonst geht der Akku wieder in Sleep. Die Kommunikation erfolgt nun mit 1200 Baud, ein Pullup ist an der 'C' Leitung immer aktiv. Lediglich zwei Kommandos scheint es zu geben, jeweils durch 2 Bytes der Kamera initiiert:
1 | 0x01 0x07 : Kommando 'Identifikation' Akku antwortet mit |
2 | 0x56 0x46 0x08 0x08 0xD0 0x02 0x3F 0xD0 0x02 0xC8 0xDC 0x64 // in ASCII: |
3 | 'V' 'F' |
bei einem Akku vom Typ VF808. Vermutlich würde ein VF-815 mit 'VF' 0x08 0x15 antworten. Die Bedeutung der folgenden Bytes erschlieest sich mir nicht, es handelt sich aber nicht um eine Seriennummer, da meine beiden Akkus so ziemlich das gleiche antworten. Den Abschluss bildet eine CRC-8 Checksum mit Polynom 0x07, im obigen Beispiel die 0x64. Das andere benutzte Kommando (0x02 0x0e) ist die Abfrage des Ladezustandes. Der Akku scheint einen 2-Kanal 10-bit ADC zu benutzen, der gespreizte Werte pro Zelle für den Bereich 4,2 Volt bis 'Akku leer' ungefähr bei 3,4 Volt ausgibt:
1 | 0x02 0x0E 0x08 0x04 0xCB 0x02 0xDD 0xC3 0x02 0x00 0x00 0x4C 0xDD 0xDC 0x0E |
2 | Command
|
3 | unbekannt NN |
4 | ADC1 LL MM HH |
5 | ADC2 LL MM HH |
6 | Runtime? LL MM HH |
7 | unbekannt NN NN |
8 | CRC-8 NN |
Ein randvoller Akku liefert also z.B. 0xe0 0xff 0x02 als ADC Wert zurück. Auch hier bildet eine CRC-8 über den gesamten Datensatz (also mit Kamera Kommando) mit 0x07 als Polynom den Abschluss. Ein leerer Akku gibt tatsächlich 0x00 0x00 0x00 zurück, bei einer Restspannung von gesamt ca 6,8 V. Im Moment verfolge ich es nicht weiter, da ich genug Akkus habe.
In den unbekannten Werten könnten evtl. noch Informationen zur Anzahl der Ladezyklen, Temperatur u. Ä. stecken.
Magnus M. schrieb: > In den unbekannten Werten könnten evtl. noch Informationen zur Anzahl > der Ladezyklen, Temperatur u. Ä. stecken. Durchaus möglich, ich habe jetzt nicht alle Aussenbedingungen systematisch verändert. Allerdings antworten ein nagelneuer und ein gebrauchter Akku so ziemlich das gleiche, so dass Ladezyklen, wenn überhaupt, nur versteckt übertragen werden. Das komplizierte am Protokoll war allerdings wirklich die Suche nach dem Polynom für die CRC-8, der Rest ist durch einen interessierten Bastler sicher noch rauszufinden.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.