openXsensor mit 16 bit AD Wandler und analogem Airspeedsensor (neue beta-Version)

Status
Nicht offen für weitere Antworten.
#1
Mstrens hat den oXs weiterentwickelt und zwei neue Features eingebaut:

- Jeti Telemetrie Integration
- ADS1115 Integration

der ADS1115 ist ein 4-Kanal 16 bit A/D Wandler, der eine wesentlich höhere Auflösung bringt, als die 1024 Stufen des Arduino 10 bit A/D Wandlers. Damit ist nicht nur eine wesentlich genauere Spannungsmessung möglich, sondern auch die Verwendung der deutlich preiswerteren analogen Airspeedsensoren. Diese sind voll integriert, können also auch energiekompensiertes Vario und Segler-Leistungsmessung gewährleisten.

Die exakte Spannungsmessung ermöglicht z.B. zusammen mit einem Stromsensor (den man natürlich auch über den ADS1115 anschließen kann, aber nicht muss) eine inflight Ermittlung des Akku-Innenwiderstandes und damit eine sehr aussagefähige Qualitätsbeurteilung des Akkus.

ADS1115

Airspeed Sensor Kit

github.com/openXsensor
 
Zuletzt bearbeitet:

Norbert

Erfahrener Benutzer
#2
1) die Verwendung der deutlich preiswerteren analogen Airspeedsensoren. Diese sind voll integriert, können also auch energiekompensiertes Vario und Segler-Leistungsmessung gewährleisten.

2) Die exakte Spannungsmessung ermöglicht z.B. zusammen mit einem Stromsensor (den man natürlich auch über den ADS1115 anschließen kann, aber nicht muss) eine inflight Ermittlung des Akku-Innenwiderstandes und damit eine sehr aussagefähige Qualitätsbeurteilung des Akkus.
Vielen Dankfürdie Info und an Mstrens für die Weiterentwicklung. Mir hilft seine Arbeit deutlich weiter und kann damit Telemetrtieaufgaben erledigen, die ohne ihn nicht oder nur mit immensen Kostenaufwand möglich wären.

Zu 1) Kann man damit wirklich den teuren digitalen 4525DO-DS5AI001DP für die Leistungsmessung ersetzen? Das Problem ist der langsamen Bereich eines Seglers ( < 10m/sec ), da hier die Staudruckdifferenz sehr gering ist und man da schon ins Rauschen des 4525DO-DS5AI001DP kommt.

Für den MPXV7002DP bezüglich des Rauschens spricht, dass er eine kleinere Range von +/- 0,3 psi gegen +/- 1 PSI hat, somit empfindlicher ist. Aber das muss man wirklich ausprobieren, denn das Datenblatt der beiden Chips gibt das nicht her. Die absoluten Genauigkeiten der CHips kann man für unsere Anwendung getrost vergessen. Viel interesannter ist die Drift und das Temperaturverhalten.

2) Man kann lediglich den Gesamtwiderstand mit einer Spannungs- und Strommessung ermitteln, ausser man misst jede Zelle einzeln. Der Gesamtwiderstand ist aber wenig aussagekräftig, viel wichtiger ist die Einzelzellenmessung, die man aber auch mit einem FrSky MLVVS für gut 10 Euro erledigen kann. In zusammenhang mit dem Strom kann man dann den Ri jeder Zelle ermitteln. Allerdings offline. Über die Zeit sieht man dann auch die Kapazität der Einzelzellen. Lässt sich schön in Compagnion darstellen.

Norbert
 
#3
zu 1: Die Teile sind unterwegs und ich bin auch gespannt, was dabei rauskommt. Mstrens schreibt:
"Please note that I wrote the code but did not yet tested it so there are probably some bugs (I do not have such a sensor). Any help for testing would be good."

