Pull-Up Widerstand für DS18B20

Gaanz einfache Erklärung ist
Benutze einen Pullup-Widerstand dann funktioniert der onewire-bus.

Alles was über diese zu einfach Erklärung hinausgeht erfordert ein gewisses Maß an Verständnis über Elektronik. Keine Ahnung wie viel Vorwissen du schon hast.

Die Datenübertragung wird realisiert, dadurch das auf eine bestimmte Art und Weise die Datenleitung zwischen LOW (= nahezu 0,0 V und HIGH (nahezu 5,0 V) hin- und hergeschaltet wird.
Bild aus diesem Video
onewire-bus


Zum LOW-Ziehen wird im inneren des DS18B20 ein MOS-FET-Transistor auf leitend geschaltet. Dadurch fließt ein Strom durch den Pullupwiderstand und die Spannung wird über dem Pullup-Widerstand "abgebaut" . Man sagt dazu Spannungsabfall über dem Widerstand.

Die Impulse sind ziemlich kurz. Die Impulslänge beträgt ca 10 Microsekunden.

Deshalb muss der Spannungsanstieg und Spannungsabfall extrem schnell sein.
Sonst hat man keine sauberen Rechteckimpulse mehr sondern abgerundete Ecken
und dann gibt es Fehler in der Datenübertragung, weil die Zeitlängen wann wie lange ein Impuls HIGH bzw. LOW sein muss zu sehr abweichen.

Bei sehr großer Buslänge von mehr als 2-3 Metern macht sich dann die Kapazität der Bus-Leitung negativ bemerkbar. Die Kapazität nimmt zu und fängt an die Rechtecksignale zu verrunden.
image

Man kann dann den Signalverlauf verbessern indem man den Pullup-Widerstand verkleinert.
Ich habe im Keller an der Heizungsanlage einen onewirebus mit 20 Sensoren und Gesamtlänge 15m. Da habe ich den Pullupwiderstand auf 1,8 kOhm. Realisiert habe ich das durch einen Festwiderstand mit 1,2 kOhm und einem Trimmer der in Reihe geschaltet ist. Dadurch ist der Pullup-Widerstand einstellbar und dann habe ich mir den Signalverlauf auf dem Oszillokop angeschaut und so eingestellt, dass die Flanken wieder möglichst rechteckig sind.

Wenn man einen zu kleinen Pullupwiderstand nimmt dann wird der HIGH-Pegel zu sehr heruntergezogen.

Optimal für Onewire-Bus ist ein sogennanter aktiver Pullup.
Das ist dann eine zusätzliche Elektronik.

Du siehst mal wieder: Je mehr man über die Details einer Technologie weiß desto bessere Ergebnisse kann man erzielen.

Jetzt müsstest du mal sagen wie viele DS18B20 du maximal an einen Bus hängen willst und was für eine maximale Leitungslänge da zusammenkommt.

Viel wichtiger beim onewirbus ist jedoch Linientopologie.
Das bedeutet die Abzweigungen von der Busleitung zum Sensor so kurz wie möglich möglichst unter 20 cm.

Eine sternförmige Bustopologie das heißt du hast meterlange Leitungen die sich dann am Microcontroller in der "Sternmitte" treffen macht große Probleme.

Da ist es besser eine Linientopologie von 20 m zu haben als einen 1,5m Stern.

Noch besser ist du gibst einen Gesamtüberblick über dein Projekt um eine für deinen Anwendungsfall optimale Lösung zu finden.

Wenn dir jetzt vorschwebt du baust ein ultra-universal-Tempertaurmodul das gleichzeitig das im 50m entfernte Gartenhaus die Temperatur
alle Ecken des Swimmingpools und noch 20 weitere Meßstellen die alle zig Meter auseinanderliegen usw. mit einem einzigen onewire-bus misst das wird wohl nix.

Oder eben höchstens wenn du alle Spezialitäten der onewire-Spezifikation beachtest mit aktivem Pullup arbeitest usw.