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
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
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.
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
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
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
@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
@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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.