Arduino Hardware Heimautomatisierung

Dallas DS18S20 1-wire Temperatursensoren über 100m Telefonkabel

Ich arbeite derzeit an einer Temperaturüberwachung und Lüftungssteuerung für meinen Serverraum auf Arduino-Basis und einigen Dallas DS18S20 1-wire Temperatursensoren. Da das Ding eine Netzwerkanbindung bekommt und später auch die eine andere Heimautomatisierungsfunktion übernehmen soll, wollte ich im Vorfeld abklären, ob es möglich ist, mit minderwertigem, umgeschirmten Telefonkabel größere Distanzen zu den Sensoren überbrücken zu können. Dazu habe ich in der warpzone einen Testaufbau vorgenommen und 3 Sensoren angeklemmt, von denen einer an dem 100m Kabel hing. Nun wollte ich mit dem digitalen PC-Scope (Oszilloskop) das darüber übertragene Signal anschauen, wie sehr die steigenden und fallenden Flanken des digitalen Signals durch das lange Kabel beeinflusst werden, bzw. ob am Ende überhaupt noch ein brauchbares Signal ankommt.

Für den Test habe ich mein angefangenes Sensorprojekt auf dem Breadboard leicht modifiziert. Der linke obere Widerstand ist mit einem Wert von 2,2kΩ relativ groß, sodass die resultierenden Ströme knapp an der oberen Grenze der Spezifikation für die DS18S20 1-wire Sensoren liegen. Dies habe ich gemacht, um bessere Chancen für eine fehlerfreie Kommunikation über die große Distanz zu haben. Ebenso verzichte ich auf die parasitäre Stromversorgung und spendiere den Sensoren eine dedizierte, wodurch 3 Adern nötig werden. Deswegen auch 4-adriges Telefonkabel, wobei ich Masse und Spannung nebeneinander im Kabel laufen lassen und den Datenbus auf dem äußeren Kabel auf der anderen Seite abgetrennt durch eine ungenutzte Ader. 

Sensor Project 1-wire 100m Test auf Breadboard
Sensor Project 1-wire 100m Test auf Breadboard

In dem Arduino Sketch verwende ich diese OneWire und die DallasTemperature library zur bequemen Ansteuerung. Der Sketch selbst ist noch in einem derart frühen Entwicklungsstadium und strotzt noch vor hässlichem Code, dass ich diesen zum jetzigen Zeitpunkt noch nicht der Öffentlichkeit zeigen möchte und publiziere ihn deswegen hier nicht, sondern hebe mir das für einen späteren Zeitpunkt auf, wenn ich das ganze Projekt dokumentiere

Nun habe ich mit dem Oszilloskop jeweils an einem Sensor vor und nach dem 100m Kabel den Datenbus durchgemessen.

1-wire Temperatursensor am kurzen Kabelende
1-wire Temperatursensor am kurzen Kabelende
1-wire Temperatursensor am langen Kabelende
1-wire Temperatursensor am langen Kabelende

Wie man sieht, gibt es auf diese Distanz zwar einige Oberschwingungen, und durch Reflexionen und Induktion verursachte Spannungsspitzen, die Gestaltung der Flanken ist aber bei Weitem nicht so schlimm wie befürchtet und ermöglicht ohne weiteres Zutun eine reibungslose Kommunikation mit dem DS18S20.

Autor

Seit Kindheitstagen ist der Computer sein Begleiter. Was mit Linux anfing, wurde 2005 ein/e Beruf/ung, die weit über den Arbeitsplatz hinausgeht. Durch stetige Weiterentwicklung fasste er auch im *BSD Segment Fuß und bietet mittlerweile professionelle Lösungen im Bereich Hosting, Networking und Infrastruktur an. Als Ausgleich beschäftigt er sich neben Computerspielen mit der Fotografie.

7 Kommentare Neuen Kommentar hinzufügen

  1. Michael Madl sagt:

    Guten Tag Herr Scholz
    wir haben ein Problem bei einem Arduino Projekt mit externer Spannungsversorgung um Lüfter über Temperatursensoren zu schalten. Würden sie uns da möglicherweise zeitnah weiterhelten? Sollte bis nächste Woche laufen. Wir wollten die Spannung eines 12 Volt Netzteiles mit einem Mosfet aufteilen und dann mit 5 Volt die Sensoren und mit 12 Volt die Lüfter ansteuern. Aber leider zeigt uns dann das Display am Arduino -127 Grad an bzw kommt der Fehler auch wenn man LED über den Arduino ansteuert.
    Können sie uns da weiterhelfen?
    gruß Michael Madl

  2. Georg H. Reinhard sagt:

    Hallo,
    auf der Suche nach einer Lösung fand ich Ihren Artikel und kann nur staunen,über 100m einen DS18S20 auslesen ist nicht zu glauben!

    Ich habe im Haus eine abgeschirmte
    Leitung, 16pol., 20m
    verlegt und da kann ich machen was ich will, da geht gar nix.

    Auf dieser Leitung
    ist lediglich ein LM35 angeschlossen der nur über ein A/D
    Wandler ICL 7107 und
    LED-Anzeige ausgelesen wird.

    Also bitte verraten Sie mir Ihr Geheimnis, Sie müsssen ein Glückspilz sein.

    MfG, Reinhard

    1. Ich habe einfaches 4-adriges ungeschirmtes Telefonkabel verwendet und aktiv mit Strom versorgt statt der parasitären Variante. Ging direkt auf Anhieb. Allerdings habe ich die Spannung direkt auf Werte nahe des oberen Limits der Spezifikation eingestellt.

    2. Sprinterfreak sagt:

      @Georg: Hast Du evtl. ein twistet Pair-Kabel verwendet? “LAN-Kabel” oder der Gleichen?
      Das bildet in dem Fall durch die vertwisteten “Wicklungen” ungewollte Induktivitäten.
      Zudem ist bei einem Ethernet-Kabel der Adernquerschnitt zu gering, was die Bildung von unerwünschten (Stör-)Induktivitäten frequenter Signale noch begünstigt.
      Telefonleitungen haben dickere Adern und sind im Regelfall nicht vertwistet.
      Auch hier kann sich eine meißt freie Ader negativ auf die Signalstabilität auswirken.
      Also besser 3 ungetwistete solide Adern, in rauhen Umgebungen meinetwegen mit Gesamtschirm. Freie Adern vermeiden.
      Man kann dann noch experimentieren mit Diode und Terminator-Widerstand am Ende des Bus, um Spitzen und die damit verbundenen Reflektionen und Induktionen zu verringern.
      Hatte damals im Haus mit relativ an dicken Adern (Steuerleitung) und sogar gemischter (Baum-)Topologie 10 Sensoren im Haus problemlos an einem selbst gelöteten RS232-Busmaster laufen. Hatte leider kein Scope, aber es hat einwandfrei funktioniert und selbst Gewitter überlebt. War fremdgespeist über ein zentrales USB-Ladegrät und am Rechner per RS232 angeschlossen.

  3. Jens sagt:

    Welche 100m-Verlängerung hast du verwendet? Inwieweit war diese geschirmt? Bei mir kommen nämlich mit ungeschirmten Verlängern schon auf sehr kurzen Strecken keine Signale mehr durch und ich weiß nicht, welches Kabel ich mir am besten besorge…
    Danke schonmal
    Jens

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.