12 * DS18B20 an Raspi über 90m Baum

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Guten Morgen,

    ich bin ein Mess&Statistikfreund. Aus diesem Grund habe ich mir jetzt einen Raspi mit 12 * DS18B20 gekauft.

    Hiermit möchte ich diverse Temperaturen erfassen.

    Der Raspi liegt auf dem Dachboden. Von dort aus habe ich eine Baumstruktur (Telefonkabel 3adrig) aufgebaut, an der die Sensoren hängen. Die längste Leitung geht dabei über ca. 30m.

    Momentan bekomme ich jedoch nicht mehr als 7 Sensoren gleichzeitig ans fliegen. Sobald der 8. Sensor angeklemmt wird, wird am Bus nichts mehr erkannt.

    Auch werden die Sensoren (3 Stck) an der 30m-Leitung überhaupt nicht erkannt, auch nicht wenn diese alleine am Raspi hängen. (Die Leitung ist aber ok, habe ich nachgemessen)

    Meine Vermutung ist, das ich evtl. einen kleineren Widerstand einlöten muss. Hierzu habe ich mir jetzt zum testen ein Breadboard bestellt.

    Was ich aber nicht verstehe: In meinem Solarkollektor hängt auch ein Sensor, der liefert mir korrekte positive Werte. Jedoch wenn es kälter wird, (Minusgrade) zeigt er nur noch 0,0°C an. Der Vergleichssensor aus der Solaranlage liefert -6°C.

    Woran kann das liegen ?

    LG

  • Hast meinen "Edit" gesehen?

    [font="Tahoma, Verdana, Arial, sans-serif"]Auch beachtenswert ist die Stromeinspeisung bei langen Kabeln: KLICK[/font]

  • Zitat von Bartimaus


    Was ich aber nicht verstehe: In meinem Solarkollektor hängt auch ein Sensor, der liefert mir korrekte positive Werte. Jedoch wenn es kälter wird, (Minusgrade) zeigt er nur noch 0,0°C an. Der Vergleichssensor aus der Solaranlage liefert -6°C.

    Laut der Tabelle im Datenblatt S. 4 wird der ausgegebene Wert ab unter 0° von oben runter gezählt. Hast du eventuell kein ausreichend großes Datenformat für die ermittelten Werte definiert sodass die vorderen Byte abgeschnitten werden?

    Einmal editiert, zuletzt von xlemmingx (3. Februar 2014 um 11:05)

  • Laut der Tabelle im Datenblatt S. 4 wird der ausgegebene Wert ab unter 0° von oben runter gezählt. Hast du eventuell kein ausreichend großes Datenformat für die ermittelten Werte definiert sodass die vorderen Byte abgeschnitten werden?

    Hm, ich habe noch kein Datenformat definiert, d.h. ich lese die Werte nativ aus wie sie vom Sensor über das 1wire geliefert werden.
    Äh, da ich noch ganz neu in dem Thema bin, wo definiere ich das Datenformat ?

    LG

  • Ich hab grad mal einen Sensor in meinen Gefrierschrank gelegt und das kommt dabei heraus:

    Code
    root@raspi007:/sys/bus/w1/devices/28-00000590b8d9# cat w1_slave 
    bc fe 4b 46 7f ff 04 10 d4 : crc=d4 YES
    bc fe 4b 46 7f ff 04 10 d4 t=-20250
    root@raspi007:/sys/bus/w1/devices/28-00000590b8d9# bash /root/OneWire.sh 
    -20.250
  • Das OneWire.sh beihaltet folgendes:

    Code
    SENSORES=$(cat /sys/bus/w1/devices/w1_bus_master1/w1_master_slaves)
    for item in ${SENSORES[*]}
    do
    VALOR=$(cat /sys/bus/w1/devices/$item/w1_slave | grep t= | cut -f2 -d= | awk '{print $1/1000}')
    echo $VALOR
    done

    Vorher natürlich manuell ein:

    Code
    modprobe w1-gpio
    modprobe w1-therm
  • Ach so, entschuldigt bitte. Komme von der Arbeit via SSH nicht auf meinen Raspi, darum kann ich die Werte per Konsole gerade nicht auswerten.

    Ich lese die Werte mittels FHEM-Server aus. Dort habe ich die Sensoren eingebunden, und rufe das über einen VPN-Tunnel mit FHEMobile ab.

    Das sieht dann so in der FHEM-Config aus:
    define FlurTemp GPIO4 28-0000055f407d
    attr FlurTemp model DS18B20
    attr FlurTemp icon icoKLIMA
    attr FlurTemp room Flur

    Also könnte es auch ein Problem mit FHEM sein..

    Einmal editiert, zuletzt von Bartimaus (3. Februar 2014 um 11:43)

  • Für den DS18B20 Sensor brauchst du einen 4,7k Ω Widerstand zwischen dem VCC und DATA pin. Der Widerstand ist der Bus-Abschlußwiderstand

    Die entsprechende Schaltung wird am folgenden Beispiel an einem Arduino verwendet - da jedoch die Schaltung identisch ist, kann diese auch am Pi an einem jeweiligen GPIO Pin verwendet werden:
    Ds18b20_bb.png
    quelle: http://www.laub-home.de/wiki/Raspberry_Pi_Sensoren_auslesen

    Ein Python Script zum Auslesen mehrerer Sensoren könnte zum Beispiel so aussehen:

    Dabei müsstest du eben die Pfade "28-000003bad0b2" usw entsprechend anpassen

    Eine Anleitung zum darstellen der Werte findest du hier: 1-Wire Sensor mit Datenbank

    Weitere gute Anleitungen findest du auch hier:
    http://www.kompf.de/weather/pionewiremini.html
    http://www.raspiprojekt.de/anleitungen/sc…or-ds18b20.html
    http://learn.adafruit.com/adafruits-rasp…rature-sensing/


    Was bei dir allerdings Probleme bereiten könnte wäre die Kabellänge da der RaspberryPI sowohl an den GPIO Daten-pins also auch am 3V3 insg. maximal 50mA ausgibt. Einzig 5V könnte mehr liefern da der vom USB durchgeschliffen ist, aber auch da ist der Strom bei normaler Versorgung über den Mikro-USB Anschluss auf maximal 200-300mA begrenzt. Mehr dazu kannst du hier nachlesen:
    https://www.forum-raspberrypi.de/Thread-faq-wie…o-schnittstelle
    [ Info ] Stromversorgung Raspberry Pi

    Ein weiteres Problem könnte aber auch sein das der Treiber glaub ich nur bis zu 10 Sensoren unterstützt

  • Exakt so sind meine Sensoren z.Zt. angeschlossen, incl. 4,7kOhm Widerstand.

    Ich werde jetzt mal nachmessen, wieviel Strom am Ende der langen Leitung wirklich ankommt.

    Interessant ist ein Hinweis aus dem letzten Link, wo es um die Stromversorgung geht. Da ich den Raspi z.Zt. über WLAN betreibe, werde ich heute Abend mal auf LAN umsteigen und probieren.

    Den Treiber kann man auch mittels

    Zitat


    [font="Arial"]sudo nano /etc/modprobe.d/1-wire.conf[/font]

    [font="Arial"]options wire max_slave_count=20[/font]

    überreden es mit mehr als 10 Sensoren aufzunehmen. Aber bei meinem scheiterte es ja schon bei > 7 Sensoren.

    Einmal editiert, zuletzt von Bartimaus (3. Februar 2014 um 13:20)

  • Ich habe z.Z. 13 Sensoren am Pi hängen die sich auf gut 90 m Telefonkabel verteilen. Dabei gehen 2 Strecken vom Pi direkt ab und verzweigen sich dann in die entsprechenden Räume, in die Aquarien und auch in Kühl- und Gefrierschrank. Das ganze läuft bei mir seit Wochen mit 3.3 V stabil.

    Beim verlegen der Sensoren hatte ich auch Probleme das irgendwann die Sensoren nicht mehr erkannt wurden. Ich habe dann mit dem Widerstand etwas rumprobiert und diesen Stufenweise abgesenkt.
    Bei 820 Ohm hatte ich dann 'Kontakt'. Alle Sensoren werden mit diesem Wert planmässig erkannt. Schraube ich ihn auf 1.2 Ohm hoch fallen die entfernten Sensoren direkt aus und auch die Nahen spinnen rum.

    Eine weitere Fehlerquelle die ich bei mir entdeckt hatte waren einfache Litze. Ich hatte zunächst zu Testzwecken einfach drei 10 meter Ringe Litze genommen und dort einen Sensor angebracht, diesen konnte ich nicht mit Geld und guten Worten zur Antwort bewegen - und das obgleich am Ende die 3.3V ankamen.... mit dem Telefonkabel geht es aber problemlos.


    Zum Auslesen und speichern nutze ich übrigens AVRIO, das im Forum vorgestellt wurde.


  • Ich habe dann mit dem Widerstand etwas rumprobiert und diesen Stufenweise abgesenkt.
    Bei 820 Ohm hatte ich dann 'Kontakt'. Alle Sensoren werden mit diesem Wert planmässig erkannt. Schraube ich ihn auf 1.2 Ohm hoch fallen die entfernten Sensoren direkt aus und auch die Nahen spinnen rum.

    Mist, gestern Widerstände bestellt, aber nur runter bis 2,2kOhm...


  • Ich habe dann mit dem Widerstand etwas rumprobiert und diesen Stufenweise abgesenkt.
    Bei 820 Ohm hatte ich dann 'Kontakt'. Alle Sensoren werden mit diesem Wert planmässig erkannt.

    Zum Auslesen und speichern nutze ich übrigens AVRIO, das im Forum vorgestellt wurde.

    Das war der richtige Tip. Habe direkt nen 820er verlötet, und selbst die Leitung welche sich bis zuletzt beharrlich geweigert hatte, ging klaglos. Dann direkt aufs ganze, und alle Sensoren auf einmal angeschlossen.

    Läuft bis jetzt perfekt. Jetzt muss ich nur noch das < 0°C Problem fixen, dann teste ich AVRIO.

    Vielen Dank für die Tips...

  • Bekommst Du denn im Terminal die richtigen Werte?

    Code
    modprobe w1-gpio && modprobe w1-therm
    cat /sys/bus/w1/devices/28*/w1_slave

    Wenn ja, dann liegt es am FHEM...

Jetzt mitmachen!

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