RCT Jeti VarioMeter released
- AchimP
- Offline
- Elite Mitglied
- Beiträge: 166
- Dank erhalten: 38
Hallo,
ist es eigentlich möglich die Nzeige bezeichnungen durch deutsche Begriffe zu ersetzen, also z.B. altitude durch Höhe?
Gruß
Achim
ist es eigentlich möglich die Nzeige bezeichnungen durch deutsche Begriffe zu ersetzen, also z.B. altitude durch Höhe?
Gruß
Achim
von AchimP
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
- VOBO
- Abwesend
- Platinum Mitglied
- Beiträge: 528
- Dank erhalten: 130
Ja.
Es gilt dann aber noch einiges zu beachten.
Kannst mich ja mal anrufen.
Gruß Volker
Es gilt dann aber noch einiges zu beachten.
Kannst mich ja mal anrufen.
Gruß Volker
von VOBO
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
- tangokilo
- Offline
- Senior Mitglied
- The sky is the limit
- Beiträge: 79
- Dank erhalten: 19
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...
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
Thomas
von tangokilo
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
- Pulsar07
- Offline
- Senior Mitglied
- Beiträge: 57
- Dank erhalten: 52
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
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
von Pulsar07
Folgende Benutzer bedankten sich: ThLehmann
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
- VOBO
- Abwesend
- Platinum Mitglied
- Beiträge: 528
- Dank erhalten: 130
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
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
von VOBO
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
- Pulsar07
- Offline
- Senior Mitglied
- Beiträge: 57
- Dank erhalten: 52
Ursprünglicher Code:
Verbesserter Code:
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
Code:
// Vario Filter
float fX;
float fY = uVario;
fX = pressureSensor.filterX * lastVariofilter;
fY = pressureSensor.filterY * fY;
lastVariofilter = fX + fY;
uVario = lastVariofilter;
Verbesserter Code:
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
von Pulsar07
Folgende Benutzer bedankten sich: nightflyer88
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
Ladezeit der Seite: 1.040 Sekunden