W1, manchmal ist bei 6 Sensoren DS18B20 Schluss

  • Hallo,
    ich kämpfe mal wieder mit einem Phänomen, wo ich die Antwort erahne, aber nicht verstehe.
    Ich messe derzeit am w1 7 Temperaturen, aber manchmal sind die /sys/bus/w1/devices/20-xxx Ordner ganz weg oder in der Datei w1_slave stehen unsinnige Temperaturen.
    Ich habe den PullDown-Widerstand im Verdacht, bevor ich aber wild loslöte, wollte ich mich noch mal versichern.

    Der Aufbau ist nach Raspiprojekt, Bild 2 mit einem 4,7k-Widerstand aufgebaut. Es sind 2 Stänge, zusammen ca. 8...10m lang. Die Kabel bestehen aus 3 Adern CAT7-Kabel, wobei nach Tipp von hier die Masse und Datenader verdrillt sind. Der jeweils letzte halbe Meter besteht aus solchem Kabel [Anzeige], alles miteinander mit diesen Cat-Verbindern [Anzeige]

    Nun habe ich gestern, als ich alles in Betrieb nahm, festgestellt, dass das oben beschriebene Phänomen auftrat, als ich den siebenden Sensor anschloss. Dann war für kurze Zeit (Minuten) alles OK, auch die Temperatur stimmte. Dann waren plötzlich alle oder einige Ordner weg oder die Temperaturen in den w1_slave-Dateien waren falsch, bzw. es stand die Meldung NO da.
    OK, erst mal siebenden Sensor weg gelassen. Heute tritt das schon bei sechs Sensoren auf. Der einzige Unterschied zu gestern ist nur, dass einige Sensoren und deren Zuleitung in einem 40...50 Grad-Umfeld liegen.

    Ich erinnere mich an Beiträge hier, wo empfohlen wird, den Widerstand bis maximal 1,8k zu verringern. Aber eigentlich dachte ich, da geht es um ganz andere Längen als meine 10 Meter. Zumal die Hauptleitung recht großzügig dimensioniert ist.

    Darum meine Frage. Falls es nicht an der Leitung liegt und ich jetzt den Widerstand verringere, könnte da etwas am RasPi passieren? Denn ohne Grund wurde sicher nicht eine Größe von 4,7K gewählt.
    Schönes Wochenende

    Viele Grüße
    DocAdams

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

    Einmal editiert, zuletzt von docadams (7. September 2014 um 21:19)

  • Zitat

    und ich jetzt den Widerstand verringere, könnte da etwas am RasPi passieren?


    Eine einfache Rechnung sollte dir bestätigen, dass du den Widerstand deutlich verringern kannst.

    3,3V
    0,012A (sink der GPIOs)
    R = U/I

    Zitat

    Denn ohne Grund wurde sicher nicht eine Größe von 4,7K gewählt.


    Naja, ein Mini Bus mit wenigen Sensoren an 5V

    Wir/du haben aber 3,3V, und schon recht viele Sensoren an langen Kabeln.

    spruch.png

    Einmal editiert, zuletzt von combie (5. September 2014 um 15:03)

  • Hallo DocAdams,

    so weit ich das verstanden habe, beziehen sich die 4k7 auf 1 Sensor und kurzen Kabeln. Da funktioniert alles super.

    Dann kamen einige auf die Idee
    a) immer mehr Sensoren an einem Bus zu verbauen
    b) immer längere Kabel zu verbauen

    Beides resultiert in einer Vergrösserung des Widerstandes, der logischerweise durch einen kleineren Widerstand als 4k7 auszugleichen ist.

    Ich setze immer meinen Angst-Widerstand 680 Ohm, der Schlimmstes verhindert.

    Dann nimmst Du statt Deines 4k7 ein Poti bis 4k7 oder 10k oder so.

    Dann kurbelst Du an dem Poti, bis Dein Programm so funktioniert wie Du das erwartest.

    Danach misst Du den Widerstand am Poti, addierst den Angst-Widerstand dazu.

    Wenn Du einen Widerstand mit diesem Widerstandswert anstelle des 4k7 setzt, dann sollte Dein Schaltung zusammen mit dem Programm stabil und ohne Ausfälle laufen.


    Gutes Gelingen

    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

    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.

  • 4,7k gilt für 5V und kurze Leitungen !
    PI 3,3V und wie du schreibst nix kurze Leitung !


    Ich setze immer meinen Angst-Widerstand 680 Ohm, der Schlimmstes verhindert.
    Dann nimmst Du statt Deines 4k7 ein Poti bis 4k7 oder 10k oder so.
    Dann kurbelst Du an dem Poti, bis Dein Programm so funktioniert wie Du das erwartest.
    Danach misst Du den Widerstand am Poti, addierst den Angst-Widerstand dazu.
    Wenn Du einen Widerstand mit diesem Widerstandswert anstelle des 4k7 setzt, dann sollte Dein Schaltung zusammen mit dem Programm stabil und ohne Ausfälle laufen.

    Poti kann bis auf 0 und killt PI und oder DS18B20

    Es ist nicht nur der Strom der GPIO zu bedenken sondern auch der DS18B20 kann nicht unendlich viel.

    Die 12mA des GPIO ist sehr optimistisch für den Fall das alle Treiber aktiv sind, der DS kann nur 4mA ! siehe Datenblatt.

    Daraus resultiert 820 Ohm als Minimum !
    Es ist nicht der Widerstand der Leitung der stört sondern seine Kapazität, es muss ja der "KabelKondensator" von 3,3V nach 0V umgeladen werden und zurück und das muss schnell gehen damit serielle Telegramm erkannt wird ! Wenn ein Bit in µs 0,000001s erkannt werden soll hilft es nicht gerade wenn der Pegel zur Änderung ms 0,001s braucht bis er hoch oder runter ist, das Bit mit 0,000001s wird dann einfach nicht erkannt !

    PS und Trimmerpotis neigen zu Frühausfällen, Kontaktschwächen und sind immer eine potenzielle Fehlerquelle.

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)

    Einmal editiert, zuletzt von jar (5. September 2014 um 16:48)


  • 10Sensoren ist mit dem GPIO4 schluss.


    Das ist zwar nicht ganz richtig, da die Grundeinstellung in der config überschrieben werden können. Ich arbeite z.B. mit 16 Sensoren und 5V Stromversorgung mit 2k2 vom GPIO4 gegen 3,3V am RasPi. Ganz wichtig ist eine sehr saubere Verarbeitung der Leitungsübergänge. Bei mir war das anfänglich oft Ursache für Störungen. Ich habe dabei auch bessere Ergebnisse mit einzelnen Kupferadern (Klingeldraht) als mit Litze erziehlt. Das hängt, wie jar schon bemerkte wohl mit der Kapazität der Leitung zusammen.

  • Da merke ich mal wieder, wie naiv ich die Sache angegangen bin.
    Meine ursprünglichste Ursprungsidee war, ein Fenster und die Raumtemperatur zu messen. Nun ist es schon jedes Fenster, weil zu unterschiedlichen Zeiten die Sonne reinballert. und der Nachbarraum. Und da habe ich noch nicht mal die 3 DS2401 genannt, die später noch dazu kommen sollen. So ist es mit dem Appetit und dem Essen ;)

    Ich probiere das mal mit 2,2k Widerstand, allerdings muss ich den erst besorgen bzw. zusammenlöten. Oder ich mach das mit einem Hardwarebusmaster. Das scheint mir für mich sicherer und flexibler zu sein (also was ich jetzt auf die Schnelle gelesen habe). Zumal meine Kabelverbindungen durch die örtlichen Gegebenheiten nicht immer optimal sind.
    Ich hätte nicht gedacht, dass das so viel Einfluss haben kann.

    Viele Grüße
    DocAdams

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

  • Hallo,
    ich hoffe, dass ich mir nach 2 Tagen selbst folgen darf.

    Mathias,
    du scheinst hier einer der wenigen Hardwarebusmaster-Fans zu sein ;)
    Ich habe mir mal die Bilder auf deiner verlinkten Seite angeschaut. Täusche ich mich oder verdeckt das dort angebotene RPI2 I2C to 1-Wire Host Adapter einen großen Teil der GPIOs? Das wäre nicht gut, weil ich einige davon noch brauche.

    Wäre ein ds9490r eine Alternative? Allerdings habe ich da noch keine für mich Laien verständliche Anleitung in Deutsch gefunden, allerdings eine Problemseite, die mich wiederum von dem eigentlich für mich geeignet erscheinenden Bauteil abschrecken lässt, um es mal vorsichtig zu formulieren.

    Viele Grüße
    DocAdams

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

  • Ja, mach das mal....
    Nein, lass dich nicht von mir verleiten, war ein Spaß.

    Durch das Verdecken so vieler GPIOs fällt das Teil aus, da ich ja damit meine 8 Relais ansteuere.

    zum DS9490R habe ich z.B. das gefunden, bevor ich mich aber daran mache, muss ich erst mal begreifen, was es mit dem OWFS-FUSE auf sich hat und ob man dann die Sensoren tatsächlich nur mit 2 Anschlüssen betreiben darf. Der Schreiber hält sich da etwas kurz.

    Viele Grüße
    DocAdams

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

  • Ich habe mir nun so ein Teil bestellt.
    Wird wohl ein Weilchen dauern. Aber ich melde mich, sobald ich es habe und vielleicht bin ich bis dahin auch etwas schlauer.

    Viele Grüße
    DocAdams

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

  • Das ging ja schneller, als ich dachte. ... und ist wohl auch einfacher, als ich dachte.

    Ich habe an meinem Test-Raspi nur das DS9490R angesteckt und probehalber mit 2 Temperatursensoren verbunden. Das Kabel ist allerdings nur 50cm lang und daran hängen an der GND- und DATA-Leitung die Sensoren.
    Weitere Änderungen habe ich zunächst nicht vorgenommen.

    In /sys/bus/w1/devices befinden sich die Ordner der Sensoren mit der Datei w1_slave, die ich wie bisher auslesen kann.
    Wenn das so stabil funktioniert, könnte ich mein bisheriges System beibehalten und ich könnte sogar eine Leitung einsparen.
    Allerdings, im Versuchsaufbau hatte es ja schon immer funktioniert...

    Viele Grüße
    DocAdams

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

  • Leider doch...
    Ich war wohl etwas zu schnell euphorisch. Die genannten Ordner verschwinden nach einiger Zeit wieder. Ich habe noch nicht erkannt, warum und wann.

    Ich habe schon nach hier wire entladen

    Code
    sudo rmmod 9490r
    sudo rmmod wire
    sudo rmmod ds9490


    hat aber auch nicht geholfen.
    Jetzt möchte ich den ganzen Guide abarbeiten, also OWFS installieren. Obwohl ich diese Art der Auswertungen nicht nehmen möchte, sondern bei meiner RRD-Datenbank und Darstellung bleiben möchte.
    Ich hoffe nur, dass es nicht ein Hardwarefehler des DS9490R ist.

    Viele Grüße
    DocAdams

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

  • OK, offenbar kein Hardwareproblem, sondern ein Verstehen-Problem.

    Seit knapp 4 Stunden läuft es mit OWSF stabil.
    Ich hatte gehofft, ich finde irgendwo die Rohdaten der Sensoren unter /sys/bus/usb/
    Denn wenn ich das recht verstehe, schreibt der OWSF-Server mehr oder weniger kontinuierlich die Temperaturwerte in die Datei /media/1-wire/SENSORBEZEICHNUNG/temperature

    Nun sehe ich für mich 2 Probleme.
    Eigentlich erfolgt ja keine Prüfung des Wertes wie bei der anderen Art der Datenerfassung und vor allem, wie bekomme ich die Werte im die RDD-Datenbank?

    Vermutlich muss dieser Teil der Routine


    angepasst werden, aber da habe ich absolut keinen Plan.

    Viele Grüße
    DocAdams

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

    Einmal editiert, zuletzt von docadams (11. September 2014 um 19:22)

  • Hallo,
    ich beziehe mich noch mal auf den oberen Teil der Diskussion. Also dort, wo ich erkannt habe, dass die 4,7KOhm für den Widerstand am Temperatursensor eher für den Versuchsaufbau am Tisch ist und wenn man deutlich mehr Sensoren und/oder längere Leitungen hat, der Widerstand geringer sein sollte.

    Daraus ergibt sich jetzt für mich eine Frage. Ich habe für die Messung im Schaltkasten fest verdrahtet einen Sensor. Der soll mal später raus hängen, um die Zimmertemperatur zu messen. Kommt der Schaltkasten dann ins Zimmer, werden die anderen Sensoren angeschlossen.

    Wenn ich nun statt der 4,7K einen Widerstand von 3,3K einbaue, muss ich dann unbedingt die anderen Sensoren angeschlossen haben? Und nicht nur den einen fest verdrahteten?
    Oder bewege ich mich da noch im Toleranzbereich, wenn ich da mal probehalber für 5 Minuten die Anlage auf dem Tisch einschalte?

    Viele Grüße
    DocAdams

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

Jetzt mitmachen!

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