DS18B20 über 1wire am Raspberry PI

Wold
2014-11-28
2015-04-14
  • Wold - 2014-11-28

    Hallo alle zusammen,

    ich habe ein kleines Problem mit den Temperatursensoren DS18B20 über 1wire am Raspberry PI.

    Habe mir eine Testplatine mit 10 dieser Sensoren gebastelt und lese diese über das angepasste Beispielprojekt aus.
    Soweit so gut. Grundsätzlich funktioniert das alles soweit.

    Mein Problem ist, das nach einiger Zeit immer wieder einzelne Sensoren ausfallen, die dann auch mal wieder funktionieren (Sporadisch).
    Ich denke, da auf dem Raspberry unter /sys/devices/w1_bus_master1 die Ordner der ausgefallenen Sensoren dann auch nicht mehr angezeigt werden, der Fehler nicht in der SPS, sondern Hardwareseitig bzw. im Treiber auf dem Raspberry zu suchen ist.

    Versucht habe ich schon folgendes:

    Hardware
    -Pullup Widerstand variiert von 800Ohm bis 4k7
    -Leitungslänge von 20cm bis 30m
    -Kondensator 100nF zwischen GND und Versorgungsspannung
    -Spannungsversorgung der DS18B20 von extern eingespeist

    Software
    -in der Datei /etc/modprobe.d/1-wire.conf folgendes eingetragen
    options wire max_slave_count=20
    options wire timeout=100

    Laut Google haben dieses Problem mehrere Leute. Leider habe ich noch nirgens eine passende Lösung gefunden.
    Wenn irgendwer noch eine Idee hat was man versuchen könnte wäre ich um jeden Hinweis dankbar.
    Sehr interessant wären auch mehr infos zum 1wireTreiber.

     
  • eschwellinger

    eschwellinger - 2014-11-28

    Hi,

    wie lange fallen die den aus wenn die "weg" sind?
    Kommen die dann wieder selber an den Bus?
    Klar wenn es blos paar Messungen sind das Sie weg sind könnte man ja nicht Fehlmessungen rausfiltern..

    Es scheint echt ein weit verbreitetes Problem zu sein. Vielleicht hilft der Link noch weiter;
    http://www.raspberrypi.org/forums/viewt ... ue#p514641
    Grüße
    Edwin

     
  • Wold - 2014-11-28

    Hallo,

    vielen dank für die schnelle Antwort.

    Es ist sehr unterschiedlich. Einen Sensor habe ich dabei, der immer wieder ausfällt. Meist nur für ein paar Mituten, manchmal aber auch für eine halbe Stunde.
    Dies ist auch abhängig davon, welchen Wert ich für timeout in die 1-wire.conf eintag.
    Der timeout Wert in der config ist für das Suchen nach neuen Sensoren auf dem Bus in Minuten.
    Bei größeren Werten (30) fallen die Sensoren seltener aus. Allerdings dann auch für längere Zeit. Was ja auch logisch ist.

    Wenn ich sicher wüsste, dass die Sensoren nach der nächsten Messung wieder da sind könnte ich schon damit leben. Da mein Projekt aber eine Temperaturregelung für ein Haus werden sol,l muss ich mich schon darauf verlassen können, dass ich mindestens alle viertel Stunde einen richtigen Wert bekomme.

    Werde mich am Sonntag mal durch den Link lesen und arbeiten. Vielen dank dafür.
    Bin aber weiterhin für Tipps uns Links dankbar.

    Ich habe selbst noch eine Idee. Im 1wire Treiber gibt es (wenn ich es richtig verstanden hab) die Möglichkeit die vorhandenen ID´s in die ADD Datei einzutragen.
    Somit könnte ich die Suche nach neuen Sensoren deaktivieren. Was meiner Meinung nach daran schuld ist, dass immer wieder Sensoren ausfallen. Dies werde ich ebenfalls am Sonntag testen.

    Mfg
    David

     
  • NetFritz - 2014-11-29

    Hallo
    Ewtl. kannst Du es ja mit einem "1-Wire Busmaster / USB Hostadapter DS9490R" versuchen.
    Die Firma Elaborated Networks vertreibt ein Wiregate die Software ist speziell auf I-wire ausgelegt.
    Dort gibt es seit kurzem einen Profi Busmaster
    http://shop.wiregate.de/wiregate/professional-busmaster-1.html
    ob der aber mit einem RPi läuft kann ich nicht sagen.
    Gruß NetFritz

     
  • Wold - 2014-12-11

    Hallo,

    hab jetzt eine Lösung gefunden mit der ich gut leben kann.

    Ich habe die kontinuierliche Suche nach Sensoren in der Datei 1-wire.conf mit
    "options wire search_count=0"
    deaktiviert.
    Dann dem Treiber die Sensoren angelernt, durch eintragen der ID in die Datei w1_master_add.
    Dazu habe ich mir ein Skript geschrieben das nach jedem Neustart die Sensoren nacheinander in die w1_master_add schreibt.

    Jetzt kommt es zwar noch zu CRC Fehlern. Aber nur noch ca. 1 Fehler pro Stunde.
    Da die Sensoren ja alle ca. 10 Sekunden ausgelesen werden, stört mich das nicht.

    Mfg
    David

     
  • Knaller - 2015-02-25

    Moin
    Nach dem Update auf die Runtime vom Pi auf 2.1.0.0 und der neuen V3.5.Sp6 funktioniuert 1Wire nicht richtig.
    Es werden falsche devices angelegt.
    00-800000000000 -> falsch nicht vorhanden
    00-aabbccddeeff -> falsch nicht vorhanden
    10-0008019c4d67 -> richtige ID
    w1_bus_master1
    Mit der alten version war das nicht und es wurde sogar der 2te DS18B20 gefunden.

    Was könnte die URsache sein ???

    Gruß Herbert

     
  • eschwellinger

    eschwellinger - 2015-02-26

    Hallo Herbert,

    verwendest du unser Image oder hast du das update der sps über
    das debian Packet eingespielt?

    Grüße
    Edwin

     
  • Knaller - 2015-02-26

    Hallo Edwin

    Ich benutze das neuste Image von euch.
    Grüße Herbert

     
  • eschwellinger

    eschwellinger - 2015-02-28

    Hi Herbert,

    also ich habs nun nochmals getestet mit Pi 2 und neuem Image.
    Wenn man einen 4K7Ohm Wiederstand zwischen 3.3V und GPIO4 macht funktioniert das bei mir...
    Mag sein das es auch was mit dem neuen Kernel und der Tatsache zu tun hat.

    /boot/config.txt

    #kernel fix >= 3.18
    dtparam=i2c_arm=on
    dtparam=spi=on
    dtoverlay=w1-gpio-pullup,pullup=1

    (könnte auch helfen ,pullup=1)
    zu rentfernen... musst mal checken.

    Grüße
    Edwin

     
  • Knaller - 2015-04-14

    Moin
    Endlich wieder Zeit mit dem PI zuspielen.

    Da sich beim Betriebssystem des Pi was geändert hat funktionierten die Temperatur sensoren nicht mehr.

    Schuld ist die neue Tree Funktion für die Treiber.

    4.3: Disabling device tree usage
    If you decide this DT lark isn't for you (or for diagnostic purposes), you can disable DT loading and force the kernel to revert to the old behaviour by adding:
    device_tree=
    to config.txt. Note, however, that future kernel releases may at some point no longer support this option.

    mfg Herbert

    Hier noch ein Link

    http://raspberry.tips/faq/raspberry-pi- ... hr_w1-gpio m

     

Log in to post a comment.