Hi,
ich habe eine Verdrahtung, bestehend aus 9x DS18b20. Das Problem: Nach etwa 2 Tagen Dauerbetrieb beginnen die Sensoren falsche werte auszugeben. Die zeigen mir alle 85°C an. Nach einigen Stunden geht es dann wieder kurz und dann auch mal nichtmehr. Wie es gerade will.
Das ganze läuft mit 2 Drähten. Also die Stromversorgung über Datenleitung und Pullup Widerstand. Bei dem Widerstand hab ich auch schon 4K7 und 3K3 ausprobiert. Macht keinen Unterschied. Als Kabel verwende ich Cat5e S/FTP Verlegekabel. Die Kabellänge beträgt etwa 2,5 Meter. Alle Verbindungen sind verlötet und mit Schrumpfschlauch versehen.
Ich habe noch eine andere Verdrahtung. Dort beträgt die Kabellänge über 10 Meter mit 15 Sensoren. Das läuft nun seit zwei Tagen ohne Probleme.
Hier mein Programm:
Code:
Temprechnen:
Waitms 50
Disable Interrupts
1wreset
1wwrite &HCC ' skip rom (an alle)
1wwrite &H44
Enable Interrupts
Waitms 750
X = 0
Disable Interrupts
Do
X = X + 1
1wreset
If X = 1 Then
1wverify Dsid12(1) 'Sensor wählen
Elseif X = 2 Then
1wverify Dsid13(1) 'Sensor wählen
Elseif X = 3 Then
1wverify Dsid16(1) 'Sensor wählen
Elseif X = 4 Then
1wverify Dsid18(1) 'Sensor wählen
Elseif X = 5 Then
1wverify Dsid25(1) 'Sensor wählen
Elseif X = 6 Then
1wverify Dsid26(1) 'Sensor wählen
Elseif X = 7 Then
1wverify Dsid27(1) 'Sensor wählen
Elseif X = 8 Then
1wverify Dsid28(1) 'Sensor wählen
Elseif X = 9 Then
1wverify Dsid29(1) 'Sensor wählen
End If
1wwrite &HBE 'Daten hergeben
Tempa(1) = 1wread(9) 'read bytes into array
If Tempa(9) = Crc8(tempa(1) , 8) Then
Celsius = 0
Celsius = Makeint(tempa(1) , Tempa(2))
Temperatura = Celsius
Temperatur1(x) = Temperatura / 16
Temperatur(x) = Fusing(temperatur1(x) , "###.#")
End If
Waitms 20
Loop Until X = 9
Enable Interrupts
Return
Hat jemand eine Idee? Das ganze hängt übrigens an einem Atmega8.
Lesezeichen