Forum: Mikrocontroller und Digitale Elektronik Erfahrungswerte Dig. Thermometer DS18B20?


von Jörg (Gast)


Lesenswert?

Hallo zusammen,
ich habe gerade einen DS18B20 mit einem PIC16C745 verheiratet. Im
Datenblatt vom Thermometer ist eine Temperature Conversion Time von max
750ms bei 12Bit angegeben. Bei mir dauert die Convertierung aber nur
etwa 100µs.
Haben die in dem Datenblatt etwa ms mit µs vertauscht? Oder gibt es
einen neueren Typ der wesentilch schneller ist? Was für eine Zeit habt
Ihr gemessen?

Würde mich über ein feedback sehr freuen :-)

Danke und Grüße

Jörg

von Matthias (Gast)


Lesenswert?

Hallo Jörg,

ich habe schon einen DS1820 (sollte in dieser Zeit gleich sein) zum
Testen gehabt. Im Testprogramm waren auch 750ms vorgeschrieben. Damit
funktionierte das Auslesen. Allerdings habe ich das mit einem C51
gemacht.

Grüße

Matthias

von Profi (Gast)


Lesenswert?

Da stimmt was nicht, die Wandlung dauert bei voller Auflösung 750
Millisekunden, pro ein bit kleinerer Auflösung jeweils die Hälfte.

Schau mal, es gibt bestimmt viel Beispielcode für dem PIC.
Mir fällt www.sprut.de ein, aber auch hier im Forum.

Du kannst zwar in 100µs die Daten auslesen, aber entweder es kommt der
Defaultwert (wenn noch keine Wandlung seit dem Einschalten stattfand),
oder der Wert der letzten Wandlung.

von Jörg (Gast)


Lesenswert?

Aha, vielleicht ist es der Letzte Wert den ich auslese denn die
Temperaturwerte die ich rausbekomme machen Sinn!
Laut Datenblatt soll man nach dem Convert T (44h) Befehl mit "Read
time slots" abfragen ob die Umwandlung fertig ist. Der DS gibt lauter
Nullen zurück solange die Wandlung dauert und bei Beendigung sendet er
eine "1". Genau das Macht mein Programm -frägt ab solange der DS eine
"0" zurückgibt und sendet dann den "Read Scratchpad" Befehl um die
Temperatur auszlesen. Und das Ganze geht merkwürdigerweise sehr viel
schneller als im Datenblatt angeben ist. Sehr Merkwürden....

Grüße

Jörg

von Paul Baumann (Gast)


Lesenswert?

Hallo Jörg!
Genau so habe ich es auch gemacht und abgefragt, wann die Wandlung
fertig ist. Das klappt in sehr kurzer Zeit und präzise Werte liefert es
auch. Mein BASCOM Prg. habe ich vor einiger Zeit in die Codesammlung
gestellt und sehr viel Schmäh geerntet. Macht aber nichts- es
funktioniert nämlich.

MfG Paul

von Jörg (Gast)


Lesenswert?

So jetzt wollte ich`s genau wissen und habe mal mit dem Support von
Dallas telefoniert.
Die Angabe im Datenblatt ist die maximale Zeit! Das heißt aber nicht,
dass es nicht auch schneller geht. Sie garantieren eben nur, dass
spätestens nach 750ms die Konvertierung fertig ist. Wörtlich:" Was
stört Sie daran, dass es schneller geht?". Na ja, eigentlich bin ich
sehr froh das es so schnell funktioniert.
Und das es funktioniert hat ja auch Paul beobachtet.

In diesem Sinne

Jörg

von Peter D. (peda)


Lesenswert?

@Jörg

"Na ja, eigentlich bin ich sehr froh das es so schnell
funktioniert."

Aber definitiv nicht in 100µs. D.h. da ist was faul an Deiner
Endeerkennung.

Und wenn der Sensor an Luft ist, sollte man auch nicht schneller als
jede 5s messen, da sonst eine merkbare Eigenerwärmung auftritt.


Peter

von Peter D. (peda)


Lesenswert?

@Paul

"sehr viel Schmäh geerntet"

Du hast eine wirklich sehr merkwürdige Auffassung von "Schmäh".

Wenn Dich gutgemeinte Tips stören, wie man die Anzeige gleichmäßiger
hinkriegt usw., dann solltest Du wirklich nichts veröffentlichen.

In meinem Verständnis sind Codebeispiele ja gerade dazu da, um was zu
lernen und nicht, um kritik- und gedankenlos abgekupfert zu werden.


Peter

von Jörg (Gast)


Lesenswert?

Hallo,
nicht das hier ein Missverständis entsteht - ich messe nicht alle 100µs
die Temperatur, sondern die Wandlung dauert so lange. Ich habe nochmal
nachgemessen und 100µs stimmt nicht ganz -sorry. Laut dem Oszi brauche
ich drei "read time slots" bis der DS die Konvertierung als beendet
zurückgibt. Da ein slot 60µs dauert macht das 180µs - immer noch viel
schneller als erwartet!
Daneben habe ich den DS18B20 gegen die Version DS18S20 ausgetauscht.
Die "S" Version liefert die selbe Wandlungszeit.

Ich habe eine neue Theorie woher die 750ms herkommen. Da der Sensor
auch nur über zwei Leitungen betrieben werden kann "parasitär power"
könnte es doch sein, dass nur in diesem Betriebszustand diese Lange
Wandlungszeit benötigt wird -oder?

Grüße

Jörg

von Peter D. (peda)


Lesenswert?

Die 750ms sind der Maximalwert.
D.h. wenn du zufällig einen super super sauschnellen DS18B20 hast,
könnte der durchaus schon in 500ms fertig sein.
Größere Toleranzen sind extrem unwarscheinlich.


Ändere mal schnell die Temperatur und schaue, in welchen Abständen
wirklich auch ein neuer Wert angezeigt wird.


Der Fehler liegt mit Sicherheit in Deinem Programm.


Peter

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.