-         

Ergebnis 1 bis 2 von 2

Thema: Messung mit DS1820 (Problem negative Werte)

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    03.10.2007
    Alter
    44
    Beiträge
    128

    Messung mit DS1820 (Problem negative Werte)

    Anzeige

    Hallo,

    ich messe Temperaturen mit dem DS1820 und habe "das Gefühl" dass die Ergebnisse realistisch sind.
    D.h. ich bin mir da nicht ganz sicher! Die Auflösung sollte mit meinem Programm bei 0,25°C liegen.
    Die Messwerte werden über einen CAN Bus übertragen womit sie in Bytes umgerechnet werden müssen.
    Das mache ich zum Schluss.

    Nun gehen wir in die kalte Jahreszeit und die Temperaturen gehen unter die 0°C.
    Bei mir wird dann aber ein Wert >120°C angezeigt.
    Weis jemand wieso?

    Code:
       1wreset                                                  ' reset the bus
       1wwrite &HCC                                             ' skip rom
       1wwrite &H44                                             ' Convert T
    
    
       Portc.3 = 1
       Waitms 800
       Portc.3 = 0
    
    
       1wreset
       1wwrite &H55
    
       For B = 1 To 8
       1wwrite Dsid1(b)
       Next I
    
       ' Temperaturbytes auswerten
    
       1wwrite &HBE
    
    
       Rom(1) = 1wread(1)
    
       If Rom(1) < 0 Then                                       'Negative Werte feststellen und Vorzeichenbit setzen
       Rom(1) = Rom(1) * -1
       Vorzeichen = 0
       Else
       Vorzeichen = 1
       End If
    
    
       Nachkommav = Rom(1) / 2
       Tempv = Rom(1) / 2
    
       Tempdifv = 16 - Rom(7)
       Tempdifv = Tempdifv / 16
       Tempdifv = 0.25 * Tempdifv
       Nachkomma = Nachkommav + Tempdifv
    
    
       Nachkomma = Nachkomma - Tempv
       Nachkomma = Nachkomma * 100
       Nachkomma = Nachkomma + 100                              'Hundert hinzurechnen um alle Stellen zu übertragen (03 wird nur als 3 übertragen)
    
       Nachkommax = Nachkomma
    
    
       'Ausgabe der Temperatur in 3 Bytes
       'Beispiel:
    
       ' 12,03°C
    
       ' Byte 1 - Vorzeichen -   0  - 000
       ' Byte 2 - Tempv      -  12  - 012
       ' Byte 3 - Nachkomma  - 103  - 103

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.112
    Hallo Düsentrieb,
    hiermit
    Rom(1) = 1wread(1)
    liest du genau 1 Byte ein. Das Vorzeichen steht aber im zweiten Byte.
    Außerdem läuft das hier
    Tempdifv = 16 - Rom(7)
    ins Leere, weil rom(7) nicht eingelesen wird und daher immer 0 ist.
    Ändere das mal so ab:
    Rom(1) = 1wread(9)
    Damit liest du alle Bytes ein, die der Sensor zur Verfügung stellt.
    Deine Umrechnung scheint mir etwas "seltsam" zu sein. Schau doch noch einmal in das Datenblatt.

Berechtigungen

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