Simpel Vario mit Druckanschluss

  • FuniCapi
  • FuniCapi's Avatar Offline
  • Platinum Mitglied
  • Platinum Mitglied
  • Beiträge: 1716
  • Dank erhalten: 836

FuniCapi antwortete auf Simpel Vario mit Druckanschluss

Posted 09 Aug. 2018 23:03 #13
Jep, ist mir auch schon aufgefallen.
Sobald man den Thread über den Titellink öffnet ist er wieder da.

Gruss Lukas
von FuniCapi

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

  • nichtgedacht
  • nichtgedacht's Avatar Autor
  • Visitor
  • Visitor
  • Dank erhalten: 0

nichtgedacht antwortete auf Simpel Vario mit Druckanschluss

Posted 16 Aug. 2018 19:11 #14
Hi,

ich lasse inzwischen die Programmschleife frei laufen und messe mit dem
Oszilloskop 23 - 24ms Wiederholzeit. Die Zeit schwankt um ca. 1ms durch
Ausführen der Kommunikation Richtung Empfänger. Die Schwankung ist für
den Zweck unerheblich.

ich hab' noch mal ein bischen einfache Theorie wie der Filter funktioniert

Ermitteln der Steigung eines verrauschten Signals als Differenz der Ausgangssignale zweier paralleler Tiefpassfilter

Ein Tiefpass mit einer konstanten Rampe als Eingangssignal liefert am Ausgang
nach einer "Einschwingzeit" dieselbe Rampe aber um eine konstante Zeit versetzt.
Dieser Versatz ist Tau, hier T genannt. Bei einem analogen passiven RC-Tiefpass ist
T = R * C

Aus der Zeichnung kann unmittelbar die Steigung entnommen werden als

1.) dx / (T2 - T1)

Die bekannte digitale Formel für ein sogenanntes Exponentialfilter ist:

2.) output[n] = output[n-1] - alpha * (output[n-1] - input)

Dieser Algorithmus bildet als IIR Filter ein einfaches RC-Glied nach.

Für dieses digitale Äquivalent zum RC Glied gilt folgender Zusammenhang:

3.) alpha = dt / (RC + dt)

mit dt als Abtastintervall

3a.) RC = dt / alpha - dt = Tau

Die Steigung des Eingangssignals ( 1., 3.) ist also:

4.) dx / (dt / alpha2 - dt - ( dt / alpha1 - dt ) )
= dx / ( dt / alpha2 - dt / alpha1 )

Während dx einfach die Differenz der Ausgänge und poportional zur Steigung ist,
gibt der Teiler in diesem Bruch die Verstärkung resp. Abschwächung an.

Wählt man die alphas mit 0.15 und 0.05 und ist dt 24ms ergibt sich
für den Teiler:

24ms / 0.05 - 24ms / 0.15 = 0,32

Man muß also einfach die Differenz der Ausgänge mit 1 / 0,32 multiplizieren
um die Steigung des Signals am Eingang zu erhalten.

Ergebnisalgorithmus:

r_altitude0 = r_altitude0 - 0.15 * (r_altitude0 - relativeAltitude);
r_altitude1 = r_altitude1 - 0.05 * (r_altitude1 - relativeAltitude);

climb = (r_altitude0 - r_altitude1) * 3,125;



Hier mal ein Bild aus LTSpice. Die Zeitkonstanten sind frei erfunden, zeigen aber wie schnell
der Filter ist wenn man ein bischen Rauschen zulässt.



Gruß
Dieter
von nichtgedacht

Anhänge:

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

  • FuniCapi
  • FuniCapi's Avatar Offline
  • Platinum Mitglied
  • Platinum Mitglied
  • Beiträge: 1716
  • Dank erhalten: 836

FuniCapi antwortete auf Simpel Vario mit Druckanschluss

Posted 16 Aug. 2018 19:38 #15
Du gehst bei deiner Simulation von einem Steigen aus das deutlich über dem Messrauschen liegt.

Schlussendlich bleibt nur testen im realen Flug übrig. Ich werden deinen Code mal testen, bzw. zu meinem dazu fügen. So kann ich durch umschalten im Flug vergleichen. Zudem habe ich dadurch einen Log der beide Steigraten beinhaltet. Dann kann man das Rauschen und die Ansprechzeit der beiden Messwerte gut vergleichen. Ich bin sehr gespannt wie gut deine Filtermethode ist.

Gruss Lukas
Last Edit:16 Aug. 2018 19:39 von FuniCapi
Letzte Änderung: 16 Aug. 2018 19:39 von FuniCapi.

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

  • nichtgedacht
  • nichtgedacht's Avatar Autor
  • Visitor
  • Visitor
  • Dank erhalten: 0

nichtgedacht antwortete auf Simpel Vario mit Druckanschluss

Posted 12 Okt. 2018 18:00 #16
Hi,

an diesem verlängerten Flug mit meinem DLG kann man schön den stimmigen Phasenbezug zwischen der
angezeigten Höhe und dem angezeigten Steigen erkennen. Natürlich hat auch die angezeigte Höhe einen
kleinen time lag aber das Vario scheint mir recht spontan zu sein und hat sich schon bei vielen Flügen als
sehr nützlich erwiesen.
Die Höhe lasse ich inzwischen mit Dezimeter Auflösung ausgeben. Sonst werden unschöne Treppchen dargestellt.

Gruß
Dieter

von nichtgedacht

Anhänge:

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

  • nichtgedacht
  • nichtgedacht's Avatar Autor
  • Visitor
  • Visitor
  • Dank erhalten: 0

nichtgedacht antwortete auf Simpel Vario mit Druckanschluss

Posted 07 Dez. 2018 17:11 #17
Hallo zusammen,

es gibt jetzt auch ein LUA Script für das Mini-Vario.
Eine Version mit fest eingestelltem Sensor "mini_vario" und eine Version
mit frei wählbarem Sensor und Parametern

www.jetiforum.de/index.php/lua-fuer-die-...t-hoehen-graph#94274

Gruß
Dieter
von nichtgedacht

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

  • nichtgedacht
  • nichtgedacht's Avatar Autor
  • Visitor
  • Visitor
  • Dank erhalten: 0

nichtgedacht antwortete auf Simpel Vario mit Druckanschluss

Posted 18 Dez. 2018 23:30 #18
Hallo zusammen,

ich habe jetzt die Library github.com/jarzebski/Arduino-MS5611 gecloned
und umgebaut. Das Original setzt das Datenblatt vom MS5611 sehr schön um.
Leider sind dort zwischen dem Absetzen der AD Conversion Kommandos für
Temperatur und Druck und dem Auslesen des jeweiligen Ergebnisregisters delays
eingebaut. Bei höchster Auflösung der Wandlung jeweils 10ms delay.
Man muss laut Datenblatt maximal 9,04 ms warten bis die Wandlung abgeschlossen ist.

Ich habe das nun auf interruptgesteuert umgebaut und gewinne so praktisch 20ms pro kompletter
Abfrage (Temperatur, Luftdruck) um einen aufwändigeren Filter berechnen zu können. Außerdem
wird ein Flag von der ISR gesetzt (data_ready) das in der Programmschleife zum präzisen Timing
benutzt werden kann und beim Lesen des Luftdrucks automatisch wieder zurück gesetzt wird.

github.com/nichtgedacht/Arduino-MS5611-Interrupt

Gruß
Dieter
von nichtgedacht

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Ladezeit der Seite: 1.086 Sekunden