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







Zitieren

Lesezeichen