-         

Ergebnis 1 bis 4 von 4

Thema: Unterschied DS1820 / DS18B20

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    27.06.2005
    Beiträge
    23

    Unterschied DS1820 / DS18B20

    Anzeige

    Guten Abend zusammen,

    gibt es programmtechnisch Unterschiede zwischen dem Dalls DS1820 und dem DS18B20? Hintergrund meiner Frage:

    Seit Jahren habe ich einen Mega8 mit 4 DS1820 im Auto im Einsatz. Da ich jetzt mal das Progamm ein wenig ändern wollte, habe ich den Rechner ausgebaut und zum Testen einen DS18B20 angeschlossen. Der und ein zweiter, den ich zur Sicherheit mal angeschlossen habe, zeigen nur Müll an, meist negative Werte, die sich auch bei jeder Messung ändern.
    Die 4 funktionierenden Sensoren sind leider mehr oder weniger fest im Auto eingebaut. Weitere DS1820 habe ich leider nicht zur Verfügung. Sowohl die originalen Sensoren als auch die zum Testen angeschlossenen laufen nicht im parasitäten Modus und haben je einem 4,7K Widerstand von DQ nach +. Verringerung des Widerstands (Parallelschaltung) hat auch keine Verbesserung gebracht. Die benutzten Pins sind Pinc.1 bis Pinc.4.

    Code:
    Temperaturmessung:
    If Tempmess >= 96 And Verriegelung = 0 Then                 '1920 ms (96*20) seit dem Reset vergangen
       Gosub Messen                                             'Also Temperaturmessung
       Tempmess = 0
       Verriegelung = 1                                         'Und Zähler zurücksetzen
    End If
    If Tempmess >= 4 And Verriegelung = 1 Then                  '80ms (4*20) nach Reset auslesen der Temp. Sensoren
    Gosub Auslesen
       Tempmess = 0
       Verriegelung = 0
    End If
    Return
    
    Messen:
    For I = 1 To 4
      1wreset Pinc , I                                          'Reset DS1820
      1wwrite &HCC , 1 , Pinc , I                               'überspringe ROM
      1wwrite &H44 , 1 , Pinc , I                               'starte Temperaturkonvertierung
    Next I
    Return
    
    Auslesen:
    For I = 1 To 4
      1wreset Pinc , I                                          'Reset DS1821
      1wwrite &HCC , 1 , Pinc , I                               'Überspringe ROM
      1wwrite &HBE , 1 , Pinc , I                               'sende T-Register 60h und 61h an Atmel
      Ds1820 = 1wread(2 , Pinc , I)                             'lese die empfangenen Daten 2 Byte
      Ds1820a(i) = Ds1820                                       'Zum Anzeigen des ausgelesenen Wertes (Sensortest)
      1wreset Pinc , I                                          'Reset DS1821
      Halb = Ds1820 And 1                                       'prüfen auf letztes Bit (x.5 Grad)
      Shift Ds1820 , Right                                      'entferne letztes Bit (Rechtsschieben)
      Ds1820 = Ds1820 And 255                                   'Nur die unteren 8 Bit werden benötigt
      If I = 1 Then
       Tesp = Ds1820                                            'Ganzzahlige Temperatur der ESP (1 Byte)                                           '
      End If
    If Ds1820 > 127 Then                                        'wenn Temperatur negativ ist
          Vorzeichen = "-"
          Ds1820 = 256 - Ds1820                                 'und negative Temperatur berechnen
          If Halb = 1 Then Ds1820 = Ds1820 - 1                  'wenn Wert x.5 dann um 1 korrigieren
        Else                                                    'wenn Temperatur Positiv
          Vorzeichen = " "
    End If
    If Halb = 1 Then
       Nachkomma = "5"                                          'wenn x.5
      Else                                                      'wenn x.0
       Nachkomma = "0"
    End If
    Temperatur = "  " + Vorzeichen + Str(ds1820)                '"-_-xxx"
    Temperatur = Right(temperatur , 4)                          '"-xxx"
    Temperatur = Temperatur + "." + Nachkomma + Chr(223) + "C"  '"-xxx.y°C"
    Sensor(i) = Temperatur
    Next I
    Return
    Ausschließen kann ich das die DS18B20 mal verkehrt angeschlossen wurden. Die Schaltung wurde bereits mehrfach überprüft / nachgemessen.
    Hat jemand eine Idee, wie die beiden Sensoren unter einen Hut zu bekommen sind?

    Danke und Gruß

    Horst

  2. #2
    Benutzer Stammmitglied
    Registriert seit
    12.12.2004
    Ort
    Trier
    Beiträge
    38

    Re: Unterschied DS1820 / DS18B20

    Zitat Zitat von Pöler
    gibt es programmtechnisch Unterschiede zwischen dem Dalls DS1820 und dem DS18B20?
    Obwohl beide Sensoren eine 12bit-Auflösung haben, führt der DS1820 nur 9 Bit in seinen internen Temperatur-Registern, der DS18B20 alle 12 Bit.

    Diese Temperatur-Register liest Du in der Zeile

    Ds1820 = 1wread(2 , Pinc , I)

    ein, wobei die Variable DS1820 vermutlich als Integer oder Word dimensioniert ist. Bei einem angeschlossenen DS18B20 erhälst du nun wegen der 12bit einen 8-fach höheren Wert, was durch die Zeile

    If Ds1820 > 127 Then
    Vorzeichen = "-"
    ...

    zu einer negativen Anzeige führt. Der absolute Temperaturwert ist natürlich auch völlig falsch.

    Als Abhilfe ändere die Zeile
    Ds1820 = 1wread(2 , Pinc , I)
    in
    Ds1820 = 1wread(2 , Pinc , I) / 8
    was einem arithmetischem Schieben um 3 Bit nach rechs entspricht, oder kaufe dir beim nächsten Mal DS18S20 Sensoren, welche die gemessene Temperatur wie die DS1820 auch im 9bit-Format in ihren Registern ablegen.


    Offtopic:
    Diese Codevariante mit der Variablen "Halb" und dem Auswerten des Vorzeichens, etc., sieht man häufig in diversen Foren. Vermutlich ist der vor langer Zeit mal in Assembler erstellt und dann immer wieder übernommen worden. Man sollte sich da was zeitgemäßeres gönnen oder selbst programmieren.

    MFG
    screwdriver

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    27.06.2005
    Beiträge
    23
    Hallo Screwdriver,

    vielen Dank, hat mir sehr geholfen. Ich werde den Code wenn ich Zeit habe mal so anpassen, das man beide Sensoren einsetzen kann.

    Was Deine Kritik an dem übernommenen und angepassten Programmcode angeht, stehe ich aber eher auf dem Standpunkt, das man das Rad nicht ständig neu erfinden muss. Für den Anwendungsfall mit Temperaturen zwischen -10 und + 100 Grad klappt der Code ja (mit richtigem Sensor .


    Gruß

    Horst

  4. #4

    Unterschied DS18B20 und DS18B20+

    Hallo,

    wenn wir hier schon beim der Unterscheidung der DS18x20 sind, was hat der DS18B20+ noch anders?

    Hardy

Berechtigungen

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