Barometrische Höhenmessung mit SCP1000

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • dl7uae
    dl7uae

    #1

    Barometrische Höhenmessung mit SCP1000

    Ich sage es gleich: Dieser Post ist bzgl. evtl. interessierter Klientel garantiert sehr speziell. Ich sage auch absichtlich "Post" und nicht "Thread", denn ein Thread wird da bestimmt nicht draus werden.
    Da ich aber zwangsläufig alle mit belästige, streue ich ein paar Sachen mit ein, die ein Interessent "vom Fach" als Eulen nach Athen betrachten wird.

    Hallo Kollege, der Du wie ich mit allen möglichen Sensoren rummachst. Du wirst das kennen, den größten Teil an Zeit und Nerven lässt man eigentlich nicht mit der Algorithmik, sondern mit dem Skalieren, "Beruhigen" und der Kompensation der Sensoren., jeweils sehr spezifisch, natürlich. (So war mein "schlimmster Feind" bis dato der HMC5843 3-dim. Magnetfeldsensor, seine magn. Kompensation, bis der endlich in einem neigungskompensierten Kompass verlässlich spielte.)

    Hier geht's um einen Höhenmesser, basierend auf barometrischem Druck,

    genullt (Initialdruck == Höhe Null) auf Grasnarbenhöhe. Verwendet wird der MEMS Drucksensor SCP1000 von VTI (s.a.), hier mit dem SPI (4-Wire-Interface @500kHz), I2C@400kHz gibt's auch.

    Hier meine Hints:

    Der Sensor soll mit einer Betriebsspg. von 2,4..3,3V betrieben werden, Sparkfun's Breakout, z.B., sagt witzigerweise 3,3V. Sieht man sich aber "Pressure error over supply voltage range" an (s.Anhang), sowie "Temperature error over supply voltage range" (s.Anhang), geht einem ein Seifensieder auf. Das Ding hat eine eigene Temp.kompensation, eh nicht das Gelbe vom Ei (s.u.), die basiert natürlich auf dem eingebauten und auch extern auslesbaren Temp.sensor! Ergo sollte man die Betriebsspg. bei ~2,7V wählen, und nicht 3,3V.

    Ich habe eine Si-Diode hinter einen 3,3V-Stabi gehängt, mit einem 910Ohm-Metallschichtwiderstand zusätzlich belastet, kleiner Elko parallel. Heraus kommen 2,68V.

    Nun kommt die Crux:

    Mein Microcontroller ist ein ATmega 328p@16MHz. Dessen Betriebsspg. ist aufgrund des Gesamtspannungskonzepts deutlich über 2,7V, auch über 3,3V. Daraus werden 3,3V simpel stepdown gemacht für einige andere Sensoren, der SCP1000 hat einen eigenen 3,3V-Stabi mit Reduzierer (s.o.), und die Gyros ADXRS610 brauchen ja stabil 5,0V, also R/C-Spg. verdoppelt und stabilisiert.

    Andererseits macht es sich bei Entwicklg./Debugging natürlich auch gut, alternativ die "R/C"-Spg. aus dem FTDI beziehen zu können, also aus dem USB des PCs, das sind dann hier 4,84V.

    Die Crux ist, dass einem das SPI zw. MC und SCP1000 die Betriebsspg. des MC in den Drucksensor zieht, so waren's eben 3,9xV statt der angestrebten 2,7. Das ist ganz außerhalb der Range, sogar außerhalb der Specs, die Temp.kompensation des SCP1000 kann man so knicken.

    Es reicht nun aus, die Signale MOSI und CSB (Slave Select) via einen Pegelwandler zu entkoppeln.

    (Pegelwandler ist der hier.)

    Uff, das wäre geschafft.

    Die nächste Frage ist: High Speed Mode @~9Hz, 15 Bits Auflösung oder High Resolution Mode @~1,8Hz, 17 Bits Auflösung? Um sicher zu gehen seitens der Specs bzgl. Minimum der Output-Update-Rate, lese ich mit 1,587 oder 7,874Hz. Denkt man an schnelle Modelle wie in F5B, ist es eigentlich eine rhetorische Frage, - High Speed Mode wäre angesagt. Die Frage ist nur, was die unterschiedliche Auflösung (17 vs. 15 Bits) an Messwertstreuung ausmacht. Immerhin entspricht 1 Pa Druckunterschied auf Meeresspiegelhöhe in etwa 8 Zentimetern Säule.

    Vorausgesetzt, die Temp.kompensation stimmt und der Umgebungsdruck ist wirklich konstant, streut es mit 17 Bits Auflösung um etwa +- 17cm, maximale Ausreißer bei 43cm, mit 15 Bits Auflösung verdoppelt sich das in etwa.

    Ich habe mich letztendlich für die High-Speed-Variante entschieden, dass muss aber jeder für sich betrachten, in einem X-Copter wären wohl eher 17 Bits angesagt.

    Nun noch die Temperaturkompensation:

    Der Hersteller VTI sagt: Ist kompensiert. So so..., aber nicht hinreichend gut für unsere Zwecke. Für Millibar-Messungen mag das reichen (1 Millibar == 100 Pa (1hPa), entsprechend 8m Höhensäule.

    Die ganze Sache ist auch kritisch bzgl. des Messens der Umgebungstemperatur, die geht ja in die Höhenberechnung aus der Druckänderung ein:

    Höhendiff(m) = (Temp(K) * Gaskonstante-Luft / Gravitationskonstante) * log(Initialdruck/Momentandruck)

    Mein Drucksensor wird durch den MC darunter aufgeheizt, bei 23,9C Umgebungstemp. registriert der Temp.sensor im SCP1000 eine Erhöhung um 5C innerhalb 20 Minuten nach Kaltstart. Dabei zeigt sich ein trotzdem noch verbleibender Temp.koeffizient von +23 Pa/1C, was zur Kompensation mittels der Differenz Initial- zu Momentantemperatur (Temp.sensor im SCP) herauszurechnen ist.

    Für das Messen der Umgebungstemp. in der Höhenformel oben ist dieser Temp.sensor also ungeeignet. Ich nehme stattdessen den Sensor in einem der Gyros ADXRS610, zwar im selben Gerätegehäuse, aber am anderen Ende, weg vom "Wattfraß" Prozessor. In denselben 20 Min Warm-up werden hier nur +0,4 Grad Celsius Anstieg registriert. Trotzdem bleibt die Temperaturmessung etwas kritisch, gerade bei direkter Sonneneinstrahlung.

    So, lieber Kollege. Nun bleibt mir nur zu hoffen, dass Dir mein Gelaber etwas Zeit und Nerven ersparen kann, - und übrig, Dir viel Erfolg zu wünschen.
    Angehängte Dateien
    Zuletzt geändert von Gast; 06.08.2010, 19:43.
  • dl7uae
    dl7uae

    #2
    AW: Barometrische Höhenmessung mit SCP1000

    Oops, böser Fehler!

    Der verbleibende Temperaturkoeffizient ist MINUS 23 Pa pro Grad Celsius.

    Sorry.


    ------------------------

    Und bei der Gelegenheit gleich, ehe jemand rein platzt mit: Das kannste doch mit GPS viel besser haben.

    Denkste.

    Kommentar

    • dl7uae
      dl7uae

      #3
      AW: Barometrische Höhenmessung mit SCP1000

      Nach weiteren Langzeittests korrigiere ich: Der verbleibende Temperaturkoeffizient ist "nur" -15 Pa / Grad Celsius

      (So, jetzt möge der Thread in der allg. anderen Interessenlage untergehen. Ein Suchender wird ihn finden, per Google.)

      Kommentar

      • athome
        sudar.ch
        Onlineshop
        • 14.04.2009
        • 802
        • Lukacs
        • Aargau (Schweiz)

        #4
        AW: Barometrische Höhenmessung mit SCP1000

        Hallo Tom
        Schade wäre es dein Post untergehen zu lassen! Ist doch eingiges spannendes zumindest für mich dabei.
        Ich hatte mich für Höhenmessunge mal mit dem simplem MPX4100 rumgeschlagen. Schon das war für mich als unerfahrener spannend!
        Danke für dein Knowledge Sharing

        Gruss Lukacs
        Homepage:
        http://www.sudar.ch und http://www.turbinenheli.ch

        Kommentar

        • dl7uae
          dl7uae

          #5
          AW: Barometrische Höhenmessung mit SCP1000

          Na ja, Lukacs, solche Themen haben ja eher die Leute bei DIYdrones.com oder mikrokopter.de, doch auch da gibt's genug "Steckdosen-Amateure", wie man in meinem anderen Hobby so sagt.

          Dieses Kalibrieren und Kompensieren ist echt was für Einen, der Vater und Mutter erschlagen hat. Ich bin bzgl. des Restkoeffizienten des SCP1000 übrigens jetzt bei -17,5 Pa/Grad Celsius angelangt und zweifle inzw., dass das linear ist. Nicht, dass ich den Sensor beschädigt habe, der lief länger als ein halbes Jahr mit fast 4V, weil ich für den Pegelwandler-Mod einfach zu faul war.

          Jetzt ist mir die Kalibrierung des Z-Sensors des ADXL335 (I2C Beschleunigungssensor, 3-dim.) ganz plötzlich abgehauen, X und Y brauchen inzw. auch mal einen "Feilenstrich". Nur die ADXRS610 stehen wie ein Fels, auch Temp.kompensation ist da fast Schmuck am Nachthemd. Mein "Freund", der HMC5843 (3-dim. Magnetfeldsensor), will auch eine neue Kalibrierung (Hard Iron Distortion Compensation), nur will die Kalibrierungsroutine plötzlich nicht mehr, es fehlen wohl mal wieder ein paar Bytes SRAM.

          Ich hasse es einfach, wenn so was nie ein Ende nimmt...

          Wie heißt es doch so schön? Wer misst, misst Mist.

          Kommentar

          Lädt...
          X