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