zu 2: Ich hab beruflich mit Notstromanlagen in der Sicherheitstechnik zu tun. An manche Akkusätze kommt man ganz schlecht ran, um Einzelmessungen zu machen. Dafür habe ich einen Test entwickelt, bei dem ich mit zwei unterschiedlichen Strömen im Wechsel belaste, z.B. 80A und 100A. Dabei messe ich präzise die Spannung und (grob) den Strom. Der Innenwiderstand errechnet sich dann aus U2-U1/I2-I1. Eine einzelne abweichende Zelle kann man tatsächlich an einem Sprung im Gesamt Ri erkennen, wenn man einen zeitlichen Verlauf des Ri hat (über Monate/Jahre gesehen). Bei unseren Modellen müssten wir dazu zwei Strom- und Spannugsmessungen machen, z.B. bei 100% Strom und bei 80% Strom. Das könnte man weitestgehend automatisieren und dann den Ri loggen (deswegen u.A. mein Interesse an LUA). Ist aber ein bisschen Nerd, ich geb´s ja zu.
 
D

Deleted member 51580

Gast
#4
Auch eine nette alternative.

Werde auch mal bestellen und vergleichen, bis jetzt sind das aber alles nur Schreibtisch Tests, das noch fehlende Pitot Rohr sollte morgen oder übermorgen kommen.
Preislich auf jeden Fall eine Alternative ob es von der Auflösung was bringt wird die Praxis zeigen.

Beim 4525DO-DS5AI001DP habe ich manchmal eine Geschwindigkeitsanzeige um die 12-17Kmh, denke aber das es an der langen Verkabelung auf dem Steckbrett oder am Kondensator liegt, das muss ich dann noch mal im fertig zustand testen.
 
#5
Hi devil

zuerst das Kleingedruckte zum 4525 :

3. Total pressure error band includes all accuracy errors, thermal errors over the compensated temperature range and span and offset
calibration tolerances. For ideal sensor output with respect to input pressure and temperature, reference Transfer Function charts below.
TEB values are valid only at the calibrated supply voltage.

Der MS4525 reagiert auf Änderungen der Spannung. Das ist mal ein Punkt, der in die Messung hineinspielt. Falls man davon ausgehen kann, dass die Spannung mehr oder weniger konstant ist, kann leicht ein offset berechnet werden. "Nulle" das Teil (bzw die software natürlich)bei Inbetriebnahme auf 8192. Damit ist schon einiges erledigt.

Etwas unangehmer ist die Reaktion des 4525 auf Temperaturschwankungen. Messreihen mit verschiedenen 4525 haben gezeigt, dass eine Temperaturschwankung von 60 C (-15 bis 45) bis zu 80 Pa drift (Messfehler) verursachen kann. Typisch eher 50-60, also voll in der Spezifikation.

Gnädigerweise läuft das nach meinen Erkenntnissen nach einem Muster, das statistisch ausgewertet werden und entsprechend eine Korrekturroutine programmiert werden kann. Zurzeit habe ich einen "error" von max +/-5 Pa, eher +-/-2-3 über den Temperaturbereich ( bei null p-diff).
Leider muss jeder Sensor eigens ausgemessen werden. Die Steigungen der Geraden sind unterschiedlich (der offset ist egal, da ich den beim Start sowieso berechne). Wie sich die Messung bzw. Korrektur über die Zeit bewährt - das werde ich sehen.Drucksensoren können auch diesbezüglich ein Eigenleben haben.

Ich bin gespannt auf die Ergebnisse mit dem preiswerten Sensor. Das TEB ist wenn ich mich recht erinnere 2.5x so gross wie beim 4525. Spielt aber eigentlich keine Rolle. Messen macht glücklich. Man muss nur fest daran glauben.

mfg hw
 

Anhänge

Zuletzt bearbeitet:

Carbonator

Allerhopp ;)
#6
Der Tag der Wahrheit naht, die Brocken sind da. Gestern kamen noch diese schnuckeligen pro minis an, die mit 33mm sogar noch 2mm kürzer als gewohnt sind. Supergünstig und schnelle Lieferung, 5 nano für 20,-- vom selben Händler sind auch nicht übel.

Die Düse selbst ist deutlich größer, aber sauber verarbeitet. Der Schlauch wirkt dramatisch dick gegenüber der Jeti duplex Variante - 4,1 zu 2,4 mm.

Pitot_1.png

Der ADS1115 trägt nicht groß auf ;), der MPXV7002 ist da schon ein anderer Brocken. Die Anschlusspins habe ich hier schon ausgelötet (und das mittlere Lötpad willenlos mit herausgerissen :mad:).

Hardware.png

Mstrens will einen Spannungsteiler von ~ 2x10 kOhm direkt am MPVX7002 haben, da dieser drucklos VCC/2 ausgibt und er mit einem Differentialeingang am ADS1115 arbeitet. Gemessen wird also die Spannung zwischen Spannungsteiler und Analogausgang. So gehen Schwankungen der Versorgungsspannung weniger stark ins Messergebnis ein.

Der obere Anschluss am MPXV7002 ist der Druckanschluss, der bei den Pins ist für den Umgebungsdruck.

Drei kleine Tricks: für A4 und A5 habe ich die superdünnen Litzen lange abisoliert und damit die Verbindung zwischen ADS1115 und Arduino hergestellt, die Litzen führen dann weiter zum GY63-MS5611. Die Litzen lassen sich zum Teil durch nicht benutzte Lötaugen führen. Kabel vor dem Löten auf Platinenhöhe kürzen, um überstehende Enden (Kurzschlussgefahr) zu vermeiden.

Top.png

Seite.png

Seite2.png
Dieses rote Teil hier ist eine normales Servokabel ↑↑
Boden.png
 
Zuletzt bearbeitet:
#7
Hallo Carbo

schön, dass es vorwärts geht. Dieser Sensor interessiert mich, da ich mit dem 4525 nicht ganz glücklich werde. Ich habe einen Test gemacht, bei dem auf P1/P2 der statische Druck einwirkt. Wie Du dem Datenlog entnehmen kannst, reagiert der Sensor auf Temperaturschwankungen (4525rawpress(Spalte F),temperature(Spalte G)). p_corr ist der korrigierte Diff-Druck, der idealerweise 8192 betragen sollte.

Auf Druck-/Höhenänderungen scheint der 4525 nicht zu reagieren (5611pressure ist Luftdruck, p-corr ist nur temperaturkompensiert) .

Könntest Du bitte eine vergleichbare Messreihe hier einstellen ? Samples wurden ca. alle 200ms aufgenommen.

mfg hw
 

Anhänge

Zuletzt bearbeitet:

Carbonator

Allerhopp ;)
#8
Da bin ich der falsche Ansprechpartner, um diese Dinge kümmert sich Mstrens. Ich bereite gerade die ersten Tests vor (Urlaub :)). Dabei werden wir in ein konstantes Volumen, an dem der Druckanschluss des MPVX7002 hängt, ein geringes Volumen Luft dazugeben (mit einer 2ml Insulinspritze), um dann den errechneten (Stau-)Druckanstieg mit dem übermittelten Airspeed zu vergleichen.

Bei früheren Tests war die Empfindlichkeit so hoch, dass schon die Wärmeabstrahlung der Hand in der Nähe der Druckkammer (Gurkenglas ;)) zu einer Änderung geführt hat.

Leider haben wir heute durch den Wind relativ große Luftdruckschwankungen im Haus. Das oXs Vario läuft deswegen immer zur Kontrolle mit und wenn es weiter keine Ruhe gibt, werden wir wohl verschieben müssen.

Hier noch ein Größenvergleich, auf den Bildern oben sieht das Teil ja gigantisch aus - in der Mitte das Vario:

Size.jpg
 

Norbert

Erfahrener Benutzer
#9
Bist du weiter gekommen?

Interessant wäre doch auch erst mal, wie stark der Kombi rauscht. Wenn beide Inputs offen sind ( oder beide geschlossen oder alles in deinem Gurkenglas eingeschlossen ( Funk geht ja durch ) sollte nur das Rauschen über bleiben, ohne atmmosphärische Störungen ( Wind )

Norbert
 
#10
Auf Druck-/Höhenänderungen scheint der 4525 nicht zu reagieren (5611pressure ist Luftdruck, p-corr ist nur temperaturkompensiert) .
Ich hab mir das gerade nochmal angeschaut, dein Aufbau ist leider nicht beschrieben. Der 4525 ist ein Differenzdrucksensor, er darf gar nicht auf Höhenänderung reagieren. Er reagiert nur auf den Differenzdruck zwischen den beiden Anschlüssen und das ziemlich exakt, nach meinen Erfahrungen.

@Norbert: Es gibt noch ein paar Unklarheiten bezüglich der Konfiguration des ADS1115, Mstrens hat auch den Code gerade nochmal geändert (is im GitHub). Dauert noch ein bisschen, ich bin auch schon ganz hibbelig ;)
 

Norbert

Erfahrener Benutzer
#11
Hallo,

auch der MPXV7002DP ist ein DiffDruckMesser. Ich habe noch einen hier liegen. Werde mal einfach beide Eingänge miteinander verbinden und mir das Rauschen mit den Scope ansehen. Sagt natürlich nichts über die Empfindlichkeit aus ( auf welche Druckdifferenz (AUflösung ) reagiert er ) . Da er analog ist, kann man nur hoffen. Linearität ist für uns eher nebensächlich - viel wichtiger sind Reaktionen auf Temperatur/ Spannungsänderung.
Vielleicht finde ich heute nachmittag Zeit zum messen.

Norbert
 

Norbert

Erfahrener Benutzer
#13
Hallo Carbonator,

vielen Dank für deinen Beitrag. Kann ich mir das Messen sparen.

Im 0 DiffDruck Schrieb ist das Rauschen ungefähr +/- 2kts, also ~ +/- 1m/s, das ist völlig ok, das müsste man mal in Staudruck umrechenen, aber bei den Geschwindigkeiten, vergiss es

im Schrieb mit Fahrt wird logischerweise das Geschwingigkeitsrauschen kleiner, etwa +/-0,5 kts, also ~ 0,25m/s, - ein sehr gutes Ergebnis, ab 8-9 kts, also ~ 15km/h, langsamer fliegen wir eh nicht sogar gut, klar Fahrt/Staudruck geht quadratisch ein.

Der Sprung um Null, siehe oben Rauschen bei 0, klar hier sind die Drücke/Fahrt sehr gering aber irrelevant.

Sieht sehr vielversprechend aus.

Norbert
 
#14
Das hier ist auch interessant, hier sieht man die Ausgangsspannung des MPXV7002DP, die barometrische Höhe und den vom oXs errechneten Airspeed. Die "Hysterese" im Nullpunkt kommt gar nicht vom Sensor, sondern vom Programm :confused:

Air_Alt.png
Anhang anzeigen SPort-2017-03-07_2.zip
 

Norbert

Erfahrener Benutzer
#15
DIe Linearität, Auflösung und rauschen sieht wirklich gut aus.
Was ich nicht verstehe sind die AUsreisser bei Airspeed - wenn er den Unsinn bis 0 kmh Speed machen würde- o k, aber bei negativen Geschwindigkeiten??

Aber halt - keine Ahnung wie das berechnet wird. WIrd hier die Erhöhung der EMpfindlichkeit weiter getrieben, da neg Speed nicht vorgesehen ist?

Ein weiterer Punkt ist mir aufgefallen bei den 0 Speed durchgängen in relation zur Spannung, da ist ein ordentlicher Offset drin, je nachdem ob man von pos oder von negativ kommt. ( die .csv Datei )

Norbert
 
#16
Ich stehe da im Moment auf dem Schlauch und muss mir erst mal selbst über einiges klar werden.

Wenn du 3air, das ist die analoge Spannung am 7002 Ausgang, gemessen vom ADS1115, und Alt anzeigen lässt, sind diese fast deckungsgleich. Sind ja beides Drucksensoren. Der 7002 soll zwar ein Differenzdrucksensor sein, zeigt aber exakt dasselbe an, wie der Absolutdrucksensor MS5611.

Der daraus errechnete Airspeed passt dann wieder, dieser Offset, den du erwähnst, ergibt sich aus der Staudruckformel, in die die Geschwindigkeit quadratisch eingeht. Mstrens hat mir diesen Graph gerechnet, in der Hoffnung, dass ich es dann kapiere:
sqroot.png
Wir sehen als Airspeed die rote Kurve, im negativen Bereich 2x gespiegelt, und genauso sieht es tatsächlich auch im Log aus:
sqr_log.png

