Ausfall von DS18B20 Temperatursensoren

  • Hallo Jungs,

    es ist mal wieder soweit, ich habe ein Problem das ich selbst nicht gelöst bekomme und hoffe ihr könnt mir da helfen.

    Ich hab an ein RPI3 zwei ds18b20 Temperatursensoren angeschlossen, diese werden über ein Cronjob und ein Shellscript alle 15 Minuten ausgelesen und die Daten eine SQLite3 db geschieben.

    Das ganze wird dann auf einer Website angezeigt.


    Mein Problem ist das sich die Sensoren immer nach einer Zeit verabschieden und das RPI diese nichtmehr erkennt.

    Damit meine ich das mir unter /sys/bus/w1/devices/ die Sensoren nichtmehr angezeigt werden.

    Code
    root@raspi3bpazi:/sys/bus/w1/devices# ls
    28-3c01b5569a46  28-3c01b556a54e  w1_bus_master1

    Ich muss das Ganze dann für ein paar Minuten Stromlos machen und nach dem Neustart werden die Sensoren wieder erkannt und das Ding rennt wieder für ein paar Wochen.


    Das Kabel hat eine Gesamtlänge von max. 10-12 Meter und der erste Sensor hängt nach ca 8 Meter drin, der zeite dann am Ende.


    Angeschlossen habe ich so wie auf dem Schaltplan, da es aber mit einem 4,7 K Widerstand nicht lange funktioniert hat bekam ich hier mal den Tipp einen 2K zu versuchen, das hat schon was gebracht da die Sensoren jetzt länger verfügbar sind aber nach einer Zeit sind sie halt doch wieder weg.


    Hat jemand ne Idee was ich machen kann damit ich keine Ausfälle mehr habe?



    Danke für eure Ratschläge und Tipps!

  • Könnte an der langen Verkabelung liegen, es wird empfohlen die Sensoren in Reihe zu verdrahten.


    Was liegt bei Dir für eine Leitung, wenn 4-adrig, schau mal hier.


    So habe ich einen Pseudo-Stern als "Ring" mit > 25m in Summe verdrahtet.

  • Die von Dir gewählte Anschlussvariante (quasi Dauerbetrieb) wird zwar in den meisten "Anleitungen" genannt, hat jedoch den Nachteil, dass kein automatischer Bus Reset erfolgt, wenn ein Sensor nicht mehr "antwortet", sondern der Sensor nur aus dem OWFS (One Wire File System) ausgehängt wird.


    Es gibt noch zwei andere Anschlussarten (parasitär und Pin gesteuert), die beide quasi mit einem Bus Reset die Sensorabfrage beginnen.


    Das Datenblatt des Sensors solltest Du aber schon kennen.



    Servus !

    RTFM = Read The Factory Manual, oder so

  • Danke euch schonmal für den Input.

    Ich hab ein 3-Polige Steuerleitung die bei LKW Aufbauten für Temperatursensoren verwendet wird.


    Ich hab jetzt nochmal gegooglet zu den Anschlussvarianten und was gefunden:

    (Quelle: https://www.msxfaq.de/sonst/bastelbude/raspi/raspi-1wire.htm)


    Lt dieser Seite wäre für längere Leitungen die Variante in der Mitte die beste (wäre das die Pin gesteuerte?)

    Würde die das Problem mit dem Verlieren des Bus verhindern oder prüfen?

  • VDD 5 V direkt am Sensor solltest Du nicht verwenden, sondern 3,3 V.

    Wenn Du 5 V verwendest, muss der Pullup auf 3,3 V verschaltet werden.


    Und linear mit kurzen Stubs ist schon ok.



    Servus !

    RTFM = Read The Factory Manual, oder so

  • VDD 5 V direkt am Sensor solltest Du nicht verwenden, sondern 3,3 V.

    Aber wieso?

    Network Description

    The scope of this document is limited to 1-Wire networks that use Category 5e, twisted-pair copper wire and have 5V bus power supplied by the master.


    (Most 1-Wire slaves will operate at lower bus voltages, but large networks often have too much loss to perform well under low-voltage conditions.)

    Bei mir läuft es zumindest so mit 5V perfekt.


  • Hallo Jungs,

    was sollte ich jetzt verwenden, bei der aktuellen Variante wird ja lt RTFM kein Bus Reset gemacht und das ist ja eigentlich Problem mit den verlorenen Sensoren, um einen Totalausfall zu vermeiden muss ich also auf so ein System wechseln oder?


    Oder besteht die Möglichkeit mit Variante zwei einen so stabilen Anschluss zu bekommen das ich auf das Bus Reset verzichten kann.


    Würde es nichts bringen den Widerstand nochmal zu verringern?

    Edited once, last by Grand ().

  • Aber wieso?

    Bei mir läuft es zumindest so mit 5V perfekt.


    Das heisst ich kanns mir einem 3 Poligen Kabel so anschliessen wie du aber:

    - Ich muss auf 5V gehen nicht auf 3,3V

    - Ich muss das Datenkabel direkt am Pin des DS18B20 anlöten, aus beiden Richtungen, 5V und GND kann ich mit T-Stück abzweigen? (habe ich das so richtig verstanden?)

    - Ich muss nach dem letzten Sensor die Datenleitung und GND mit einem 1N5817 (lt Google eineSchottky Diode ) verbinden


    Leider scheiterts an so einer Diode, sowas hab ich nicht da, könnte zwar eine bestellen aber ein 50 cent Artikel und 5 Euro Versand tut mir schon ein bischen weh :)


    Gibts Bauteile wo die meist drauf sind, vielleicht kann ich aus meiner Schrottsammlung was auslöten?

    Edited once, last by Grand ().

  • - Ich muss das Datenkabel direkt am Pin des DS18B20 anlöten, aus beiden Richtungen, 5V und GND kann ich mit T-Stück abzweigen? (habe ich das so richtig verstanden?)

    Vereinfacht, die Datenleitung muss durchgehen ohne längeren Abzweig.


    Oben ist die Prinzipskizze, ich habe hier physisch einen Stern der aber trotzdem nur eine laaaaange Leitung ist weil das DATA-Kabel eben durchgeschleift wird.



    Guckst Du

  • Danke, ich hab jetzt zwei Varianten gezeichnet da ich nicht sicher bin welche die Richtige ist.


    Variante 1:

    5V anstellen von 3,3V und eine Diode



    Variante 2:

    5V für Sensor und 3,3V über Widerstand auf Datenleitung und eine Diode



    1 Frage welches ist die richtige Stromversorungs Variante?

    2 Frage kann ich eine 1N4007 überhaupt anstelle der 1N5817 verwenden

    3 Frage ist die Dioden überhaupt richtig eingebunden so wie gezeichnet?


    Danke euch für eure Gedult!

  • Wenn Du statt dtoverlay=w1-gpio dtoverlay=w1-gpio-pullup verwendest, stehen (per defailt) die w1-Daten auf GPIO 4 und eine gesonderte Pullup Leitung auf GPIO 5 zur Verfügung, sodass nur während der Messung der externe Pullup Widerstand (4,7 kOhm) bestromt wird. In diesem Fall kannst Du von Variante 2 die orangene 3,3 V Leitung auf GPIO 5 (PIN 29) umstecken.


    Variante 1 ist sowieso ein Nogo, weil der GPIO wieder über den Pullup mit 5 V (statt mit höchstens 3,3 V) bestromt wird.


    Der genaue Sinn der Diode erschliesst sich mir nicht. Eine Shottky Diode ist die 1N4007 aber schon mal nicht.


    Da Du nur alle 15 Minuten eine Messung vornimmst und nur zwei Sensoren am W1 Bus angeschlossen sind, kannst Du auch versuchen mit dtoverlay=w1-gpio-pullup die beiden Sensoren parasitär zu betreiben. Die Leitungslänge von 10-12 m sollte - bei entsprechender Leitungsqualität - kein Hindernis sein.


    Bei Deinem bisherigen Versuch, durch Verminderung des (externen) Pullup Widerstandes - 2 kOhm - die Leitungsreflexionen zu vermindern, musst Du aber auch berücksichtigen, dass der interne Pullup im SoC auch aktiviert ist, und der externe Widerstand nicht der tatsächliche Gesamtwiderstand darstellt.


    Servus !

    RTFM = Read The Factory Manual, oder so

  • Ich habe gerade nachgeschaut was ich damals eingetragen habe in der /boot/config.txt, hab ich das also falsch geschieben oder bewirkt das das selbe wie dein vorschlag?

    Code
    #fuer Temp sensor ds18b20 garage
    dtoverlay=w1-gpio,gpioin=4,pullup=on


    Wenn das oben stimmt kann ich also die variante zwei aus diesem Bild nehmen und diese Diode brauch ich nicht?

  • Wenn http://www.msxfaq.de Deine einzige Erkenntnisquelle ist, dann musst Du dort nachfragen, warum sich der 1-Wire Sensor aus dem OWFS aushängt.

    Für mich gilt das aktuelle /bin/overlays/README, das immer den aktuellen Stand am installierten System darstellt.

    Und da gibts (schon länger) ein w1-gpio und ein w1-gpio-pullup Device Tree Overlay.


    Ausserdem kann man 2 Sensoren an einem 10-12 m langen CAT5 Kabel durchaus noch als kurze Leitung im Sinne Deiner Bastelbude ansehen.


    Servus !

    RTFM = Read The Factory Manual, oder so