1-Wire mehrere Sensoren

  • Hallo,


    ich bin neu hier im Forum und habe mir vor kurzem einen Pi 3 B zugelegt.


    Dieser Pi ist dazu gedacht, bei uns im Hühnerstall Futterstände, Temperaturen und einige andere Sachen zu überwachen und zu steuern, was bis auf die Temperaturen auch funktioniert.


    Der 1-Wire Bus über den GPIO4 funktioniert mit einem Sensor und ich kann diesen ohne Probleme auslesen.

    Schließe ich jetzt einen zweiten Sensor parallel an, wird kein Sensor mehr erkannt.


    Als Sensoren verwende ich mehrere DS18B20 (Dallas), welche ich einzeln und auch als Busverbund vorher an einem Atmega32 getestet habe.

    Als Betriebssystem nutze ich das aktuelle Raspian Stretch und die Module "w1_therm", "w1_gpio" und " wire" sind im Kernel auch geladen.


    Die Beschaltung der Sensoren ist wie folgt:

    VDD: +5V

    DQ: GPIO4 mit 4,7k Widerstand gegen 3,3V

    GND: GND


    Die Kabel sind in der Testumgebung ca. 10 cm lang und ein einzelner Sensor wird auch erkannt, solange kein weiterer an dem Bus angeschlossen wird.


    Weiß jemand von Euch Rat?

    Danke.


    Gruß

  • ein einzelner Sensor wird auch erkannt, solange kein weiterer an dem Bus angeschlossen wird

    Das ist ungewöhnlich, bei zwei Sensoren gab es mit 4k7 eigentlich noch nie Probleme. Entweder ist ein Fehler beim Anschließen passiert oder ein Sensor ist hin. Aber auch bei dieser kleinen Schaltung hilft ein Schaltplan weiter. Zusätzlich ein Foto wie es "live" aussieht wäre auch gut.

  • vielleicht einen gefälschten sensor erwischt?


    erst mal alle einzeln testen, werden sie erkannt, den Widerstand durchmessen, auch mal testweise einen 2,2k versuchen bei längeren Kabeln bis 1k runter(auch 820 Ohm wurden schon gemeldet)

    lasst die PIs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr

  • Das ist ungewöhnlich, bei zwei Sensoren gab es mit 4k7 eigentlich noch nie Probleme. Entweder ist ein Fehler beim Anschließen passiert oder ein Sensor ist hin. Aber auch bei dieser kleinen Schaltung hilft ein Schaltplan weiter. Zusätzlich ein Foto wie es "live" aussieht wäre auch gut.

    Bei mir ist das so in der Form bisher noch nicht vorgekommen. Ich habe nun alle Sensoren nochmals einzeln und untereinander gemischt angeschlossen. Immer das gleiche Ergebnis. Leider habe ich momentan kein Ozzi zur verfügung, sonst hätte ich die Flanken einmal prüfen können.


    Der Aufbau basiert auf diesem Tutorial: http://www.netzmafia.de/skript…rojekt-Onewire/index.html


    Ich habe es nun auch mit 2k2, 1k9 und 820R versucht. Einzeln werden alle erkannt. Im Verbund nicht. Die 3,3V Spannung des Pi liegt bei 3,31 V.


    vielleicht einen gefälschten sensor erwischt?


    erst mal alle einzeln testen, werden sie erkannt, den Widerstand durchmessen, auch mal testweise einen 2,2k versuchen bei längeren Kabeln bis 1k runter(auch 820 Ohm wurden schon gemeldet)

    Ich bin heute morgen extra zur blauen Apotheke mit dem "C" gefahren und habe dort noch ein paar Sensoren geholt - gleiches Ergebnis.


    Shell-Script
    1. root@stallpi:/sys/bus/w1/devices# ls
    2. w1_bus_master1
  • versuche doch mal parasitäre Speisung VCC und GND vom DS18B20 an GND vom PI mit pullup 2,2k an 3,3V vom PI


    diese "übliche" 5V / 3,3V Mischung finde ich eh immer mistig!

    lasst die PIs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr

  • Vermutung: Pins vertauscht (das "bottom view" im Datenblatt wird gerne übersehen) ...

    Alles korrekt. Sobald ich einen der beiden Sensoren abnehme, bekomme ich ja Daten. Jedoch nur, wenn nur ein einzelner Sensor dran hängt.


    Stimmt Dein 1w dtoverlay Eintrag in /boot/config.txt mit der Bescheibung in /boot/overlays/README richtig überein ?

    Code
    1. dtoverlay=w1-gpio,gpiopin=4,pullup=on

    Die Sensoren waren bei den letzten Tests mit parasitärer Speisung angeschlossen, da habe ich dann das "pullup=on" angehängt und natürlich auch einen reboot gemacht.

  • Und in /etc/modules, und /etc/modprobe.d/raspi-blacklist.conf ist das 1-w Modul nicht nochmals aktiv ?


    Wenn bei mehreren Sensoren keine Sensor initialisiert und damit auch abgefragt werden kann, ist meistens der Pullup Widerstand zu hoch (wurde auch hier schon erwähnt).



    Servus !

    Wer nichts weiß, muss alles glauben.

  • Ich habe nochmal etwas gekramt und einen 470R Widerstand angehägt. Jetzt kann ich mehrere Sensoren auslesen.

    Bei 560R gingen nicht einmal zwei sensoren.


    root@stallpi:/sys/bus/w1/devices# ls

    28-020291770890 28-020a91771f23 w1_bus_master1

    28-020491773640 28-020a9177f485


    Vielen Dank für Eure Hilfe.

  • Ich habe nochmal etwas gekramt und einen 470R Widerstand angehägt. Jetzt kann ich mehrere Sensoren auslesen.

    Bei 560R

    sehr ungewöhnlich, nicht vermessen?


    470 Ohm ist verdammt niederohmig an 3,3V gibt das einen Portstrom von 7mA eigentlich zu viel für GPIO und DS18B20.

    Klar können beide das überleben, sind die 470 Ohm bestätigt? , abgelesen oder Ringe?

    lasst die PIs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr

  • Ist da vllt am 1-w Pin ein interner Pullup/Pulldown Widerstand aktiviert ?

    470 Ohm und 560 Ohm alleine als externer Pullup ist viel zu wenig, bei 2 Sensoren und kurzer Leitungslänge.


    Servus !

    Wer nichts weiß, muss alles glauben.

  • Könnte auch ein unsauberer Übergang vom Pin zu den Sensoren sein.

    könnte auch ein Zinnspritzer sein, Nebenwiderstand, rel. hochohmig.

    lasst die PIs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr

  • Hallo!


    Ich bin neu hier im Forum und auch mit dem Raspi ein absoluter Rookie.

    Also verzeiht mir bitte, wenn ich noch nicht ganz Sattelfest bin.


    Bei der Suche nach einer Lösung für mein Problem bin ich auf diesen Beitrag hier gestoßen, der so ziemlich mein Problem darstellt:

    Ich habe einen Raspi Pi 3 B+, den ich unter anderem für eine Lüftungssteuerung einsetzen möchte.

    Die Temperaturern sollen über Wasserdichte DS18B20 (Kabellänge maximal 10m - in der Testumgebung alle 1m) aufgenommen werden.

    Alle 10 Sensoren funktionieren einwandfrei, wenn man sie einzeln anschließt. Auch die Kombination von mehereren Sensoren (parallel) funktioniert.

    Ab dem 4. Sensor ist dann allerdings Schluss. Dann zeigen auch die restlichen Sensoren (/sys/bus/w1/devices/.../w1-slave) in der CRC-Prüfung "No".


    Meine Beschaltungssituation unterscheidet sich vom TO allerdings wie folgt:

    Ich bin hier der Anleitung des FHEM-WIKI (Link) gefolgt. Zitat: "...Besser man verwendet einen aktiven Pegelwandler..."

    Ich fand diese Lösung auch sauberer, als mit den Spannungsteilern, die stets von Faktoren wir Sensoranzahl und Kabellänge abhängig sind.

    Also habe ich mir lt. angehängtem Schaltplan einen Pegelwandler gebastelt und meine Sensoren daran angeschlossen.


    Ich habe auch schon versucht in der /boot/config.txt einen Eintrag zu setzten (dtoverlay=w1-gpio,pullup=0), um den Pullup-Widerstand zu deaktivieren, da ich mit der Schaltung ja ohnehin hochohmig bin und somit kaum ein Strom über den GPIO fließen dürfte.

    Allerdings auch ohne Erfolg.


    VDD und GND beziehe ich von den jeweiligen Pins des Raspi (mit 3A-Netzteil)

    1-W (3,3V) der Hilfsschaltung (=Source-Ader des Mosfets) gehet auf GPIO4.


    Würde mich freuen, wenn mir von Euch jemand helfen könnte.

    Vielleicht ist es ja nur ein Einstellungsproblem am Raspi?

    Ich habe bisher nichts weiter angepasst, als in der Raspi-config den Eindraht-Bus (und den I2C-Bus - das ist aber eine andere Geschichte) zu aktivieren und die oben genannte Einstellung in der config.txt auszuprobieren.


    Danke schon mal vorab für Eure Hilfe!

    Bilder

    HW: Raspberry PI 3 B+ / 3A-Netzteil / 32 zusätzliche GPIOs über 2x MCP23017 / 4 Relaiskarten zu je 8 Relais / 1-Wire (in Arbeit)

    SW: Raspbian Stretch (4.14.52-v7+) / Python-Programmierung per Geany 1.29 bzw. Thonny 2.1.16

  • die Widerstände sind zu hochohmig, verringern auf 1,5k oder den Pegelwandler weglassen und an 3,3V betreiben und evtl. bis 1k(820 OHM) runtergehen.

    lasst die PIs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr

  • Danke für die rasche Antwort!


    Dann werde ich mal die beiden 4,7k austauschen. Kann der 10K bleiben?


    Rein für's Verständnis:

    Über einen Pegelwandler ist es doch möglich mehr Sensoren an längeren Leitung stabil zu betreiben.

    Oder bin ich da falsch?

    Den Pegelwandler habe ich nämlich aus 2 Gründen vorgesehen:

    1) Die 10 DS18B20 sind erst der Anfang: In Zukunft sollen noch ein paar Luftfeuchtefühler und digitale Eingänge mittels DS2406 folgen.

    2) Mit der Lüftungssteuerung möchte ich bereits für mein nächstes Projekt vorarbeiten: Ein Raspi für Heizungssteuerung (2 Wärmeerzeuger, Puffer, Boiler, 2 therm. Solaranlagen,...), der dann > 30 Sensoren (DS18B20 und DS2406) mit Kabellängen bis zu 60m schaffen müsste.

    HW: Raspberry PI 3 B+ / 3A-Netzteil / 32 zusätzliche GPIOs über 2x MCP23017 / 4 Relaiskarten zu je 8 Relais / 1-Wire (in Arbeit)

    SW: Raspbian Stretch (4.14.52-v7+) / Python-Programmierung per Geany 1.29 bzw. Thonny 2.1.16

  • Rein für's Verständnis:

    Über einen Pegelwandler

    a Horse is a Horse? (kennt das noch jemand?)

    >Über einen Pegelwandler ist es auch möglich die Impulse soweit zu "versauen" das nichts mehr funktioniert.

    lasst die PIs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr