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]