Graupner HoTT Telemetrie-Sensoren Eigenbau DIY | Telemetrie-Protokoll entschlüsselt

Graupner-Telemetrie-Protokoll "entschlüsselt":
Die gute Nachricht zuerst: die serielle Kommunikation ist seit gestern abend klar! :-)
Leider bin ich E-Technik-Laie. Kann nur etwas programmieren, aber kenne mich mit Hardware nicht so gut aus. Daher suche ich Mitmacher für ein spannendes Gemeinschaftsprojekt! Lust? ;)


Zusammenfassung / Abstract:
Es soll ein sehr leichter Spannungssensor und evtl. Höhensensor entwickelt werden, der an den Empfänger GR-16/12 angeschlossen werden kann. Innerhalb der nächsten Wochen/Monate soll ein funktionierender Prototyp entstehen und im Flug getestet werden.

Die Ausgangslage / Ziele:
Die Firma Graupner bietet mit ihrer HoTT(R)-Technologie meines Erachtens eine exzellente Fernsteuerung an. Die Sensoren sind prima, ich setze sie seit April oft ein.

Es gibt nur leider ein Problem: Für kleine Slowflyer, Shockies, Merlin & Co. sind die im Augenblick angebotenen Sensoren leider zu groß und zu schwer. Darum möchte ich gerne
selbst einen einfachen Spannungssensor für bis zu 3 Lipozellen entwickeln. Das Ganze soll mit Kabeln, Schrumpfschlauch und Vorwiderständen höchstens 8-10 Gramm wiegen. Realistisch ist ein robuster, alltagstauglicher Sensor unter 20 €. Ich sehe das als Übergangslösung solange, bis die Firma Graupner selbst einen kleineren Sensor ins Angebot nimmt. Verkaufen möchte ich nichts, sondern das zu entwickelnde Sensorboard als Open Source der Allgemeinheit kostenlos zur Verfügung stellen :)


Vorschlag für einen Projektnamen:
Ein Projekt braucht einen Namen :)
"open tecodino-Sensor".:p
Dies steht für telemetry compatible arduino sensor
Da die Markenrechte der Firma Graupner auf keinen Fall geschädigt werden dürfen, möchte ich darauf hinweisen, dass hier Markennamen wie HoTT oder Graupner schützenswert sind und in diesem Thread nicht weiter verwendet werden sollten! Außer, um darauf hinzuweisen, dass man zum Betrieb des tecodino-sensors noch einen original HoTT-Empfänger von Graupner kaufen sollte!

Anschluss des Tecodinos an den Empfänger:
Die Graupnermodule z.B. GAM, wird mit einem üblichen Servokabel an einen Empfänger z.B. GR-16 angeschlossen. Über die rote Litze des servokabels wird das Modul mit +4,8 V (?)Spannung versorgt. Die Sensoren liefern seriell diverse Messdaten über 2 Leitungen an das Empfängermodul (Braun = GND, Orange = Signal)

Schema: General-Air-Modul <------> GR-16/GR-12 - - - - 2,4 Ghz > MX-16/12-Fernsteuerung/Sender

Der neu zu entwickelnde Sensor soll genau so an die Empfänger angeschlossen werden:
Tecodino-Sensor <------> GR-16/GR-12 - - - - 2,4 Ghz > MX-16/12-Fernsteuerung/Sender

Das bedeutet, dass der Tecodino die serielle Kommunikation zum GR-16/GR-12 imitieren muss.
:p
 
Reverse-Engineering der Kommunikation

Reverse-Engineering der Kommunikation

Entschlüsseln der seriellen Kommunikation:
Letzte Woche habe ich einen IKALOGIC-Logic-Analyzer mit 4 Kanälen bestellt
und eine Freeduino-Experiermentierplatine zum Imitieren des herausgefundenen Protokolls.
Am Sonntag wurde gleich probiert, die Kommunikation mitzulesen... sniffing
Das Revers-Engineering verlief sehr easy.

:D

Ich habe nur die Signalkabel zum Sensor mit dem Logicanalyzer verbunden
und versucht, die Signale bei 19200 Baud, 8 Bit als seriellen Datenstrom zu dekodieren.
Die Versuchsanordnung ist hier abgebildet. Weil mir der GAM-Sensor bereits seit längerem zu schwer war, hatte ich im Mai das Gehäuse entfernt...also nicht wundern, wie komisch da aussieht...

Nach 3 Stunden tüfteln (mein erstes Mal....), ergaben die Daten einen Sinn.
Mit systematischem Verändern der Variablen konnte ich leicht sehen,
wie sich die Sensordaten verändern, wenn man Spannung oder Höhe verändert.
Drehzahl und Temperatursensor habe ich nicht, wurde nicht getestet.


mit 3 Einzelzellen-Lipo
Frage des Empfängers (request) 80 8d:
Antwort des General-Air-Modul: 00 7c 8d 00 d0 cf cf 00 00 00 00 00 00 00 00 00 00 00 00 00 00 f2 01 30 75 78 00 00 00 00 00 00 00 80 7d 84 00

ohne Einzelzellen Lipos
Frage des Empfängers (request) 80 8d:
Antwort des General-Air-Modul: 00 7c 8d 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 f1 01 30 75 78 00 00 00 00 00 00 00 80 7d 15 00


Man sieht deutlich dass Byte 5, 6 und 7 die Spannung der Lipozellen kodieren

Volt: 4.12, 4.12, 4.12
Bytes: CE, CE, CE

Volt: 0.3, 4.12, 0.0
Bytes: 0f, ce, 00

Volt: 0.0, 0.0, 4.04
Bytes: 00,00,ca

Man kann also sagen: der Hexwert ist die Hälfte der Spannung.
CA (dezimal 202) entspricht 10 x 2 x 202 mV = 4.04 V
OF (dezimal 15) entspricht 10 x 2 x 202 mV = 0.30 V

Interessant ist, dass die Graupner-Telemetrie offenbar nur 0.2 mV-Schritte kodieren kann.
;)

Im nächsten Schritt wurde der Logicanalyzer nicht im record-Modus verwendet,
sondern zum Playback. Wenn die gespeicherten Daten zurück gesendet wurden,
wurde auf dem Telemetrie-Display und die korrekte Spannung und Höhe angezeigt.

Die Höhe -10 bis 234 Meter wird im vierten Byte kodiert.
Ich schätze, dass ein weiteres Byte irgendwo die Zehnmeter-Stufen kodiert,
so dass ca. 2700 Meter abgebildet werden können. [?? stimmt das so ??]

Nun müsste man dieses Protokoll mit dem Arduino nachahmen
und am Arduinoboard gemessene Spannungen korrekt kodieren.... ;-)
 

Anhänge

  • tecodino-00.jpg
    tecodino-00.jpg
    21,5 KB · Aufrufe: 833
  • tecodino-001-logicanalyzer.jpg
    tecodino-001-logicanalyzer.jpg
    97,6 KB · Aufrufe: 690
  • tecodino-002-freeduino-twentyten-prototyp-board.jpg
    tecodino-002-freeduino-twentyten-prototyp-board.jpg
    97,6 KB · Aufrufe: 658
  • tecodino-003-verkablung-des-gam-zur-analyse.jpg
    tecodino-003-verkablung-des-gam-zur-analyse.jpg
    54,9 KB · Aufrufe: 763
  • tecodino-004-serielle-signale-vom-gam.jpg
    tecodino-004-serielle-signale-vom-gam.jpg
    95,7 KB · Aufrufe: 660
  • tecodino-04-baudrate.jpg
    tecodino-04-baudrate.jpg
    100,3 KB · Aufrufe: 510
  • tecodino-05-serielle-signale-detail-1.jpg
    tecodino-05-serielle-signale-detail-1.jpg
    86,9 KB · Aufrufe: 699
  • tecodino-06-serielle-signale-02-decodiert.jpg
    tecodino-06-serielle-signale-02-decodiert.jpg
    85,2 KB · Aufrufe: 591
  • tecodino-07-analyse-serieller-daten.jpg
    tecodino-07-analyse-serieller-daten.jpg
    90,3 KB · Aufrufe: 555
Anschluss der Spannungssensorik, Hilfe

Anschluss der Spannungssensorik, Hilfe

Jetzt geht's ans Programmieren....
Dazu brauche ich Hilfe von jemanden, der sich mit Widerständen & Co.
auskennt, ich habe Angst, das Board zu zerstören....


Frage: ist das, was unten steht ok??
:rolleyes:

Ausgangslage:
Der superleichte und kleine Arduino Pro Mini hat nur
eine Größe von 18x33x4 mm und wiegt ca. 2 Gramm :D
(Quelle: http://www.watterott.com/index.php?page=search&page_action=query&keywords=arduino+pro+mini)
Es gibt Versionen für 3,3 oder 5 Volt, so dass die normale Spannung ausreicht,
die regulär aus dem Telemetrieanschluss des GR-16-Empfängers kommt.
Ich hoffe, dass die kleinen Arduinos relativ akku-sparend arbeiten.

Grundsätzlich kann man angeblich einen Analogeingang des Arduino mit
mit einer LiPo-Zelle verbinden, um die Spannung zu messen.
Der User GeKoch hat dazu folgenden Vorschlag:


Vbattery
|
R1
|
-------------- Arduino analog pin
|
R2
|
Ground

(Quelle: http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1222109476, 22.09.2008)
 

ingo_s

User
Hi,

für die Lipo Überwachung solltest du schon die einzelnen Zellen messen. wenn Du bei Pro mini bleiben willst, am besten ein Sensor spezifisches Basis Board zum aufstecken machen.

Bei den Daten ist sicher noch eine Checksum oder CRC dabei, schon überprüft?

Gruß Ingo
 
Hi Ingo,


Heute Abend experimentiere ich weiter.
Bin totaler Anfänger beim µicrocomputer-Entwickeln:rolleyes:
Vielleicht ist ATTiny oder eine andere Plattform besser geeignet.
Ich bin erstmal ganz froh gewesen, dass ich Arduino entdeckt hatte
(kann bisschen C/C++ und Java besser, Assembler leider nur in Grundzügen)
Will aber lernen!!

Es scheint für die Antwort des Sensor keine Prüfsumme zu geben.
Muss das nachher nochmal systematisch prüfen, bevor ich die ersten
Sensordaten nachahme.

Der Empfänger sendet alle 200 ms einen Request.
Und der Sensor antwortet mit einer Gruppe von 36 Bytes,
wenn ich mich nicht verzählt hab. Offenbar unterscheidet
sich die Antwort nur in den Datenbits.

Vielleicht reicht es dem Empfänger-"Bus",
wenn ein fester Datenrahmen nur "sinnvolle" Werte enthält?
:eek:
LG Stefan
 
Entschlüsseln der seriellen Kommunikation:

Interessant ist, dass die Graupner-Telemetrie offenbar nur 0.2 mV-Schritte kodieren kann.
;)

Hallo,
interessante Sache !
Du möchtest ein Sensor für Anschluss am Balancer?
Zu Berüchsichtigen ist:
Die Spannungen am Balancerstecker sind nicht die Einzelzellenspannungen sondern:

Pin
1 - Masse (-)
2 - Spannung Zelle 1
3 - Spannung Zelle 1+2
4 - Spannung Zelle 1+2+3
5 - u.s.w.....

Da der Andurio nur ein Massepotenzial hat muss er die Differenzspannungen berechnen.
Offensichtlich werden die Spannungswerte an den Empfänger mit 8 Bit (256) Auflösung gesendet.
Somit sollte der Sender jede Zelle bis 5,12V anzeigen können.
Der Andurio hat doch Analogeingänge mit 12 Bit , bei welcher Spannung am Eingang gibt er 4096 ( 12Bit ) aus ?

Mich würde eher ein Sensor für die Gesammtakkuspannung interessieren. Würde diesen dann am Regler anlöten. Am GAM wird die Gesammtspannung ( bis 30 V ) ja auch ohne Balancerstecker ausgegeben, vermutlich mit 12 Bit Auflösung).
Ich möchte nicht jedesmal den Balancerstecker in Flieger einstecken.

Die Warnschwellen sollte man auch einstellen können, ich hoffe diese werden nicht im Sensor gespeichert, müsste man prüfen, einfach Schwelle am Sender einstellen und mit dem Simulator entsprechende Werte an den Empfänger schicken.

Danke für deine Bemühungen
Freue mich schon auf einen "Minisensor für die Akkugesammtspannung" :D
Andi
 
für die Lipo Überwachung solltest du schon die einzelnen Zellen messen.

Ja! Stimme Dir voll zu! Unddrei Zellen sollten für kleine Flieger reichen.
Graupner bietet Überwachung von 6 Zellen und Strommessung bis 40 A.

wenn Du bei Pro mini bleiben willst, am besten ein Sensor spezifisches Basis Board zum aufstecken machen.

Mir schwebt eher ein eingeschrumpftes Modul vor. Nur mit einem Servostecker
und einem Lipo-Balancer-Anschluss. Einfach, leicht und trotzdem robust.

Die Frage ist:
wird man die Analog-Inputs mit Vorwiederständen als Spannungssensor missbrauchen können? Glaube schon, brauche nur noch Bestätigung von einem Elektriker/E-Technicker.
Die Inputs verkraften nur < 50 mA...

Mir mit maximal 4.1 Volt Lipospannung und 1 KOhm müsste man doch
auf der sicheren Seite sein, oder?
 
Moin Stefan,

einen Teil der Arbeit kannst Du Dir vereinfachen indem Du Graupner eine freundliche Mail mit der Bitte um übersendung der Protokollspec schickst.

OK - das hat dann den Nachteil des NDA ...

Gruß

gecko
 
Moin Stefan,
einen Teil der Arbeit kannst Du Dir vereinfachen indem Du Graupner eine freundliche Mail mit der Bitte um übersendung der Protokollspec schickst. OK - das hat dann den Nachteil des NDA ... Gruß, gecko


Gute Empfehlung; Hast Du da Erfahrungen?
Mit offizieller Anfrage habe ich auch schon überlegt, aber mich dann
nicht getraut:( und durch selber entschlüsseln lernt man bestimmt mehr, oder?

Reverse-engineering ist hier auch nicht verboten, weil solche einfachen Protokoll-Implementierungen keinen Schutz genießen. Außerdem funktionieren wahrscheinlich alle Sensor-Verbindungen ähnlich. Verboten ist es (zurecht), das Modell-Matching zu kopieren!
Tun wir aber nicht!:p

Selbstverständlich möchte ich der Firma Graupner in keinster Weise schaden!!
Ganz im Gegenteil: ich kaufe bewusst ganz viele Sachen von Graupner und mache
Werbung dafür, weil mich die gute Qualität wirklich überzeugt. Möchte ja keine gewerbliche Konkurrenz zu den ausgereiften Originalsensoren etablieren! Will für mich und ein paar Interessierte Sachen basteln, die ein mittelständisches Unternehmen nicht herstellt.
Kann Graupner auch gar nicht, ohne gleichzeitig den Entwicklungs- und Wartungsaufwand aufzublähen.
 
Moin,

ja ich hab da Erfahrungen - und zwar gute.

Die Spec liegt hier - aber wie gesagt mit NDA.

Ob ich aber damit etwas machen werde ist noch fraglich da sich inzwischen rausgestellt hat das die Nachrüstmodule keine Sprache können. Damit ist ein großer Vorteil für mich dahin.

Gruß

gecko
 
Hallo,
Die Spannungen am Balancerstecker sind nicht die Einzelzellenspannungen sondern:

Pin
1 - Masse (-)
2 - Spannung Zelle 1
3 - Spannung Zelle 1+2
4 - Spannung Zelle 1+2+3
5 - u.s.w.....

Könnte man nicht Pin z.B. 3 über einen sehr hohen Widerstand auf Masse legen
und dann dahinter z.B. zwischen Pin 3 und Pin 4 die Differenz messen?
Mit meinem Mulitmeter kann ich ja auch zwischen den Pins messen! ?
oder irre ich?


Somit sollte der Sender jede Zelle bis 5,12V anzeigen können!
Der Andurio hat doch Analogeingänge mit 12 Bit , bei welcher Spannung am Eingang gibt er 4096 ( 12Bit ) aus ? [...]
Mich würde eher ein Sensor für die Gesamtakkuspannung interessieren. [...]

Mit meinem GAM fliege ich auch immer nur mit Einzelzellspannung (erste Zelle),
das ist sehr aussagekräftig. Bei 4,1 Volt geh ich fliegen und bei 3,4 Volt wird gelandet:D

Man könnte doch auch "Spannungsteiler" z.B. 1:6 nutzen?
Oder?? dann nur noch das Byte herausfinden, mit dem Graupner die
Gesamtspannung kodiert? mit rund 5 Volt am Analoginput gingen
Akkugesamtspannungen bis 30 Volt.

Weiß jemand, wie man so einen Spannungsteiler auslegt?:confused:
Widerstände? Wie groß? Wo die Spannung zum Analog-Input abgreifen?
Kenn mich leider (noch) nicht aus :cry:

Die AD-Wandlung schaff ich dann wieder alleine :D
 

ingo_s

User
Hi,

Du musst von der ADC Referenzspannung ausgehend einen Spannungsteiler berechnen mit dem du die maximal anliegende Spannung noch auflösen kannst. Bei mir 3.3V URef bis 4 Zellen gibt 47k zu 11k. Das ganze 4mal für jeden Pin und dann in der Weichware aus der Differenz die einzelne Zellenspannung berechnen. Den GND Pin sollte man 200 bis 300mV vorspannen um auch den Spannungsabfall auf den Zuleitungen (Lipo-Minus -> Regler -> Empfänger) mit berücksichtigen zu können. Die Störimpulse an den Spannungsteilern müssen per Ko. oder per Software gefiltert wrden.

Gruß Ingo
 
>>Bei mir 3.3V URef bis 4 Zellen gibt 47k zu 11k. Das ganze 4mal für jeden Pin und dann in >>der Weichware aus der Differenz die einzelne Zellenspannung berechnen.

Das wird hinhauen. Hab gerade solche Schaltungen gegoogelt.
Deine Anhaltspunkte für Widerstände helfen mir sehr, um das nachzuvollziehen!
Danke.

>>Den GND Pin sollte man 200 bis 300 mV vorspannen um auch den Spannungsabfall
>> auf den Zuleitungen (Lipo-Minus -> Regler -> Empfänger) mit berücksichtigen zu
>>können. Die Störimpulse an den Spannungsteilern müssen per Ko. oder per Software >>gefiltert wrden.

Ok, Danke! das muss ich dann wohl mit einem E-Techniker vor Ort basteln:
Also GND auf 0.3 Volt und kleine Kondesatoren, damit Störimpulse
Spannungsteilern nicht zu vielen Schwankungen führen, oder eine Art von
gleitendem Durchschnitt als Filter.

Eilt ja nicht, wenn wieder Tage, wo man nicht fliegen kann,
werd ich das schon lernen.
 
Man könnte doch auch "Spannungsteiler" z.B. 1:6 nutzen?
Oder?? dann nur noch das Byte herausfinden, mit dem Graupner die
Gesamtspannung kodiert? mit rund 5 Volt am Analoginput gingen
Akkugesamtspannungen bis 30 Volt.

Hallo,
habe mir den Atmega mal angeschaut: Analogeingänge mit 10 Bit aufgelöst. Eine Interne Referenzspannung mit 1,1V könnte man verwenden.

Für bis zu 4 Zellen sollte der Spannungsteiler bei den 1,1V am Eingang auf 20V am Akku ausgelegt werden.
Also:
ADC Eingang gegen - (Masse) = 10K
ADC Eingang gegen Akku + = 189K ( Einen änlichen nehmen und softwareseitig eichen )
Metallfilmwiederstände 1% Toleranz.
Grüße
Andi
 
Zuletzt bearbeitet von einem Moderator:
Projektplan

Projektplan

Momentan habe ich viele Anregungen und konkrete Hilfen gekriegt,
damit lässt sich was auf die Beine stellen.
Heute nachmittag haben mich zwei Fliegerkollegen (E-Techniker)
gut beraten, einer hat gerade für Jeti Sensoren gebaut.
Nun muss ich einfach systematisch tüfteln

Dazu hab ich mir mal einen Projektplan gemacht.
Dann gibt's bis zur Saison 2012 nämlich brauchbare Ergebnisse.
Werde euch dann ab und zu auf dem Laufenden halten :D


August/September: Forschung ;-)
Reverse-Engineering des Protokolls zwischen einem Sensor und Empfänger
alle vom GAM gemessenen Spannungen, Höhe bzw. Steig- und Sinkrate
Erzeugen einer korrekten Gültigkeitsprüfung, Checksumme?, CRC?


Oktober/November: Software
Erzeugen protokollkonformer Datenserien mit C für Arduino.
Evtl. Bereitstellen einer Art von Abstraktionsschicht,
damit auch übliche UAV oder FPV/OSD-Geräte darauf zugreifen können
(Interface), Dokumentation


November/Dezember: Hardware
Spannungsmessung bis 30 Volt und bis 4 Zellen
Verkleinern, Gewichtsoptimierung;
Test mit verchiedener Hardware: Chip only ;-)
(also kein Arduino mini oder nano, sondern ganz wenig...
ausführliche Tests am Boden

Januar/Februar (Betatest)
Test im Flugzeug
Prüfung und Optimieren
Abgabe des fertigen Sensors an interessierte Mitflieger
und Forumskollegen


LG Stefan
 
Hi flying doctor,

bitte auch auf die WEEE Richtline achten. Das führt schnell zu Problemen wenn man die elektronischen Artikel nicht registriert. Ich habe damit beruflich zu tun.

Ein Kollege von mir musste da schon eine schmerzliche Erfahrung machen.

Bitte nicht falsch verstehen!! Ich möchte auch nicht schulmeistern. Einfach ein Auge drauf haben.

VG

db
 

DD8ED

Vereinsmitglied
Hallo,

ohne jetzt genauer in die Abgründe der Datenblätter abgestiegen zu sein....
Es gibt ATmega16/32 HVB. Diese sind auf Akkumanagement spezialisiert. Da könnten einige Funktionen integriert sein, die nützlich sein könnten.
Nur mal als Tip.
Just my 2 cents
 
Ansicht hell / dunkel umschalten
Oben Unten