Aber ich hatte erwartet, dass der Differenzdrucksensor ohne vorhandenen Differenzdruck Null ausgibt, aber er gibt offensichtlich den Absolutdruck +- den Differenzdrucks aus. Daran kaue ich noch rum. Vielleicht liest ja jemand mit, der den Sensor kennt und mal erklären kann, was und wie der Sensor genau misst.

Die gute Nachricht ist, dass Mstrens das elektronisch kompensierte Vario fertig hat (ist im GitHub) und mir eine Testmethode eingefallen ist, wie man das auf der Werkbank testen kann.

Labor.png

Edit: die theoretische Kurve für Airspeed positiv wie negativ sieht demnach so aus:

pre_aspd.png
 
Zuletzt bearbeitet:

Norbert

Erfahrener Benutzer
#17
Hallo,
Naja, das ist schon klar und davon rede ich doch die ganze Zeit.
Der Geschwindigkeit ist quadratisch zum Staudruck, dh bei
Fahrt = 1 Staudruck(Ausgangsspannung) 1
Fahrt = 2 Staudruck = Spannung 4
Fahrt = 3 Staudruck/Spg =9 usw

Das heisst anders herum, wenn ich den Staudruck habe=Spannung muss ich die Wurzel daraus ziehen.

Daher wird die Messung in Richtung 0 ( kleiner 10 km/h ) recht ungenau, da der STaudruck=Spannung sehr klein wird.

Oder anders ausgedrückt die Spannungsänderung/staudruckänderung von 10>20 km/h ist viel kleiner als die von 50>60 km/h.

Das zeigen die beidne blau/roten Kurven blau Spannung=Staudruck rot=Speed

Zum besseren Verständnis mit 0-Linie



Norbert

Kurve.jpg
 
#18
Naja, das ist schon klar und davon rede ich doch die ganze Zeit.
Wie sagt man: Gut, dass wir darüber gesprochen haben.

Ich bin jetzt ganz oldfashioned mit dem Multimeter an den Sensor und habe den Grund für meinen blackout gefunden. oXs überträgt die Spannung am ADS1115 nicht 1:1 sondern den 10-fachen Wert. Wenn mir der Sender 1,16 Volt angezeigt hat, waren das tatsächlich nur 0,116 Volt. Diese 0,116 Volt sind die Ungenauigkeit meines Spannungsteilers.

Der Sensor gibt also doch VCC/2 ohne Druck aus, in Verbindung mit dem (idealerweise) VCC/2 Spannungsteiler 0 Volt. Erst mal bei den Basics anfangen - wer sagt das immer? :mad:

Mal sehen, ob das Absicht ist, um die 16 bit Auflösung des ADS1115 auszunutzen. Die Telemetrie ist ja auf zwei Nachkommastellen beschränkt.
 
#19
Ich schau mir jeweils sowas an http://www.nxp.com/assets/documents/data/en/data-sheets/MPXV7002.pdf
Der 4525 ist betreffend "offset" analog. Die Hälfte des Messbereich ist für die Geschwindigkeitsmessung leider nicht brauchbar.

Könntest Du bei Gelegenheit einen Log einstellen, der die Spannung bei Null-Differenzdruck in Abhängigkeit der Temperatur im Bereich von -20 bis 40 Celsius dokumentiert ? Das interessiert mich schon. Das Gegenstück 4525 habe ich diesbezüglich dokumentiert. Die Messungen die ich habe sind reproduzierbar und das Problem nicht trivial. zB Modell liegt in der Sonne, wird inklusive Sensor aufgewärmt und in der Luft wieder abgekühlt. Wie stark dieser Effekt die speed-Messung bei Geschwindigkeiten um die 40kmh beeinflusst ist aus den Logs ableitbar.Kann jeder damit Leben wie er will - beim 4525 schien es mir angebracht, entsprechende Korrekturen zu implementieren.
 
