Ich habe jetzt mal den Frame Lost Sensor von Tadango um die @bionicbone Methode erweitert.
Bei dieser Methode wird über einen Kanal des Senders (hier Kanal 8) eine Dreieckfunktion zum Empfänger gesendet und dann werden die empfangenen Amplitudenwerte miteinander verglichen. Durch die lineare Steigung des Dreiecks sollte sich immer etwa der gleiche Amplitudenunterschied zwischen zwei aufeinanderfolgenden Samples ergeben (Im CH1..8 Modus wird der Wert alle 9ms übertragen, im CH1..16 Modus alle 18ms). Wenn ein Lost Frame auftritt, wird der empfangene Amplitudenwert nicht aktualisiert und der nächste gültige Wert hat dann einen größeren Abstand zum vorhergehenden Wert. Diese Amplitudendifferenz wird als Lost Frame Kriterium genommen.
Die Abstimmung der Triggerschwelle (#define MAX_TRIANGLE_DIFF 17 im Code) und die Anstiegsgeschwindigkeit der Dreiecksfunktion sind kritische Werte. Man schafft es nicht, genau die Frame Loss Anzahl zu erreichen, wie durch Zählen des Frame Loss Bits.
Um die Dreiecksfunktion im Sender zu erzeugen wird erst ein Logischer Schalter definiert mit der Funktion 'Timer' und die Timer Ein/Aus-Zeit wird auf 1,1s gesetzt für CH1..8 Modus bzw. auf 2s für CH1..16 Modus.
Dann wird im Mixer für Kanal 8 der logische Schalter als Input definiert und die Anstiegs/Abfall Geschwindigkeit (Slow Up, Slow dn) auf den gleichen Wert gesetzt, wie die Zeit beim Logischen Schalter (also 1,1s oder 2s).
Ich habe folgende Application IDs definiert, die der Sensor per Telemetrie überträgt:
5100: 'Tadango Wert' (% von frames ohne Frame loss in den letzten 100 SBus Frames)
5101: Frame Loss Zähler (absoluter 32Bit Wert, zählt FL frames nach FrSky methode)
5102: Frame Loss Zähler V2 (absoluter 32Bit Wert, zählt FL frames nach @bionicbone Methode)
5103: % von frames ohne Frame loss in den letzten 100 SBus Frames nach @bionicbone Methode)
5104: Dreiecksfunktion von Kanal 8
Für diesen Sensor muss ein 5V / 16MHz ArduinoProMini/Nano genommen werden, da die 3,3V Version hier zu langsam ist.
Hier ein Test im Rangetest Modus zu Hause (Empfänger im CH1..8 Modus gebunden):
Vergleich Tadango-Wert (5100) mit Bionicbone-Wert (5103)
Vergleich Framloss Zähler nach FrSky (5101) mit FL Zähler nach BB (5102). Die Verläufe gleichen sich, aber der BB-Wert ist nur halb so groß, wie der FrSky-Wert (V1 LBT Software)
Dreiecksfunktion von Kanal8 (5104) und FrameLoss Zähler FrSky (5101)
Die Software hängt als Zip-Datei an. Programmierung und Anschluss des Sensors wie bei herkömmlichem Tadango Sensor.
Edit: SPORT Pin in SW auf 3 geändert, für Kompatibilität zu vorhandenen Sensoren
Edit2, 11.02.20: Ich habe die SW überarbeitet für bessere Übereinstimmung des @bionicbone Wertes (5103) mit dem
@Tadango Wert (5100). Für die neue SW wird eine Dreieckfunktion mit 2s Flanke auf Kanal 8 benötigt. Wie die erzeugt wird, steht im Kommentar des Codes. Die SW ist nur für 8 Kanalmodus getestet/optimiert, da nur dort sichergestellt ist, das bei FL-Bit alle Daten vom SBus (so auch Kanal 8) betroffen sind.
So sieht das jetzt aus: