Temperatursensor DS1820 spinnt um 0°C herum

Gast #280351
Lesenswert?

Hi,

ich weiß nicht was los ist mit meinem DS1820. Alle Routinen mit 1-wire
funktionieren einwandfrei und die TEmperaturanzeige geht auch bis gut
90°C(mehr hab ich noch nicht getestet) ohne Probleme hoch. Aber sobald
die reale Temperatur um den Gefrierpunkt schwankt, spinnt die
ANzeige.Ich hab mir mal das MSB-Byte ausgebeben lassen. Laut Datenblatt
sollen ja nur die Zustände Ox00 für positive und 0xFF für negative
Temperaturen geben. Aber Pustekuchen. Ab +2°C bis 0°C fängt das
MSB-Byte an auch Zwischenzustände anzunehmen und dadurch kann sich das
LSB nicht entscheiden ob es jetzt positive oder negative Temperaturen
darstellen soll.
Kann mit jemand sagen, ob das normal ist oder ob mein Sensor defekt
ist? Oder hatte jemand schon ähnliche Erfahrungen gemacht?

Danke für eure Hilfe und danke den Aussentemperaturen, die mir den
Fehler erst jetzt zeigen...
Gast #280354
Lesenswert?

Hi rweber,

klar bin ich am Code interessiert, sofern er in C ist. Assembler kann
ich nicht.
Ich hab schon überlegt, ob es vielleicht an meinem Code liegt zur
Auswertung der negativen Temperaturen. Ich versuch mal den Code
reinzustellen...
Gast #280355
Lesenswert?

Und hier der Code für die Abfrage ob positive oder negative Temperatur:

if(read_temp_msb()==0xFF){//wenn MSB=0xFF(also neg. Temperatur)dann
diese Berechnng
    temp=((~read_temp_lsb()+1)*(-1))/2;
 }
else{        //Berechnung für positive Temperatur
    temp=read_temp_lsb()/2;
 }

Danke schon mal für eure Tipps!
#280357
Lesenswert?

Hallo Makke,

es wurden schon Feuchtigkeitsprobleme um die 0 Grad beobachtet, die zu
merkwürdigen Ergebnissen geführt haben. Details sind hier nachzulesen:
http://www.digitemp.com/docs/ds1820-report.pdf

Ich hatte einen ähnlichen Effekt zwischen +1 und -1 Grad, der
allerdings auf einen Rechenfehler zurückzuführen war.
Ich benutze den Code aus dem Atmel Applikationsbericht AVR318. Der Code
ist in C geschrieben und in meinem Webserver zu finden.
http://mikrocontroller.cco-ev.de/de/ISA_1wire.php

Gruß
Joachim
Gast #280358
Lesenswert?

Hi!
Haste einen DS18B20 oder einen DS18S20 beide unterscheiden sich in den
Temp.Bytes und dem Rem, sind also nicht kompatibel.
Beim B20 dind die 1/10 im Temp.-Word enthalten und beim S20 sind sie
aus dem Rem zulesen. Nicht das da deine SW was verwürfelt?

Viel Erfolg, Uwe
Gast #280359
Lesenswert?

Danke für die vielen Tipps und Anregungen.
Ich habe jetzt den Fehler gefunden. Endlich, nach 1 1/2 Wochen.Ich habe
die Read_Bit() Time von 15µSekunden auf etwa 10µSekunden
heruntergestellt. UNd siehe da: auch die negativen Temperaturen werden
angezeigt. Fragt mich jetzt nicht warum, aber es war so. Ich habe keine
Erklärung dafür, warum die positiven Temperaturen normal angezeigt
wurden, er aber mit den negativen Probleme hatte.
Also vielen DAnk nochmal für eure Hilfe, ihr glaubt gar nicht wie
erleichtert man ist, wenn es endlich funktioniert.

Schöne Grüße, Makke

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