DS18B20 - ich krieg nen Fön!

OP #2280428
Lesenswert?

Hallo mal wieder,

meine Tempsensoren spielen mal wieder bescheuert. Problem sieht so aus: 
Ich habe zwei verschiedene Berechnungen, die beide die Temperatur vom 
DS18B20 ausrechnen. Der Witz ist, das seit HEUTE MORGEN die EINE 
BERECHNUNG nicht mehr auf EINEM!!! bestimmten Sensor funktioniert... Als 
Ausgabe bekomme ich +85 Grad und nichts geht. Der Witz an der Sache: 
Nehme ich einen anderen Sensor, so laufen beide Berechnungen tadelos und 
die Temp-Ausgabe ist ok.
 Das is doch völliger Schwachsinn und unlogisch, wie kann das sein? Hier 
mal ein Auszug aus beiden Berechnungen:


Erster Code, der funktioniert auf allen Sensoren

Do
 1wreset
 1wwrite &HCC
 1wwrite &H44

Wait 1

 1wreset
 1wwrite &HCC
 1wwrite &HBE
 For I = 1 To 9
 Sp1(i) = 1wread()
 Next



    Tmp1 = Sp1(1) And 1
       If Tmp1 = 1 Then Decr Sp1(1)
       T1 = Makeint(sp1(1) , Sp1(2))
       Temp1 = T1 / 16


Zweiter Code, den EIN Sensor nicht mehr will und 85 Grad anzeigt:

Do
  1wreset
  1wwrite Read_rom
  Family_code = 1wread()
  For I = 1 To 6
    Serial_number(i) = 1wread()
  Next
  Crc = 1wread()
  1wwrite Convertt
  Do
    Temp = 1wread()
  Loop Until Temp = &HFF

  1wreset
  1wwrite Skiprom
  1wwrite Read_ram

  For I = 1 To 9
    Scratch(i) = 1wread()
  Next


 Temp = Scratch(2)
  Shift Temp , Left , 8
  Temp = Temp + Scratch(1)
  Stemp = Temp
  Stemp = Stemp / 16
#2280453
Lesenswert?

Carsten Sch. schrieb:
> Hi,
>
> EIN Sensor funktioniert plötzlich mit dieser Berechung nicht mehr?
> Hast du eienen Gegentest mit einer anderen Berechnung gemacht? (Mit
> einem anderen Sensor ist ja klar)
>
> Denn diese Beschreibung schreit geradezu nach einem DEFEKT des
> Sensors...
>
> Gruß
> Carsten

Den Effekt kenne ich, da ist irgendwas mit dem Timing unsauber da kommt 
dieser 85Grad Fehler. Tipp von MAX gibt es I2C auf OneWire Umsetzter.
Seit dem ich das Einsetzte gibt es keine Probleme mehr.
Gast #2280871
Lesenswert?

Er braucht gar nicht deket zu sein bzw. ganz defekt zu sein. 85 Grad 
heißt ja, daß die Register auf jeden Fall noch auslebar sind und er 
antwortet.

Durch irgendwelche Einflüsse hat sich das Timing vielleicht ganz wenig 
verändert und paßt nicht mehr. Delays lieber etwas länger als im 
Datenblatt. Deshalb kann es auch passieren, daß ein Sensor mal 
funktioniert und mal nicht. Besonders auch noch dann, wenn man keine 
konstante Quelle für das Timing hat und µC nebenbei noch andere Sachen 
macht (oder lhalt manchmal nicht und deshalb schneller fertig ist mit 
irgendwas). Also Softwareproblem möglich.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren