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.
Ausschließen kann ich das die DS18B20 mal verkehrt angeschlossen wurden. Die Schaltung wurde bereits mehrfach überprüft / nachgemessen.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
Hat jemand eine Idee, wie die beiden Sensoren unter einen Hut zu bekommen sind?
Danke und Gruß
Horst







Zitieren

Lesezeichen