Kampf mit Temperatursensoren, 3 adrig, DS1820

  • Hallo,


    ich habe erfolgreich 3 Temperatursensoren über Telefonleitung (ca. 20 Meter) setzen können und diese arbeiten recht zuverlässig. Ich schreibe jede Stunde die Werte in Datenbank und habe nur plausible Werte.


    Nun möchte ich weitere Sensoren im Keller dran hängen (Heizungsvor- und Rücklauf, Wasser, Aussentemperatur usw.). Diesen Weg kann ich nur über Netzwerkkabel gehen, da dieser Unterputz gelegt ist. Ein nachträgliches einziehen von Kabel ist nicht möglich.


    Leider fangen an der Stelle die Probleme an. Sobald Netzwerkkabel angeschlossen wird, spielen auch die anderen Sensoren verrückt, auch wenn am Neztwerkkabel kein Sensor angeschlossen ist. Von den 8 Adern eines Netzwerkkabels nutze ich 3 Adern, die definitiv fun


    Das ganze betreibe ich mit 5V lt. diesem Schema:
    https://www.raspiprojekt.de/an…b20.html?showall=&start=1


    Hat jemand eine Idee, was ich noch probieren könnte?


    Gruß

  • Hallo Slawo,


    vermutlich hast Du eine recht lange Leitung.


    :s


    Bitte so verstehen: Dein LAN-Kabel ist recht lang.


    Wenn Du nun nicht je eine der 8 LAN-Adern für die Übertragung nimmst, sondern jeweils zwei Strippen, verdoppelt sich der Querschnitt, der Widerstand wird geringer / halbiert).



    Beste Grüße


    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    • Icon-Tutorials (IDE: Geany) - GPIO-Library - µController-Programmierung in Icon! - ser. Devices - kein Support per PM / Konversation

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

  • Und alle nicht genutzten Adern an Masse legen. Lange offene Drähte wirken wie Antennen und fangen alle Störimpulse ein, derer sie habhaft werden können. Durch "Übersprechen" werden dann diese dann kapazitiv auf deine Datenleitung übertragen.

    Gruß aus der Stadt der CeBIT
    Jochen

  • Ich betreibe 12 DS1820 Sensoren mit bis zu 35 m Leitungslänge (getestet auch mit 50 Meter) ohne Fehler mit 3.3 Volt Betriebsspannung.
    Der Widerstand 4,7 kOhm habe ich aber auf 2,2 kOhm verkleinert.


  • Und alle nicht genutzten Adern an Masse legen. Lange offene Drähte wirken wie Antennen und fangen alle Störimpulse ein, derer sie habhaft werden können. Durch "Übersprechen" werden dann diese dann kapazitiv auf deine Datenleitung übertragen.


    Hört sich gut an, aber eine blöde Frage:
    Die 5 übrigen Adern alle zusammenschließen und an einem Ende an Ground anschließen? Das andere Ende dann auch zusammenbinden?
    [hr]


    Ich betreibe 12 DS1820 Sensoren mit bis zu 35 m Leitungslänge (getestet auch mit 50 Meter) ohne Fehler mit 3.3 Volt Betriebsspannung.
    Der Widerstand 4,7 kOhm habe ich aber auf 2,2 kOhm verkleinert.


    Bedeutet es ungefähr, dass je mehr Sensoren man hat, desto kleiner sollte man den Widerstand setzen?
    Ich habe gelesen, dass erst ab einer Leitungslänge von 100 m man unbedingt 5 V benötigt. Die 5V schaden aber bei kurzen Strecken ja nicht.

    Edited once, last by AndyKL ().

  • Folgendes würde ich mal versuchen:
    a) prüfen ob die neuen Sensoren für sich alleine (ohne die alten Sensoren) laufen
    b) die Dataleitung über beide Leitungen eines Leiterpaares führen
    c) Verwendest du das Anschlussbild b) aus deinem Link? Sonst das mal versuchen
    d) Jedes Signal (Vdd,Data,gnd) über ein einzelnes Leitungspaar führen (wie bereits unter Punkt 4) beschrieben. Freie Paare wie schon beschrieben auf GNd legen.
    e) nahe an den Sensoren 100nF Keramikkondensatoren zwischen 5V/GND bzw. 3.3V/GND anbringen um Spikes auf der Versorgungsspannung zu reduzieren.
    f) Mehrer Pullup-Widerstände (z.B. 2x4.7KOhm) verteilt auf die einzelnen Leitungsenden nahe der Sensoren anbringen. Achtung dass der Gesamtwiderstand nicht zu klein wird.


    Noch ein paar Anmerkungen.
    Die DS16b20 Sensorend arbeiten mit reinen Gleichstomsignalen. Diese Art der Signalübetragung ist eigentlich nicht geeignet über weitere Strecken (5-10m) Signale zu übetragen. Standard sind da eher differentielle Signalübertragungen wie bei RS485 oder Ethernet, bzw. +- Pegel wie bei RS232. auch fehlen dem GPIO Eingang geeignete Schmitttrigger o.ä. um die Signal wieder sauber aufzuarbeiten (ganz zu schweigen von der fehlenden Schutzbeschaltungen falls energiereiche Störungsignale anliegen).

    Gruß

    Golmic:)

  • Warum 5 verbleibende?
    Nimm doch den Vorschlag an, zwei Adern parallel zu schalten, dann verbleiben nur noch zwei. Diese dann RasPi-seitig verbinden und an Masse legen, Gegenseite egal.
    Die 3,3 V bzw. 5 Volt dienen der Spannungsversorgung des Sensors und haben nichts mit dem Pull-Widerstand zu tun. Der Widerstand liegt immer an 3,3 Volt! Eine Verringerung erhöht den Stromfluss, wenn die Datenleitung auf Low ist, andererseits zieht er dann denn die Datenleitung deutlicher nach High.

    Gruß aus der Stadt der CeBIT
    Jochen

  • Danke für Euer Feedback - ich werde versuchen die Maßnahmen bald (möglichst heute Abend) umzsetzen und sage bescheid, ob es dann besser klappt.

  • Ich habe bis auf den letzten Punkt F und Teilweise E alle Maßnahmen durchgeführt und Situation ist die gleiche. Keller alleine ODER EG+OG (ein Kabel) gehen. Keller UND EG+OG gehen nicht.


    Hier die einzelnen Ergebnisse:


    a) prüfen ob die neuen Sensoren für sich alleine (ohne die alten Sensoren) laufen


    Die Sensoren habe ich geprüft und diese laufen


    Quote

    b) die Dataleitung über beide Leitungen eines Leiterpaares führen


    Ist gemacht


    Quote

    c) Verwendest du das Anschlussbild b) aus deinem Link? Sonst das mal versuchen


    Ich habe die "Beschaltung für längere Kabellängen", Bild 2 verwendet:
    https://www.raspiprojekt.de/an…b20.html?showall=&start=1


    Quote

    d) Jedes Signal (Vdd,Data,gnd) über ein einzelnes Leitungspaar führen (wie bereits unter Punkt 4) beschrieben. Freie Paare wie schon beschrieben auf GNd legen.


    Ist gemacht


    Quote

    e) nahe an den Sensoren 100nF Keramikkondensatoren zwischen 5V/GND bzw. 3.3V/GND anbringen um Spikes auf der Versorgungsspannung zu reduzieren.


    Habe ich bisher an dem einen Sensor im Keller angebracht, da andere heute bestellt


    Quote

    f) Mehrer Pullup-Widerstände (z.B. 2x4.7KOhm) verteilt auf die einzelnen Leitungsenden nahe der Sensoren anbringen. Achtung dass der Gesamtwiderstand nicht zu klein wird.


    Das ist wahrscheinlich mein letzter Ausweg. Ich muss die Widerstände kaufen.


    Quote

    Noch ein paar Anmerkungen.
    Die DS16b20 Sensorend arbeiten mit reinen Gleichstomsignalen. Diese Art der Signalübetragung ist eigentlich nicht geeignet über weitere Strecken (5-10m) Signale zu übetragen. Standard sind da eher differentielle Signalübertragungen wie bei RS485 oder Ethernet, bzw. +- Pegel wie bei RS232.


    Würde das ganze hiermit besser gehen:
    http://www.kompf.de/weather/pionewire.html

  • Hallo!


    Ich geh mal davon aus, dass wenn Du Keller und EG/OG verbindest sich die Störungen auf den Leitungen verstärken (Rückkopplung, Brummschleife oder sowas). Da wir es wahrscheinlich schwierig eine lauffähige Lösung in zu bekommen.
    Um das zu entzerren wäre es ein möglicher Lösungsansatz die beiden Messleitungen über 2 separate Eingänge zu messen. In wie weit dies die wiringPi Lib unterstützt weis ich nicht.
    Deshalb wäre der Ansatz von Kompf vgl. eine Möglichkeit, z.B. Kelller über die Kompf Anbindung und EG/OG über den GPIO.


    Quote


    Würde das ganze hiermit besser gehen:
    http://www.kompf.de/weather/pionewire.html


    In dem Ansatz sind 3 Lösungen drin die man mal ausprobieren könnte:
    1. Der Betrieb der Sensoren mit einer parasitären Stromversorgung. Ob die besser unter diesen Bedingungen arbeitet weis ich nicht
    2. Es wird ein 1,5KOhm Pullup verwendet
    3. Der Betrieb des Sensors an einer seriellen Schnittstelle. Diese arbeitet dann mit 5V statt der 3.3V am GPIO. Wobei die Dioden ggf. Spikes auf den Leitungen rausfiltern könnten


    Versuchs mal, ob es aber wirklich und stabil läuft ist schwer zusagen. Bei allen Lösungsansätzen ist aber immer (ob direkt (über den GPIO) oder indirekt über die Spannungsversorgung) Dein Raspi auch diesen Störungen ausgesetzt. Ob und wielange der das verträgt ist dann eine andere Sache.

    Gruß

    Golmic:)

  • Ohne jetzt auf die anderen Vorschläge eingehen zu wollen denke ich, kleinere Widerstände (Gesamt-R pro Strang min ca. 1k) sollten die Situation verbessern.


    Ich würde testweise zusätzlich noch (wenn möglich) direkt an den Sensoren die Versorgungsspannung (GRND und +) mit einem 22-47nF Keramikkondensator puffern: U.U. wird die Versorgungsspannung "verseucht"... müsste man messen... (Oszi!).


    Hast du bei der Auswahl der Adern im Ethernetkabel darauf geachtet, dass die paarweise verdrillt sind? Also immer die verdrillten gemeinsam verwenden! Damit fällt allerdings ein Teil der Störkompensation weg, was aber bei den gringen Frequenzen kaum eine Rolle spielt... (oder vielleicht doch ???)


    Zen

  • Problem gelöst:
    Durch den Einsatz eines zweiten Widerstandes von 4,7 kOhm im Keller (also am 2ten Kabel) kann ich jetzt die Temperaturen überall messen. Der Gesamtwiderstand ist somit auf 2,35 kOhm gefallen und jetzt geht die Temperaturmessung sehr stabil. Egal wann ich diese aufrufe, habe ich nur plausible Werte drin stehen.


    Vielen Dank für die Beiträge und den Input.


    :danke_ATDE:


  • Die DS16b20 Sensorend arbeiten mit reinen Gleichstomsignalen. Diese Art der Signalübetragung ist eigentlich nicht geeignet über weitere Strecken (5-10m) Signale zu übetragen.


    Jetzt muss ich mal widersprechen. Der DS18B20 ist ein 1wire Sensor, der 1wire-Bus ist für Längen über 100 m geeignet und ausgelegt. "Schuld" an den vielen Fehlversuchen ist einzig und allein das fehlende Wissen über die Funktionsweise von 1wire. Ich beschäftige mich schon ewig mit dem 1wire-Bus in Zusammenhang mit dem RasPi. Ein großes Missverständnis ist die Art und Weise der Stromversorgung. Oft wird bei Anleitungen (bei meinen auch, wird nun aber geändert) auf die 5V vom Raspberry zurückgegriffen. Das geht zum Ausprobieren, als Lösung für lange Busse ist das aber ungeeignet. Die Stromversorgung von 5V muss immer direkt am Sensor erfolgen. Es könnte also sein, dass Ihr wie ich z.B. auch, in jedem Raum im Haus einen oder mehrere Sensoren habt. Es muss mindestens pro Raum ein Netzteil mit 5V angeschlossen sein. Der Versuch, die 5V über eine zusätzliche Ader vom RasPi in die Räume zu bringen ist ein Glücksspiel, weil 1. die Leitungsdämpfung zu groß wird und 2. eine Kapazität zwischen 5V und Datenleitng aufgebaut wird. 1. sorgt dafür, das die Spannung an der Leitung abfällt und nicht mehr ausreicht, um den DS18B20 zu versorgen. Da die Datenübertragung durch Ziehen von high auf low basiert, sorgt 2. dafür, dass die Flanken auf der Datenleitung abgeflacht werden und somit keine korrekte Erkennung der Daten erfolgt.
    Die Höhe des Pullups hängt wirklich von der länge des Busses und vor allem der Anzahl der verwendeten Sensoren ab, dieses Problem tritt allerdings nur bei der Verwendung von 3,3V Pegeln auf, weil die beinahe am unteren Limit der Funktionsfähigkeit liegen. Aus diesem Grund ist auch keine parasitäre Stromversorgung mit dem RasPi möglich.

  • Die Aussage


    .... Der DS18B20 ist ein 1wire Sensor, der 1wire-Bus ist für Längen über 100 m geeignet und ausgelegt. ...


    kann man so absolut nicht als richtig nehmen. Die Maxim Apllication Note gibt dazu einige Hinweise und macht aber keine Aussagen wo die Grenzen liegen. Weiter sind dort einige Vorschläge wie ein 1-Bus anzusteuern ist, bzw. wie die Stabilität zu erhöhen ist.
    Da wohl die wenigsten ein Oszilloskop oder Logik-Analyser haben um auf dem Bus nach zu schauen wie stark die Signale wirklich durch die Leitungen und Störungen verzerrt werden wird es eh schwierig die Ursache zu finden warum es nicht geht.
    Wo hast du deine Info mit den 100m und den Spannungsversorgungen her?

    Gruß

    Golmic:)

    Edited once, last by golmic ().


  • Oft wird bei Anleitungen (bei meinen auch, wird nun aber geändert) auf die 5V vom Raspberry zurückgegriffen. Das geht zum Ausprobieren, als Lösung für lange Busse ist das aber ungeeignet. Die Stromversorgung von 5V muss immer direkt am Sensor erfolgen. Es könnte also sein, dass Ihr wie ich z.B. auch, in jedem Raum im Haus einen oder mehrere Sensoren habt. Es muss mindestens pro Raum ein Netzteil mit 5V angeschlossen sein.


    Das ist sehr interessant. Vielleicht ist das auch die Lösung meines Problems.


    Also die 5V-Leitung zum RasPi kappen? Und statt dessen die vorhandene 5V-Leitung mit den 5V des Netzteil und die Minus-Leitung des Netzteils an die GND-Leitung?
    Reichen dafür 800mA-Netzteile? Müssen das immer perfekt die gleichen Netzteile sein?
    Oder?
    Ich möchte dich jedenfalls ermutigen, das in deine Anleitung aufzunehmen ;)

    Viele Grüße
    DocAdams

    1x RaspberryPi 2, 1x RaspberryPi 3, 1x OpenELEC, 1x RaspberryPi 4 mit ioBroker ,

  • Das würde mich jetzt auch Interressieren.
    Habe Quasi selbiges Problem, Leitungslänge ca. 110m


    6 Sensoren werden über 3,3V vom Raspi Versorgt mit 2k4Ohm. Ohne Probleme.


    Habe heute einen weiteren Sensor mit 2,3m Kabellänge Angeschlossen und Zack - zeigen alle 0.0 Grad an... Bevor ich jetzt den Widerstand weiter Verringere, wäre die Frage, wieviel mA das 5V Netzteil Benötigt und ob Masse an diesen kommt oder am Raspi?

    Domoticz IOT