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]







Zitieren
Lesezeichen