DS18X20 Lösung gesucht.

Problemstellung:

Die DS 18S20 bzw DS18B20 Sensoren von Dallas/Maxim können mit OneWire und entsprechender DS18S20 Lib benutzt werden und in der Regel funktioiert das auch solange wohl nur 1-3 Stück bzw nahe dem Arduino und bei temp unter 70 Grad Celsius verwendet werden.

Sobald mehrere am Bus betrieben werden, egal ob im sogenannten parasitären oder im direkt versorgten Mode gibt es Probleme beim Auslesen.

Der bekannte Hinweis den Pull-Up Widerstand von 4,7 KOhm zu verringern hilft nur bedingt. (bin inzwischen bei 995 Ohm und 9 Sensoren)
Selbst die externe Versorgung eines Arduino kann nicht garantieren , dass die Sensoren einwandfrei auf Dauer funktionieren.

Ausgehend von der Schaltung die zusammen mit dem Programm Digitemp (Win/Linux) verwendet wird (keine solchen Probleme wie beim Arduino)

http://www.digitemp.com/

http://public.rz.fh-wolfenbuettel.de/~hamannm/general/digitempd.html

würde ich gerne eine entsprechende Schaltung auch mit dem Arduino verwenden.

Maxim selbst verweist auf Anfrage auf folgende Informationen.

http://pdfserv.maxim-ic.com/en/an/AN148.pdf

Nur wie setzt man diese Schaltungen entsprechend für den Arduino um? Und Sie sollte zudem mit der OneWire Lib funktionieren.

...gibt es Probleme beim Auslesen.

Wie wirken sich diese Probleme aus?

Bestimmte Sensoren werden innerhalb von 24 Stunden zeitweise und dann über kurze Zeiträume nicht erkannt und liefern somit keinen verwertbaren Wert. Weder die Sensoren, noch die Leitung ist in irgendweiner Weise defekt, da die sich beim Umschalten auf den beschriebenen Konverter und Einsatz von digitemp (Win) sofort und ohne einen Ausfall 24/7 die entsprechenden Temperaturen zurückmelden.

Zum Einsatz kommen OneWire.h bzw OneWire. und DallasTemperature.h oder OneWire.h und DS18S20.h

Wobei auch hier noch Unterschiede festzustellen sind welche Sensoren bei welchen Kombinationen ausfallen.

Die Probleme treten übrigens regelmäßig auf , wenn jemand mehrere Sensoren verwendet wie man im internationalen Teil nachlesen kann.

Nur gibt es eben bisher eben keine entsprechende Lösung.

Die Grundidee mit dem 4,7 KOhm Widerstand basiert auf dem Datenblatt zum 18S20 wobei auch hier wohl schon angemerkt wurde, dass dieser Wert verändert werden muss.

Solange die Schaltung auf dem Steckbrett in kurzem Abstand zum Arduino aufgebaut wird funktioniert der 4,7 K Widerstand auch ohne Probleme. Auch wenn der Sensor im parasitären Mode betrieben wird.

Aus dem Grund wurde auch die Schaltung des Konverters zu Digitemp entsprechend weiterentwickelt und der Kondensator eingefügt, da die wohl vorher auch genau diese Probleme hatten.

Ich vermute, dass der I2C-Bus am Arduino-Board nicht stabil läuft und die Probleme verursacht.
Gibt es dazu keine Treiber-Bausteine, welche die Stabilität auf dem Bus erhöhen könnten?

Nur mal zur Klärung und Sicherstellung des Verständnisses.

Der I2C Bus ist meines Wissens doch hier gar nicht in Benutzung.

OneWire wird über einen Digital-Eingang (hier:Pin 2) mit Data sowie über Ground (Ground) und über 5 V abgewickelt. Wobei dann noch Data und 5 V durch den besagten 4K7 Widerstand verbunden werden. Im parasitären Mode wird dann VDD mit Ground verbunden bzw. im Nicht-parasitären Mode wird VDD mit 5 Volt versorgt.

Der I2C Bus ist meines Wissens doch hier gar nicht in Benutzung.

Ja, da hast du recht. Habe OneWire mit Wire verwechselt.