Mehrere Sensoren an 1-Wire machen Probleme

L I V E Stammtisch ab 20:30 Uhr im Chat
  • Hallo,

    ich habe heute mehrere Temperatursensoren Über die GPIOs per 1-Wire an meinen Raspberry (Raspbian, Linux-Kernel 4.9.59) angeschlossen; Schaltplan siehe Anhang. Wenn ich da 1-3 Sensoren anschließe, klappt es wunderbar und die Sensoren werden unter /sys/bus/w1/devices alle schön angezeigt. Füge ich, wie auf dem Schaltplan zu sehen, einen vierten hinzu, wird kein Sensor mehr unter /sys/bus/w1/devices angezeigt, d.h. auch die ersten drei verschwinden.

    In meiner /boot/config.txt steht:

    Code
    dtoverlay=w1-gpio-pullup

    Auch folgende Einstellung verbesserte die Situation nicht:

    Code
    dtoverlay=w1-gpio-pullup,gpiopin=4,extpullup=on


    lsmod | grep gpio ergibt:

    Code
    wire    w1_gpio, w1_therm

    Mein Ziel ist es das ganze später auf 12 Temperatursensoren zu erweitern, von denen ich je nach Bedarf mehr oder weniger in ein Patchpanel mit RJ45 Steckern reinstecke (also da, wo die 3m-Leitungen zusammenlaufen).

    Was mache ich falsch? Wie sollte man das machen?

    Gruß

    Didgejo

    PS. Nicht dran stören, dass auf dem Sensor nicht DS18B20 steht ... hatte ich als Symbol nicht gefunden.

  • Danke für den Link.

    Für jemand der sich auskennt, ist das bestimmt sehr erhellend. Mir hilft das aber leider noch nicht ... bin noch Anfänger :( (Schau es mir als Fortgeschrittener noch mal an)

    Reichen 3,3V?

    Welchen Widerstand könnte ich bedenkenlos ausprobieren?

    Und ich möchte das ganze später auf 12 Temperatursensoren erweitern, von denen ich je nach Bedarf mehr oder weniger in ein Patchpanel mit RJ45 Steckern reinstecke.

    Gruß Didgejo (der alles fertig gebaut hat und auf die Erhellung hofft :) )

    Einmal editiert, zuletzt von didgejo (1. Februar 2018 um 11:27)

  • Hallo Didgejo !

    Für 1, oder 12 Sensoren gibt es keinen einheitlichen Wert für den 3,3 V Pull-Up Widerstand.

    Auch ist die gewählte Bus Topologie (Stern) für viele Sensoren weniger geeignet, am störungsftreisten funktionieren die Sensoren, wenn sie alle hintereinander auf einer Line beschaltet sind.

    Wenn die internen Pull-Up, Pull-Down deaktiviert sind, kannst Du (bei 4 Sensoren) den externen Pull-Uo stufenweise von 4,7 k verringern, bis 1,2 k (oder etwas darunter).

    Bei 12 Sensoren würde ich auch überhaupt zuimindest einen zweiten 1-Wire Bus aktivieren.


    Servus !

    RTFM = Read The Factory Manual, oder so

  • Um die Sterntopologie komme ich nicht herum.

    Einen zweiten 1-Wire-Bus anlegen wäre möglich ... habe ich nur bisher nirgends gelesen, wie das geht. Ich nehme an

    1. einen zweiten Pull-Up-Widerstand an 3,3V und GPIO4 (oder einen eigenen GPIO?)
    2. muss dann softwareseitig noch etwas gemacht werden?

    Gibt es nicht einen Widerstand, der sinkt, wenn die Stromstärke steigt?

  • Auch ist die gewählte Bus Topologie (Stern) für viele Sensoren weniger geeignet, am störungsftreisten funktionieren die Sensoren, wenn sie alle hintereinander auf einer Line beschaltet sind.

    Das denke ich auch, meine sind physisch als Stern verkabelt und elektrisch in Reihe geschalten.

    Ist hier näher beschrieben. Funktioniert übrigens mit dem org. empfohlenen 4.7 kOhm Widerstand :)

  • Ist hier näher beschrieben.

    Firefox gibt aus: "Diese Verbindung ist nicht sicher" ... hab's erst einmal lieber gelassen.

    Aber ich habe versucht, mir vorzustellen, einen pysikalischen Stern in Reihe zu schalten; siehe Anhang. Liege ich damit richtig? Die DS18B20 sind fertig konfektioniert und haben in der 3m_Leitung nur 3 Adern.

    Und wie kann ich Fritzing-Dateien zur Verfügung stellen, falls einer eine Änderung vornehmen will? Bei mir ist es im Upload nicht erlaubt.

  • Nein, das wird nichts, Du kannst nicht Versorgung und Masse "durchschleifen", da sinkt die Versorgungsspannung auf 3,3/4 = 0,825 Volt.

    Ich mag aber hier auch nicht erklären, wie ein Elektriker einen Schraubenzieher richtig in die Hand nimmt.

    Steck erstmals alle 11 Sensoren auf ein Steckbrett und versuche ein gültiges Signal von allen zu erhalten.

    Einen zweiten 1-wire Bus aktivierst Du auf einem weiteren Pin Deines Vertrauens, indem ein weiteres 1-wire Modul zum Kernel geladen wird.

    Das geht IMHO auch schon beim Systemstart durch ein weiteres Overlay in der Bootkonfiguration.


    Servus !

    RTFM = Read The Factory Manual, oder so

  • Ich mag aber hier auch nicht erklären, wie ein Elektriker einen Schraubenzieher richtig in die Hand nimmt.

    Habe ich auch nicht drum gebeten.

    Steck erstmals alle 11 Sensoren auf ein Steckbrett und versuche ein gültiges Signal von allen zu erhalten.

    Das ist natürlich sinnvoll im Sinne meiner Frage. Kam ich aber auch als Nicht-Elektriker schon drauf :)

    Alle tun es einzeln.

  • Du musst die DATA Leitung lang machen.

    Ah ... bei den drei Adern in meinen Kabeln bin ich natürlich auf die Idee nicht gekommen. Die DS18B20 sind fest mit 3m dreiadrigem Kabel verbunden und wasserdicht verkapselt. Und ich habe alle 12 Kabel schon mit RJ45-Steckern vercrimped.

    Mir fehlt für die In-Reihe-Schaltung die 2. Datenleitung in dem Kabel. Dann war es das wohl für meine 1-Wire-Experimente, oder?

    Beim In-Reihe-Schalten sehe ich auch noch folgendes Problem: Nicht alle 12 Sensoren stecken immer im Patchpanel - folglich ist die Reihe bei der DATA-Leitung nicht geschlossen, wenn ich den Stecker von einem Sensor herausziehe.

    Ich befürchte, es gibt eine Lösung, die ich als "Elektrioniker-Lehrling" ( :) ) aber kaum noch hinbekomme, oder?

    2 Mal editiert, zuletzt von didgejo (1. Februar 2018 um 14:39)

  • Vielleicht solltest du einfach mal anfangen und erklären was du eigentlich erreichen willst. ;). Ansonsten kommen mit jedem Post noch mehr Einschränkungen dazu. Notfalls bau die einen "Blindstopfen" der die Kabel brückt.

    Ich hoffe, ich habe das unter "Ziel" in dem Eingangspost treffend beschrieben. Oder willst Du wissen, was ich mit der Apparatur messen will? Antwort: Temperaturen im Heizungskeller an verschiedenen Rohren. Und das mit dem Gerät bei Famile und im Freundeskreis ... das heißt mal mehr und mal weniger Sensoren im Einsatz.

    Noch mehr Verständnisfragen?

  • Zitat von didgejo

    Die DS18B20 sind fest mit 3m dreiadrigem Kabel verbunden und wasserdicht verkapselt.

    Bei mir auch, daran sind dann die restlichen 4-6 m 4-adriges Kabel dran.

    Zitat von didgejo

    Beim In-Reihe-Schalten sehe ich auch noch folgendes Problem: Nicht alle 12 Sensoren stecken immer im Patchpanel - folglich ist die Reihe bei der DATA-Leitung nicht geschlossen, wenn ich den Stecker von einem Sensor herausziehe.

    Notfalls bau dir einen "Blindstopfen" der die Kabel brückt.

    Das ist bei meinem Hub eine Drahtbrücke:

    Hier sind unten z.B. 2 Sensoren dran, einer mit 4 Kabeln und einer direkt mit 3 Kabeln. Die restlichen DATA+ --- DATA- haben Brücken bis zur letzten, damit die Verbindung bis zur Diode geschlossen ist.

  • So wie ich das verstehe, werden alle Sensoren an einem Punkt zusammen geführt. Dann habe wir wohl eher eine Parallel- als eine Reihenschaltung. Alle Vcc Leitungen kommen letztlich an einem Punkt zusammen. Alle GND Leitungen und auch alle DATA Leitungen. An diesem Punkt wird der Pullup gesetzt. Fang mit 4k7 an. Wenn es damit Probleme gibt, gehst Du etwas weiter runter, z. B. auf 3k3. Die Versorgungsspannung der Sensoren darf nur 3V3 betragen, nicht 5V!

  • (Achtung: ich schrieb dieses Posting aber zwischendurch kamen zwei ausfühliche Antworten ... die muss ich jetzt noch durcharbeiten -

    aber vielleicht kann ja auch jemand etwas zu den 5V sagen)

    Da ich alles als in 3-adriger Kabelausführung habe, werde ich wohl zuerst versuchen, bei der ursprünglichen parallelen Schaltung zu bleiben, aber die Rahmenbedingungen zu verbessern:

    1. 5V:
      ich las bisher meistens "bloß kein 5V an die GPIOs" ... gelegentlich sah ich aber auch "es geht." Wie geht es den in meiner Schaltung im Eingangsposting genau?
    2. Widerstand verringern:
      da werde ich experimentieren
    3. evtl. statt 1x 1-wire, 2x 1-wire:
      das werde ich selbst durch lesen herausbekommen

    Edit, mit 5V versorgen

  • Aber genau so etwas verunsichert mich:

    Edit, mit 5V versorgen

    Die Versorgungsspannung der Sensoren darf nur 3V3 betragen, nicht 5V!

    Bestimmt gibt es gute Gründe, warum beide sich gegensätzlich anhörenden Antworten richtig sind. Aber die erkenne ich als Anfänger nicht und auch nicht, was da zu tun ist.

    Ich hoffe, jemand versteht meine Verunsicherung.

    2 Mal editiert, zuletzt von didgejo (1. Februar 2018 um 15:28)

  • Die GPIO des RasPi vertragen 3V3. Nicht mehr. Alle höheren Spannungen (von der Toleranz mal abgesehen) bewegen sich außerhalb der Spezifikation.

    Als Ausgang sollten sie nicht mit mehr als 2mA (ForenkonsensTM) belastet werden.

    Wenn jemand schreibt, Du sollst 5V anlegen, dann ist das evtl. auf einen AVR (z. B. Arduino) bezogen. Aber sicherlich nicht auf einen RasPi.

    Mal was anderes: Woher nimmst Du eigentlich die 3V3 für Deine ganzen Sensoren? Doch wohl nicht vom RasPi?

  • Mal was anderes: Woher nimmst Du eigentlich die 3V3 für Deine ganzen Sensoren? Doch wohl nicht vom RasPi?

    Bin ich mal tapfer und sage die Wahrheit: Ich mache es so wie in meinem Eingangsposting eingezeichnet ... vom Raspi. Aber das macht sollte er doch gut schaffen, oder?

    Ich habe zwar auch bereits eine 3,3/5V USB-Stromversorgung (siehe Anhang), aber mich noch nicht mit deren Anschluss beschäftigt.

    Das sollte dann wohl mein nächstes Projekt werden.

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!