Zuletzt bearbeitet:
#20
So langsam sind die Schreibtischtests beendet und die Flugerprobung kann beginnen. Das energiekompensierte Vario ließ sich erst mit einem RC Glied auf dem Analogausgang des Airspeedsensors zu einem akzeptablem Varioton überreden. Mittlerweile bin ich bei 100nF 100kΩ angekommen. Die Reaktionszeit des Airspeed ist immer noch "sofort", aber die Schwankungen sind deutlich reduziert (ich weiß;)).

Filter.jpg

Das energiekompensierte Vario (dte: delta total energy) zeigt die Änderung der Gesamtenergie des Modells, bestehend aus kinetischer und potentieller Energie, umgerechnet in eine Steig-/Sinkgeschwindigkeit an. Damit werden die Einflüsse des Piloten (Knüppelthermik) auf den Varioton ausgeblendet. Auch erkennt man, wenn die Thermik das Modell nur beschleunigt, aber nicht anhebt. Oft wird das Höhenleitwerk auf Grund dessen geringerer Masseträgheit schneller angehoben als die Tragfläche, was dann zu dieser Beschleunigung führt. Die gewonnene Energie kann dann durch "Ziehen" in Höhe umgewandelt werden.

Mit diesen Einstellungen kann man dte aktivieren, wenn ein freier Empfängerkanal mit PIN 3 des Arduino verbunden ist:

Code:
// --------- 3 - PPM settings ---------
#define PIN_PPM           3       // default is 2 but my own device use 3
#define PPM_MIN_100       988     // default 1500 - 512 ; // pulse width (usec) when TX sends a channel = -100
#define PPM_PLUS_100      2012    // default 1500 + 512 ; // pulse width (usec) when TX sends a channel = +100

// ***** 4.3 - Sensitivity adjusted from the TX *****
#define SENSITIVITY_MIN_AT_PPM 10    // sensitivity will be changed by OXS only when PPM signal is between the specified range enlarged by -5 / +5
#define SENSITIVITY_MAX_AT_PPM 40
#define SENSITIVITY_PPM_MIN  20      // common value for vario is 20
#define SENSITIVITY_PPM_MAX 200      // common value for vario is 100

// ***** 4.5 - Vertical speeds calculations *****
#define VARIO_PRIMARY       FIRST_BARO          // select between FIRST_BARO, SECOND_BARO , AVERAGE_FIRST_SECOND, AIRSPEED_COMPENSATED , BARO_AND_IMU
#define VARIO_SECONDARY     AIRSPEED_COMPENSATED          // select between FIRST_BARO, SECOND_BARO , AVERAGE_FIRST_SECOND, AIRSPEED_COMPENSATED , BARO_AND_IMU
#define SWITCH_VARIO_MIN_AT_PPM 10
#define SWITCH_VARIO_MAX_AT_PPM 90

// --------- 5 - Airspeed settings ---------
//#define AIRSPEED    MS4525
//#define AIRSPEED_AT_SEA_LEVEL_AND_15C // if this line is commented, airspeed is calculated using baro pressure and temperature (so being "true" airspeed instead of normalised airspeed)      
//#define AIRSPEED_IN_KMH  // uncomment this line if airspeed has to be in km/h instead of knot/h ( except some old versions, openTx expects knot/h) 

#define AIRSPEED_RESET_AT_PPM   100

#define COMPENSATION_MIN_AT_PPM 60
#define COMPENSATION_MAX_AT_PPM 90
#define COMPENSATION_PPM_MIN  80
#define COMPENSATION_PPM_MAX 140
Bedeutet:
PPM zwischen +10 und +40 --> normales Vario, Empfindlichkeit regelbar von 20-200
PPM zwischen -60 und -90 --> dte Vario, Kompensation regelbar von 80 bis 140%
PPM 100 --> Airspeed reset (falls es beim Initialisieren nicht windstill war z.B.)

Man könnte dte zwar auch dauerhaft nutzen, aber man erkennt dann einen "Delphinflug" beim Kreisen nicht mehr. Den besten Erfolg bringt Thermik suchen mit dte, Kreisen mit Höhenvario.

Jetzt hängt es nur noch am Wetter, wie immer, wenn ein Erstflug ansteht :)

Anhang anzeigen oXs_config.zip
 
Status
Nicht offen für weitere Antworten.
FPV1

Banggood

Oben Unten