RCT Jeti VarioMeter released

11 Feb 2018 19:02 #67 von AchimP
Hallo,
ist es eigentlich möglich die Nzeige bezeichnungen durch deutsche Begriffe zu ersetzen, also z.B. altitude durch Höhe?
Gruß
Achim

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

11 Feb 2018 19:51 #68 von VOBO
Ja.
Es gilt dann aber noch einiges zu beachten.
Kannst mich ja mal anrufen.

Gruß Volker

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

13 Feb 2018 14:53 #69 von tangokilo
Hallo zusammen,

ich beziehe mich auf den Post #58 von Michael.
Dass RCT Vario habe ich erfolgreich gebaut (mein erster Jeti-Sensor).
Nun habe ich aber 2 Fragen:
1. Nachdem ich die Parameter X und Y nach der o.a. Vorgabe geändert habe, sieht das Ergebnis schon bedeutend besser aus (Trockenübung).
Nun möchte ich, wie vorgeschlagen, Feintuning betreiben. Dies möchte ich aber nicht einfach "blind" tun, mich interessiert schon,
was die Änderung der Parameter X und Y eigentlich bewirkt, bzw. wofür diese konkret stehen. Das würde die Tests sinnvoller ausführbar
machen.
2. Ich wollte die Parameter über die Jeti-Box in meiner DS 24 vornehmen. Dort komme ich aber nicht auf den Sensor. Mit einer
"Hardware" Jeti-Box war das kein Problem. Hat da jemand eine Ahnung?

Vielen Dank, wenn sich jemand die Mühe macht, mit da weiterzuhelfen. Sorry, wenn das simple Fragen sind, aber ich bin blutiger Laie...

Gruß
Thomas

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

13 Feb 2018 22:50 #70 von Pulsar07
Habe das Vario von nightflyer ( github.com/nightflyer88/Jeti_VarioGPS-Sensor ), der auf dem Code von www.rc-thoughts.com/jeti-variometer/ basiert, nachgebaut und den Code analysiert, um weitere Vario-Features zu testen.
Der Code bzgl. der von dir angesprochenen beiden Filter-Parameter X und Y ist in beiden Code-Quellen identisch, aber aus meiner Sicht in beiden nicht ganz korrekt.

Der Code implementiert einen digitalen Low-Pass-Filter einen sogenannten IIR (infinite impulse response) Filter, der eigentlich recht simpel, den letzten realen Messwert mit einem Faktor (Y) gewichtet und den letzten "geglätteten" Wert mit einem Faktor (X) gewichtet und daraus einen neuen "geglätteten" Wert berechnet.
Nun sind aber die beiden Glättungsfaktoren X und Y nicht wie in den beiden oben genannten Implementierungen des IIR - Filters realisiert, unabhängig voneinander, sondern sie müssen in der Relation Y = (1-X) zueinander stehen, oder anders ausgedrückt: X + Y muss 1 ergeben.
Siehe hierzu:
en.wikipedia.org/wiki/Low-pass_filter#Si...ulse_response_filter

So, was heißt das praktisch (immer unter der Bedingung X+Y=1) :
Je kleiner Y, desto mehr wird der Messwert geglättet und desto mehr werden die vergangenen Messwerte in den neuen geglätteten Wert gewichtet, aber auch desto träger wirkt sich eine aktuelle Wertänderung aus.
Der Wert X=0.12 (Y=0.88) glättet hochfrequente Schwankungen schon sehr stark, aber man hat noch einigermaßen ein zeitnahes Ansprechen des Varios.
Der Bosch-Sensor BMP280 rauscht sehr stark. Du kannst das einfach mal ausprobieren und Y=1 und X=0 ausprobieren, da hüpft der einzelne Messwert extrem. Je kleiner man Y wählt (und damit X automatisch größer wird), desto mehr wird der geglättete Wert über die Werte der Vergangenheit gewichtet und desto träger wird deine Anzeige.

Ich hoffe, es war nicht zu theoretisch und du kannst damit was anfangen ;-))

Wenn jemand an einer korrekten Implementierung Interesse hat, und diese in seinen Code patchen will, kann sich hier gerne nochmals melden, dann schicke ich noch das gefixte Codefragment. In diesem Code benötigt man nur noch einen "Smoothing-Factor", da der andere ja berechnet werden kann.

Gruß

Rainer
Folgende Benutzer bedankten sich: ThLehmann

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

14 Feb 2018 08:53 #71 von VOBO
Hallo Rainer,

Ist dein geänderter Code ansonsten der Gleiche, wie ihn auch nightflyer88 verwendet hat und du hast nur einen der beiden Parameter berechnet, anstatt beide zu bedienen?
Wenn es auch noch weitere Unterschiede gibt, hätte ich Interesse an deiner Änderung.

Gruß Volker

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

14 Feb 2018 11:19 #72 von Pulsar07
Ursprünglicher Code:
      // Vario Filter
      float fX;
      float fY = uVario;
      fX = pressureSensor.filterX * lastVariofilter;
      fY = pressureSensor.filterY * fY;
      lastVariofilter = fX + fY;
      uVario = lastVariofilter;

Verbesserter Code:
      // Vario Filter
      // IIR Low Pass Filter
      // y[i] := α * x[i] + (1) * y[i-1]
      //       := y[i-1] + α * (x[i] - y[i-1])
      // see: https://en.wikipedia.org/wiki/Low-pass_filter#Simple_infinite_impulse_response_filter
      uVario = lastVariofilter + pressureSensor.filterY * (uVario - lastVariofilter);
      lastVariofilter = uVario;

Die Berechnung ist exakt dieselbe wie im ursprünglichen Code, nur mathematisch einmal umgeformt, und dass man eben den Dämpfungsfaktor/die Dämpfungsfaktoren nicht falsch einstellen kann.
Sobald die Faktoren Bedingung X+Y=1 nicht eingehalten wird, verfälscht der Tiefpass eben das Ergebnis. Je größer die Abweichung von der Bedingung, desto größer wird der Fehler.
Wenn man die Bedingung im ursprünglichen Code manuell einhält, ist der alte Code ebenso korrekt, wie der neue.

Gruß Rainer
Folgende Benutzer bedankten sich: nightflyer88

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Ladezeit der Seite: 0.159 Sekunden

Impressum