OpenTx/FrSky SmartPort

AnschliessenFrSky_Telemetry
Der Telemetrieanschluss des Empfängers wird mit dem Port “S.Bus2/S.Port” von JLog2.6/2.5 verbunden. Man verwendet dafür ein Servo-Patchkabel. Der rote Draht muss nicht gezogen werden, es wäre aber trotzdem “eindeutiger”, es zu tun. JLog kann über diesen nicht mit Betriebsspannung versorgt werden, stattdessen gibt er hier selbst eine Spannung von 3,3V aus. Diese wird z.B. verwendet, um ein angeschlossenes Unidisplay zu versorgen. Es schadet aber nicht, wenn hier die R/C-Spannung vom Empfänger erscheint, u.U. sogar HV, weil eine Diode in JLog dafür sorgt, dass Strom nur in eine Richtung fließen kann.
JLog2
JLog2 benötigt zusätzlich “JSend“, da die Signale des Busses, ebenso wie die von Futaba S.Bus2, invertiert sind.
.
JLC
.
Die Firmwares 48, 58, 118 und 128, vorerst nur für JLog2.6 (siehe JLog2.6 Autodownloader), unterstützen FrSky’s Telemetrie, basierend auf dem S.Port, - für alle z.Z. durch JLog unterstützten ESCs. Zum Konfigurieren wird JLC6.0.0.6 benötigt. (Die entsprechenden Firmwares für JLog2.5 und Jlog2 erscheinen später in Q2/2014.)
FrSky schwenkte relativ kurzfristig von deren hub-basierenden Sensorsystem (Sensor Hub FSH-01) zu Smart Port (S.Port), einem der gängigen asynchron-seriellen 1-Wire-Busse, die Baudrate beträgt 57600 Baud. Ebenso wie Futaba’s S.Bus2 (und S.Bus und S.I/F Registering Interface) ist S.Port invertiert, allerdings ist die Bitorder im Frame Standard, LSB sent first, im Gegensatz zu Futaba. FrSky verlässt hier den so demonstrativ vorangetragenen “Open Gedanken”, manchen wundert’s, andere nicht.., das Protokoll S.Port ist nicht offen.
Leider ist die Protokollbeschreibung lücken- und ziemlich fehlerhaft, auch funktioniert einiges (noch) nicht. JLog hat eine Menge Daten loszuwerden, es wurde alles genutzt, was momentan verwendbar ist. “Terminal” ist der Sender Taranis X9D.
FrSky_S.Port_X9D-v2
Die “OpenTx” Geschichte schien Innovation zu verheissen, die aber zumindest bzgl. der Telemetrie momentan nicht so richtig sichtbar werden will. Zu unflexibel, zu sehr und unnötig an gegenständlichen Sensoren orientiert. Ziemlich offensichtlich scheint auch zu sein, dass die Entwickler im Wesentlichen Multicopter- und FPV-minded sind, Anforderungen des Modellhelikopterfliegens kommen zu kurz. Das zeigt sich einerseits in unzureichenden Wertebereichen, andererseits daran, wie das Alarming ausgeführt ist. Auf der positiven Seite steht die Möglichkeit, im Sender logische Verknüpfungen von Alarmschwellen setzen zu können, on top freies Mapping dieser “Custom Switches” auf Alarmausgaben per “Custom Functions”. Aber warum hat man Sensoren nicht erlaubt, selbst Alarme zu senden? Ein Sensor, zumindest JLog, sollte Alarme statusabhängig machen können. Die “State Machine” könnte man zwar u.U. teilweise mit den oben erwähnten logischen Signalen nachbilden, nur ist das für den Anwender sehr aufwändig, und der Entwickler des Sensors müsste bei Änderungen jedesmal eine Setup-Anleitung liefern.
Außerdem funktioniert die Ausgabe in einige Displaytypen bisher nicht wie beschrieben, gar nicht, fehlerhaft oder im Wertebereich unbrauchbar eingeschränkt, Letzteres trifft z.B. auf “Speed” zu. Einige Werte stehen auch nicht z.V., um Alarmschwellen (“Custom Switches”) darauf zu definieren.
Oben ein Screenshot der Taranis X9D. Die nutzerdefinierten Displays enthalten alle 12 Datenwerte, die JLog zur Zeit via S.Port anzubieten in der Lage ist. Es ist nicht auszuschließen, dass die Version der Sender-Firmware hier Einfluß hat. Implementiert wurde auf Basis der Senderfirmware opentx-x9d-v1.1.02. Trotz aller Enttäuschung angesichts höherer Erwartungen ist die Ausbeute nicht schlecht, verglichen mit einigen der anderen 7 “Fremd”-Telemetriesysteme,. die JLog gegenwärtig unterstützt:
 - Vfas Ubat (V) … Antriebsspg., geliefert vom ESC, oder die Total Pack Voltage, wenn ein CVS16 zum Einsatz kommt
- Curr Imot (A) … Motorstrom, geliefert vom ESC
- Fuel mAh … mAh, errechnet von JLog, teilweise basierend auf mAh-Werten vom ESC
- Rpm rpmRotor … Drehzahl, basierend auf 2-pol-norm.RPM des ESC, Motor-Polzahl und Untersetzung angewendet
- A2 Ibec (A) … BEC-Strom, wenn vom ESC geliefert, bzw. eines HV²BEC, wenn angeschlossen/konfiguriert
- AccX tempFET (°C) … Temperatur der FETs der Enstufen des ESC
AccY tempBEC (°C) … BEC-Temperatur des ESC bzw. eines HV²BEC
- Cell LCV (V) … Lowest Cell Voltage im Zusammenhang mit dem Einsatz eines CVS16 (Cell Voltage Sensor 16S)
- T1 extTemp1 (°C) … vom ersten von max. 3 JLog-eigenen Temperatursensoren
- AccZ PWM (%) … PWM (ESC)
T2 ist ein “konfigurationsadaptives” Display. Es liefert die Geschwindigkeit in km/h, wenn ein Speed Sensor (Prandtl Sonde SM#2560) als JLog-eigener Sensor angeschlossen ist. Ist kein Speed Sensor vorhanden, aber ein JLog-eigener Drehzahlsensor angeschlossen/konfiguriert, dann zeigt das Display diese ESC-externe Drehzahl. Ist beides nicht angeschlossen/konfiguriert, dann erscheint hier “Gas” (%), aus dem ESC stammend, sofern dieser den Gaswert liefert (momentan nicht mit Kontronik KOSMIK).
A1 Der Empfänger beliefert das Display A1 selbst mit Daten (nicht abschaltbar), es handelt sich um die Empfängerspannung, was im Allg. mit Ubec gleichzusetzen wäre. Gleichzeitig sendet JLog in A1 Ubec, Quelle ist der angeschlossene ESC oder ein HV²BEC, wenn als “Complex Sensor” an JLog konfiguriert. Sind Urx und Ubec unterschiedlich, bemerkt man das an einem ständigen Wechsel des Wertes im Display. Im Allg. wird die Spannung aber grundsätzlich dieselbe sein, zumindest in ähnlicher Range, weshalb die beiden im Sender auf A1 definierbaren Alarmschwellen für beide Spannungen gleichzeitig verwendbar sind. .. (Man kann zwar auf A2 (JLog gibt hier Ibec aus) auch Alarmschwellen definieren, es wird aber kein Alarm ausgelöst, solange der Empfänger nicht selbst A2 (ADC2) beschickt, diesen analogen Port hat. Der gängige Empfänger X8R tut es nicht.)
Es wäre jetzt zwar möglich gewesen, 6 der bis zu 16 Zellenspannungen (CVS16) zu senden, das hätte aber angesichts der Limitierung der Telemetrie auf 6S (an einem physisch existenten Sensor orientiert ;) ) nicht viel gebracht. S.Port beschränkt sich sehr richtig auf die Zelle mit der niedrigsten Spannung, Cell (–>LCV), wenn es um ein bewertbares (-> Custom Switch) Einzeldisplay geht.
Warum wird mAh in Fuel ausgegeben und nicht die automatische Berechnung Cnsp des Senders verwendet?
Zu störanfällig. Wer will, kann Cnsp on top verwenden, errechnet durch den Sender aus Curr (FAS) und der Zeit. Verlorene Frames (Updates im Rückkanal) gehen nun mal auf Kosten einer exakten Kumulation. Die Update Rate auf Curr tut ein Übriges, und die ist nun mal davon abhängig, wieviele Data Items ein Sensor zu senden hat, weitere Sensoren auf dem Bus hätten on top entsprechenden Einfluß. (Lobenswerterweise verlässt der Rx das sture Roundrobin der Abfrage physischer Sensoradressen in fixer Abfolge, fragt eine einzelne gefundene (aktive) Adresse jedes zweite Mal.)
KOSMIK und BLC+T senden kein throttle (“Gas”), daher wird mit einem KOSMIK nochmals PWM in T2 ausgegeben (BLC+T sendet auch nicht PWM). KOSMIK, Castle ICE/EDGE und SJ BLC+T senden nicht Ubec. Mit diesen ESC-Typen gibt JLog nur dann in A1 aus, wenn ein HV²BEC angeschlossen ist.
Die oben angedeuteten Beschränkungen geboten es, beim Realisieren möglichst differenzierter Alarme (Alarmtypen) JLog zum indirekten Alarmgeber zu machen, indem man mit fixen Alarmschwellen in Form von “Custom Switches” auf bestimmte Ausgaben von JLog im Sender reagiert, Werte, die als “Alarm” definiert sind. Die eigentlichen Alarmschwellen stellt man im JLC ein, dem JLog-Konfigurator. Nur bzgl. Urx und Ubec werden zwei Sender-individuelle, wertebezogene Alarmschwellen auf A1 verwendet, wobei JLog hier auch einen UbecDip Alarm sendet, indem er Null Volt in A1 ausgibt, – die Alarmschwelle für “A1 Critical” zieht hierdurch in jedem Fall.   (Viele User setzen nicht den Haken für UbecDip Alarm im JLC.. Verwendet man einen HV²BEC, den man per JLC als Sensor für JLog konfiguriert hat, dann sollte dieser Alarm Trigger aber auf jeden Fall aktiviert werden! Zusätzlich kann man, wie gesagt, die zwei granularen Alarmschwellen auf Ubec in A1 im Sender anwenden.)  Eine andere Limitierung stellen die z.V. stehenden Sound Files dar. Natürlich kann jeder Anwender hier selbst weitere Files in den Sender bringen und diese statt der vorgeschlagenen verwenden. Das notwendige Tun sollte hier nur nicht zum Gegenstand der Setup-Beschreibung gemacht werden.
Es gibt 5 differenzierte Alarmtypen:
JLog taktet die Alarme selbst. Er sendet den die Alarmbedingung verursachenden jeweiligen Wert für 1 Sekunde aus, dann 5 Sekunden Pause (kein Alarm). Nur der Alarm für Overspeed/Underspeed(Stall Speed) verwendet nur 2 Sekunden Pause. Natürlich konkurrieren mehrere gleichzeitig aktive Alarmbedingungen um den Sound Module, Alarme von JLog zzgl. dem vom Sender generierten Alarm auf A1, – die Pausen können sich dadurch stochastisch verlängern.
Urx Alarm, UbecDip Alarm, Ubec Alarm:  UbecDip Alarm wird im JLC aktiviert, JLog sendet 0V im Alarmfalle in A1. Page 12: Gleichzeitig definieren wir 2 Alarmschwellen im Sender auf A1, eine löst den Voice Alarm “A1 Warning” aus, die andere, mit geringerer Schwellspannung, “A1 Critical“. Somit ertönt auch “A1 Critical”, wenn JLog Null Volt in A1 ausgibt, um einen UbecDip Alarm zu signalisieren.  –  Es werden beide Spannungen überwacht, Urx von ADC1 des Empfängers und Ubec, vom ESC stammend oder vom HV²BEC, von JLog in A1 übermittelt. Damit beide Spannungen in der Darstellung im richtigen Wertebereich landen, belassen wirRange(logischer Spannungsteiler, orientiert am Spannungsbereich von ADC1 des Empfängers) beim Default, 13.20V. (Ich änderte auf 13.30V aufgrund gewisser rechnerischer Ungenauigkeiten des Senders. OpenTx rundet leider in keinem Fall.) JLog liefert seinen Ausgabewert Ubec so multipliziert, dass eine Range von 13.20V zur richtigen Darstellung führen sollte. — JLog sendet Ubec nicht, wenn die Spannung nicht aus einem HV²BEC sondern aus einem ESC stammt, der ESC aber gerade nicht online ist. Damit werden Zombie Alarme über die o.g., im Sender definierten Alarmschwellen verhindert. —- Als “Low Alarm” Schwelle könnte man z.B. 4.53V einstellen, für Critical Alarm 4.01V….. Ohne Alarm zwar, aber in A2 gibt JLog Ibec aus. Daher bitte die Unit von “V” in “A” ändern. “Range” bitte ändern auf 25.50(A).
Ubat Alarm (Gesamtunterspannung Antriebsakku, vom ESC oder von CVS16 als Total Pack Voltage) und LCV Alarm (Lowest Cell Voltage von CVS16), beide Alamschwellen im JLC definiert, erzeugen einen Spannungsalarm mit Voice Message “Low Battery“. Zum Signalisieren des Alarms sendet JLog 5.10(V) in Cell.  Wir definieren einen “Custom Switch” (Page 10) CS1 mit a>x auf Cell i.H.v. 5.00V. In Page 11 definieren wir sodann eine “Custom Function” CF1 auf CS1 mit Ausgabe Play Track, Sound File batlow, Wiederholung 5.
tFET Alarm (Temp. ESC-Endstufen), tBEC Alarm (Temp. HV²BEC) und extT1..3 Alarm gehen alarmtechnisch in T1. Die Alarmschwellen werden im JLC definiert, JLog gibt 1(°C) aus im Alarmfalle, was den Sound “Horn” im Sender abspielen lässt. Ein realer Wert von 1°C wandelt sich daher zu 2°C. (Im Gegensatz zu den bisherigen Gepflogenheiten von JLog in anderen Telemetrien, wird nicht nur der Alarm auf den ersten externen, JLog-eigenen Temperatursensor (extT1) ausgegeben, der als einziger ein Display hat, sondern auch die Alarme von extT2 und extT3.)   Wir definieren zunächst zwei “Custom Switches” (Page 10), CS2 mit a>x auf T1 i.H.v. und CS3, a<x, auf T1 i.H.v. . Das ersetzt den fehlenden Ausdruck “a==x” und matcht genau nur 1(°). Nun fassen wir CS2 und CS3 zusammen als logische Verknüpfung: CS4, AND, CS2, CS3. In Page 11 definieren wir die “Custom Function” CF2 auf CS4, Play Track, Sound File horn, Wiederholung 5.
mAh Alarm, definiert in JLC, sendet JLog in Fuel durch Ausgabe von 1(%). Ein realer Wert von 1 wandelt sich daher in 2.  Entsprechend definieren wir wieder zwei “Custom Switches”, CS8, a<x, auf Fuel i.H.v. 0% und Cs9, a>x, auf Fuel i.H.v. 2%. Sodann die logische Verknüpfung von CS8 und CS9: CSA, AND, CS8, CS9. In Page 11 dann die “Custom Function” CF4 auf CSA, Play Track, Sound File batcrit, Wiederholung 5.
Speed Alarm (Overspeed, Stall Speed), definiert im JLC, JLog sendet 1(°) im Alarmfalle in T2. Ein realer Wert von 1 wandelt sich daher in 2.  Somit definieren wir in Page 10 die “Custom Switches” CS5, a<x, auf T2 i.H.v. und CS6, a>x, auf T2 i.H.v. . Dann die logische Verknüpfung von CS5 und CS6, um “a==x” zu gewinnen: CS7, AND, CS5, CS6. In Page 11 definieren wir die “Custom Function” CF3 auf CS7, Play Sound, Siren, Wiederholung 5. 
Es klingt komplizierter als es ist, die textuelle Beschreibung hätte man sich auch sparen können, siehe die folgenden Screenshots:
X9D-Setup-Page12
X9D-Setp-CustomSwitches-Page10
X9D-CustomFunctions-Page11
CF7 ist nur eine Demo: Wenn der Schalter SC ganz oben ist, wird S2 zum Lautstärke-Poti.
Wegen der invertierten Bussignale wird der S.Bus2 Port von Jlog2.6 (2.5) verwendet, JLog2 benötigt daher zusätzlich JSend.
JLog verwendet als Sensoradresse 0×34.
.
Unser besonderer Dank gebührt MHM Modellbau, ohne deren Unterstützung in Form von Leihstellungen das so schnell nichts geworden wäre! Auch eine gewisse Initialzündung und “Anwenderdruck” gingen von MHM aus. :)

Die Kommentarfunktion ist geschlossen.