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
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]
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
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
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
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
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
Schau mal da nach vielleicht hilft Dir das weiter.
http://www.keller-druck.ch/german/ho.../generalg.html
Gruss ZwieBack
Wer hat denn den Sensor kalibriert?, (nach Datenblatt ist er das nicht).Der Fehler muss doch eine Ursache haben, zumal der Sensor kalibiriert ist, ich möchte da nicht einfach an schlechten Messwerte rumdoktorn.
Luftdruck:
http://de.wikipedia.org/wiki/Luftdruck
Hallo Florian,
als Unterprogramm (BASIC) für die Luftdruckreduktion kannst Du nehmen:
Hierbei ist: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
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
Hallo,
danke für die Tipps, muss ich morgen mal ausprobieren.
Im Datasheet steht schon in der Überschrift:
"Temperature Compensated and Calibrated"
MfG
Florian
Lesezeichen