-
        

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 14

Thema: Problem mit Drucksensor MPX 4115

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    09.05.2005
    Beiträge
    35

    Problem mit Drucksensor MPX 4115

    Anzeige

    SMARTPHONES & TABLETS-bis zu 77% RABATT-Kostenlose Lieferung-Aktuell | Cool | Unentbehrlich
    Hallo,
    ich bin gerade dabei, mir eine Wetterstation mit zwei Tempsensoren (DS1820),
    ner RTC (DS1307) und nem Drucksensor (MPX 4115 von Freescale) zu bauen. Nun funktioniert bis auf den Drucksensor alles soweit. Der Drucksensor gibt eine dem Druck proportionale Spannung aus, diese lese ich mit dem 10 bit ADC des mega8 aus. dann berechne ich den Druck mit Hilfe folgender Formel aus dem Datasheet:

    P=((Vout/Vin)+0.095)/0.009

    Ich nun bekomme ich immer einen viel zu niedrigen Luftdruck heraus:
    Momentan zeigt mir mein Sensor ca 970 mbar an, laut der nächstgelegenen Wetterstation (Stuttgart-Flughafen:http://www.wetteronline.de/Baden-Wue.../Stuttgart.htm)
    müsste der jedoch bei ca 1019 mbar liegen.
    Die Sensor- und die Eingangsspannung messe ich über einen 2,11:1 Spgteiler (82k:39k). Wenn ich nun mit meinem Multimeter die Spanungen nachmesse erhalte ich um ca 0.2V höhere Werte.
    Hat jemand ne Idee, wo der Fehler liegen könnte?

    Achja, hier noch der link zum Datasheet des Sensors:
    http://www.freescale.com/files/senso...t/MPX4115A.pdf

    Und hier noch mein Code, ich progge in BASCOM:



    Code:
    $regfile = "m8def.dat"
    $crystal = 8000000
    $baud = 9600
    
    Config Lcd = 40 * 4
    Config Lcdpin = Pin , Rs = Portb.6 , Db4 = Portb.7 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portb.1 , E2 = Portb.2
    Config Adc = Single , Prescaler = Auto , Reference = Internal
    Config 1wire = Portb.0
    
    
    
    
    Dim Help As Single
    Dim Help1 As Single
    Dim Volt As Word
    Dim ___lcdno As Bit
    Dim Ar(2) As Integer
    Dim T1 As Integer
    Dim N As Byte
    Dim I As Byte
    Dim Luft As Word
    Dim Luft2 As Single
    Dim Temp As Single
    Dim Bar1 As Single
    Dim Volt1 As Single
    Dim Luft1 As Single
    
    
    
    
     ___lcdno = 0
      Initlcd
      Cls
      Cursor Off
    
     ___lcdno = 1
      Initlcd
      Cls
      Cursor Off
    
    
    Do
    
      Start Adc                                                 'adc werte für batteriespannung und mpx4115 auslesen
       Luft = Getadc(0)
       Volt = Getadc(1)
      Stop Adc
    
    
      Volt1 = Volt * 2.56                                       'batteriespannung Berechnen , 2:1 spgteiler
      Volt1 = Volt1 / 1023
      Help1 = Volt1 * 2.11111
      Volt1 = Help1 + Volt1
    
    
      Bar1 = Luft * 2.56                                        'Sensorspannung berechnen
      Bar1 = Bar1 / 1023
      Help = Bar1 * 2.13157
      Bar1 = Bar1 + Help
    
    
      1wreset                                                   'temp aus ds1820 auslesen
      1wwrite &HCC
      1wwrite &H44
      Waitms 200
      1wreset
      1wwrite &HCC
      1wwrite &HBE
      For I = 1 To 2
       Ar(i) = 1wread()
      Next
      T1 = Ar(1) + Ar(2)
      T1 = T1 / 2
    
      Luft1 = Bar1 / Volt1                                      'druck aus sensor und eingangsspannung berechnen
      Luft1 = Luft1 + 0.095
      Luft1 = Luft1 / 0.009
      Luft1 = Luft1 * 10
                                        'empirisch ermittelte Abweichung vom Referenzwert
    
    
    
      If N = 0 Or N = 1 Or N = 2 Or N = 3 Or N = 4 Or N = 5 Then       'Mittelwertbildung
       Incr N
        Luft2 = Luft2 + Luft1
    
    
      Else
       N = 0
       Temp = Luft2 / 6
       Luft2 = 0
      End If
    
    
    
    
    
       ___lcdno = 0                                             'lcd ausgabe
    
    
    
           Upperline
            Lcd "Eingangsspannung: " ; Volt1
           Lowerline
            Lcd "Momentanwert P: " ; Luft1
    
       ___lcdno = 1
    
    
    
           Upperline
             Lcd "Spg sensor: " ; Bar1
           Lowerline
             Lcd "Mittelwert P: " ; Temp
    
    
                                                                   'ausgabe über uart, nur versuchsweise
    
      Print "Eingangsspannung :" ; Volt1
      Print "    "
      Print "Momentanwert Luftdruck :" ; Luft1
      Print "    "
      Print "Spg sensor :" ; Bar1
      Print "    "
      Print "Mittelwert Luftdruck" ; Temp
      Print "    "
      Print "---------------------------------------"
    
    
    
    
    
     Waitms 500
     Loop

    MfG
    Florian[/url]

  2. #2
    Super-Moderator Lebende Robotik Legende Avatar von Manf
    Registriert seit
    30.01.2004
    Ort
    München
    Alter
    64
    Beiträge
    12.372
    Dann stimmt ja der Offset mit dem im Datenblatt angegebenen Wert überein, da sind es typisch 0,2; max 0,27V.
    Dann ist es wohl der richtige Weg, sich über den Wetterdienst die Originalwerte zur Bestimmung der Korrekturwerte zu besorgen.
    Manfred

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    09.05.2005
    Beiträge
    35
    Hallo,
    ich glaube da liegt ein Missverständnis vor, der Offset besteht ja bei dem Sensor immer, auch wenn ich mit meinem Multimeter nachmesse, auch bei der Eingangsspannung ist der vom adc gemessene Wert niedriger als der meines Multimeters. Der Fehler muss doch eine Ursache haben, zumal der Sensor kalibiriert ist, ich möchte da nicht einfach an schlechten Messwerte rumdoktorn.
    Gruß
    Florian

  4. #4
    Super-Moderator Lebende Robotik Legende Avatar von Manf
    Registriert seit
    30.01.2004
    Ort
    München
    Alter
    64
    Beiträge
    12.372
    Das ist allerding richtig.
    Irgenwie könnte man den Thread dann auch
    "kein Problem mit Drucksensor MPX 4115 nennen".

    Also muss man sich den Mega8 noch mal daraufhin ansehen.
    Manfred

  5. #5
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.791

    Luftdruck stimmt nicht?

    Hallo Florian,

    ich weiss nicht genau, woran es bei Dir liegt,- würde nur 2 Dinge beachten:

    1. Der Sensor liefert der Absolutluftdruck in Messhöhe. Am Flughafen bekommst Du den Relativluftdruck (in Meereshöhe), der immer höher als Dein Absolutluftdruck ist (es sei denn, Du wohnst auch in Meereshöhe). Du must dann umrechnen.

    2. Ich kann nicht genau erkennen, wie Du den (krummen) Spannungsteiler (82k / 39k = 2,10 / 1) im Programm berücksichtigst. Wenn er direkt am Sensorausgang liegt (und der A/D-Wandlereingang am 39k-Widerstand gegen Masse), gilt:

    Spannung [V] = Digitalwert * Auflösung * 3,10

    Wenn der A/D-Wandler z.B. 4,096 V messen kann bei Digitalwerten von 0 bis 1023, beträgt die Auflösung 0,004 V (4,096 / 1024).
    Dein Spannungsteiler könnte damit Spannungen bis 12,69 V messen.
    4,096 V fallen dabei am 39k-Widerstand ab, der Rest (Anteil 2,1) am 82k-Widerstand.
    Rechne das 'mal für Deinen A/D-Wandler nach!

    Gruß Dirk

  6. #6
    Benutzer Stammmitglied
    Registriert seit
    09.05.2005
    Beiträge
    35
    Hallo,
    danke erstmal für die Tipps, ich hab nochmal alles nachgerechnet und komm immer wieder auf das zu niedrige Ergebnis: der ADC des mega8 liefert einen zu niedrigen wert. Doch auch mit den mit dem Multimeter gemessenen Werte bekomme ich einen zu niedrigen Druck heraus. Der mit dem ADC Wert berechnete Druck liegt bei ca 965 mbar, mit dem Multimeterwert bei ca 985 mbar. Er müsste laut Wetterstation am Flughafen jedoch bei ca 1022 liegen. Ich glaube nicht, dass diese große Diskrepanz nur am Höhenunterschied liegt, ich befinde mich hier auf ca 335 m.ü.M.
    Hat jemand vllt noch ne Idee, woran die Abweichung liegen könnte?
    Und hat vllt. gerade jemand die Formel parat um den Druck in Abhängigkeit der Höhe zu berechnen?

    MfG
    Florian

  7. #7
    Benutzer Stammmitglied
    Registriert seit
    26.03.2005
    Ort
    Burghausen
    Alter
    34
    Beiträge
    38
    Schau mal da nach vielleicht hilft Dir das weiter.

    http://www.keller-druck.ch/german/ho.../generalg.html

    Gruss ZwieBack

  8. #8
    Super-Moderator Lebende Robotik Legende Avatar von Manf
    Registriert seit
    30.01.2004
    Ort
    München
    Alter
    64
    Beiträge
    12.372
    Der Fehler muss doch eine Ursache haben, zumal der Sensor kalibiriert ist, ich möchte da nicht einfach an schlechten Messwerte rumdoktorn.
    Wer hat denn den Sensor kalibriert?, (nach Datenblatt ist er das nicht).

    Luftdruck:
    http://de.wikipedia.org/wiki/Luftdruck

  9. #9
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.791

    Luftdruckreduktion

    Hallo Florian,

    als Unterprogramm (BASIC) für die Luftdruckreduktion kannst Du nehmen:

    Code:
    REM Luftdruckreduktion
    TK=T0+273.15 : REM Umrechnung °C (T0) in K (TK)
    D0=DA*10**(ZA*273.15/(18286.3812*(TK+ZA*0.00325)))
    RETURN
    Hierbei ist:
    T0 -> Temperatur (°C) in Messhöhe
    TK -> Temperatur (K) in Messhöhe
    DA -> Absoluter Luftdruck (hPa) = Messwert des Drucksensors
    D0 -> Relativer Luftdruck in Meereshöhe (0 m)
    ZA -> Messhöhe (m)

    Die Formel geht von einer "Standardatmosphäre" und einer geografischen Breite von 45° aus.

    Gruß Dirk

  10. #10
    Benutzer Stammmitglied
    Registriert seit
    09.05.2005
    Beiträge
    35
    Hallo,
    danke für die Tipps, muss ich morgen mal ausprobieren.
    Im Datasheet steht schon in der Überschrift:
    "Temperature Compensated and Calibrated"

    MfG
    Florian

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •