Kapazitätssensor V1.0 für Spektrum Telemetriesystem (Update 11.10.2012)
Nachdem ich nun eine DX8 und eine DX10 besitze warte ich schon länger auf den Kapazitätssensor den Spektrum immer noch nicht liefern kann. Daher reifte in mir der Entschluss einen eigenen Sensor zu entwickeln der mir die verbrauchte Kapazität meines Antriebsakkus via Telemetriedisplay anzeigt.
Es waren somit folgende Aufgaben zu erledigen:
- Reverse Engineering des X-Bus Protokolls (da Spektrum dies nicht für Privatpersonen veröffentlicht)
- Hardware Design
- Softwareentwicklung
Reverse Engineering des X-Bus Protokolls
Durch eine genauere Untersuchung des Bussteckers habe ich folgendes herausgefunden:
- Der X-Bus ist ein I2C-Bus
- Der Stecker ist ein JST-ZHR4
- Die Pins haben folgende Funktion SDA – SCL – 5V – GND (von links)
Nach Einschalten von Empfänger und TM1000 versucht das TM1000 von Adresse 0x01 zu lesen. Nach 13ms Pause versucht er es wieder. Nach weiteren 13ms versucht er von 0x02 zu lesen usw. (0x01, 0x01, 0x02, 0x02, 0x03, …..) bis zweimal von Adresse 0x7D gelesen wurde. Während dieser Zeit (ca. 3,5 sec) leuchtet die LED neben dem X-Bus Anschluss und wie sich herausstellte prüft das TM1000 so die angeschlossenen Sensoren.
Zwischenzeitlich fand ich dann im rc-heli-Forum den folgenden Thread (http://www.rc-heli.de/board/showthread.php?t=190165) der sich auch mit dem Thema beschäftigte und Member „mukenukem“ konnte die fehlende Information beisteuern:
- Es werden 16 Byte je Sensor übertragen – 1 Byte Adresse, 1 Byte immer Null, 14 Byte Nutzdaten
- Das TM1000 pollt ca. alle 66ms die gefundenen Sensoren
- Die Adressen der Sensoren findet man im Thread
Mittels eines Arduino konnte ich nun einen Sensor simulieren und die Nutzdatenbytes der Anzeige im Telemetriedisplay zuordnen. Der erste Schritt war somit getan.
Hardware-Design
An die Hardware stellte ich folgende Anforderungen:
- Bis 12S Lipo, bis 100A Strom
- Ein ATTiny85 mit 10Bit A/D-Wandler sollte genügen
- Einfach aufzubauen
Als Stromsensor bis 100A wurde ein ACS758LCB-100U-PFF-T gewählt dessen Ausgangssignal optional über ein RC-Glied an einen Analog-Input des ATTiny angeschlossen wurde. Ein Spannungsteiler dient zur Anpassung der Akkuspannung an einen weiteren Analog-Input. Über eine LED mit Vorwiderstand kann der Betriebszustand des Sensors signalisiert werden.
Den kompletten Schaltplan gibt es als PDF-Datei unter Downloads.
Softwareentwicklung
Die Software wurde mit der Arduino IDE geschrieben und hat folgende Funktionalität:
- Nullpunkt Stromsensor bestimmen
Wird der Empfänger/Sensor ohne Antriebsakku eingeschaltet, so wird der Nullpunkt des Stromsensors bestimmt und im EEProm des ATTiny gespeichert. Dies wird durch 4 x Blinken der LED und danach Dauerlicht signalisiert. - Normalbetrieb
Wird der Empfänger/Sensor mit angeschlossenem Antriebsakku eingeschaltet, so befindet sich der Sensor im Normalbetrieb und signalisiert dies durch Dauerlicht der LED. - Fehler
Der Fehlerzustand wird durch schnelles Blinken der LED signalisiert.
Nachbau
Zum Aufbau des ersten „richtigen“ Sensors wurde eine Platine gefräst und bestückt. So schaut nun die „V1.0“ aus. Wenn sich alles bewährt werde ich einige Platinen professionell fertigen lassen.
Stückliste, Schaltplan und HEX-File gibt es im Downloadbereich. Bitte nicht vergessen den ATTiny mittels der Fusebits auf 8 MHz internen Takt einzustellen.
Update 11.10.2012
Die bestellten Prototyp-Platinen sind angekommen und sehen bis auf die Langlöcher für den Stromsensor sehr gut aus. Da muss ich mal schauen wie ich das dem Platinenhersteller übergebe. Also nun erst mal aufbohren und bestücken.
Tipps zum Programmieren des ATTiny85
Ich nutze zum Programmieren des ATTiny die Software „avrdude“ und einen AVRISP Programmer.
Beispielaufruf zum setzen der Fusebits:
avrdude -pattiny85 -cavrispv2 -Pcom2 -b115200 -U lfuse:w:0xE2:m -U hfuse:w:0xDF:m -U efuse:w:0xFF:m
Beispielaufruf zum Programmieren des ATTiny85:
avrdude -pattiny85 -cavrispv2 -Pcom2 -b115200 -Uflash:w:“UIC_Sensor V1.0.hex“:i
RPM-Sensor für Spektrum Telemetriesystem Hott2XBus – Protokollkonverter
Comments are currently closed.