aber Daniel das hat nichts mit Kalibrieren zu tun wenn ich einen Offset mit einrechne.
so sieht es aus:
jede volle sekunde kommt wird der nächste sensor ausgelesen und 750ms zuvor "Read_temperatur_prepair"
das funzt auch sehr gut..nur die Sensoren haben eine zuhohe streuung. wie ich finde.
Code:
'###############################################################################
' 1 Wire Sensoren Initialisieren
'###############################################################################
Sub 1wire_init:
For Ds_no = 1 To Sensorenanzahl
Ds_ie = Ds_no * 8
Ds_i = Ds_ie - 7
If Ds_no = 1 Then
Dsid(ds_i) = 1wsearchfirst()
Else
If Err = 1 Then
Exit For
End If
Dsid(ds_i) = 1wsearchnext()
End If
'Waitms 10
Next
Ds_count = 1wirecount()
End Sub
'###############################################################################
' 1 Wire Temperatur auslesen
'###############################################################################
Sub Read_temperatur_prepair
' Alle angeschlossenen DS1820 zum Messen veranlassen
1wreset
1wwrite &HCC
1wwrite &H44
'### testen
'Ds_ie = Ds_no * 8
'Ds_i = Ds_ie - 7
'1wverify Dsid(ds_i)
'1wwrite &H44
End Sub
Sub Read_temperatur(byval Ds_no As Byte)
'Start Byte finden füd dsid array
Ds_ie = Ds_no * 8
Ds_i = Ds_ie - 7
'Call Read_temperatur_prepair
'Waitms 10
' Den gewünschten Sensor auswählen
1wreset
1wverify Dsid(ds_i)
' Kommando READ SCRATCHPAD
1wwrite &HBE
Sc(1) = 1wread(9)
If Sc(9) = Crc8(sc(1) , 8) Then
' Genauere Temperaturberechnung auf 0,1 °C
I = Sc(1) And 1
If I = 1 Then Decr Sc(1)
T = Makeint(sc(1) , Sc(2))
T = T * 50
T = T - 25
T1 = Sc(8) - Sc(7)
T1 = T1 * 100
T1 = T1 / Sc(8)
T = T + T1
Temperaturen(ds_no) = T / 10
Else
' Wenn lese Fehler -76 eintragen
Temperaturen(ds_no) = -76
End If
End Sub
Lesezeichen