zweiten Bus erstellen

  • Hi!
    Ich hab mehrere DS18B20 an einem Bus liegen, und die funktionieren soweit auch stabil.
    Nun wollte ich den Bus um 20 Meter erweitern, mit einem male werden die Daten der Sensoren nicht mehr übertragen.
    Hab gegoogelt und die Info gefunden, man könnte einen zweiten Bus erstellen, und so das Längenproblem in den Griff bekommen, aber keine weiteren Infos darüber.
    Aktuell habe ich in der /boot/config.txt die Befehlszeile

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

    eingetragen und aktiviere damit den GPIO4.
    Wie kann zusätzlich den GPIO25 einrichten, dass beide GPIO's abgefragt werden?


    greets

  • Hallo.


    Hab gegoogelt und die Info gefunden, man könnte einen zweiten Bus erstellen, und so das Längenproblem in den Griff bekommen, aber keine weiteren Infos darüber.


    ...kenn ich nicht.


    Aktuell habe ich in der /boot/config.txt die Befehlszeile

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

    eingetragen und aktiviere damit den GPIO4.


    deaktiviere den internernen Pullup, und nimm nen externen.
    Der beträgt Standardmäßig 4k7.
    Bei längeren Leitungen durch testen runterschrauben bis ~1,8k (4k7 Poti). Funktioniert bestens bis ~ 100m.
    Evtl. noch abgeschirmtes Kabel verwenden.


    gruß root

    Edited once, last by root ().


  • deaktiviere den internernen Pullup, und nimm nen externen.


    deaktivieren - "pullup=on" weglassen, oder "=off"?


    btw. einen Widerstand zwischen VCC und Data hab ich bereits zuvor eingefügt. Ich werde den mal schrittweise reduzieren und beobachten.


    greets

  • Hallo saxandl.


    am Besten entfernst Du pullup=on vollständig.


    Der externe 4k7 reciht vollkommen aus.


    Beste Grüße


    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

    • Icon-Tutorials (IDE: Geany) - GPIO-Library - µController-Programmierung in Icon! - ser. Devices - kein Support per PM / Konversation

    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.

    Edited once, last by Andreas ().

  • Hallo saxandl


    btw. einen Widerstand zwischen VCC und Data hab ich bereits zuvor eingefügt. Ich werde den mal schrittweise reduzieren und beobachten.


    nichts durcheinanderwerfen ;) ... wenn Du zum intern aktivierten Pullup nen externen Widerstand hinzufügst, hast Du ne Parallelschaltung. Der Gesamtwiderstand ist dann kleiner als der kleinste Einzelwiderstand.
    Der Interne hat ~50K siehe Anhang.
    Aber wie Andreas schon sagte. Den internen deaktivieren, dann hast die volle Kontrolle, und kannst in Ruhe testen.
    Aber die Untergrenze nicht unterschreiten, sonst killst Du was :D ... Der GPIO kann bein 1W Protokoll (auch allgemein) nur begrenzt was gegen Masse ziehen.


    gruß root


  • nichts durcheinanderwerfen ;) ... wenn Du zum intern aktivierten Pullup nen externen Widerstand hinzufügst, hast Du ne Parallelschaltung. Der Gesamtwiderstand ist dann kleiner als der kleinste Einzelwiderstand.
    Der Interne hat ~50K siehe Anhang.
    Aber wie Andreas schon sagte. Den internen deaktivieren, dann hast die volle Kontrolle, und kannst in Ruhe testen.


    Der Parameter pullup schaltet nicht, wie man vermuten könnte einen internen Pullupwiderstand dazu oder weg, insofern ist die Bezeichnung etwas irreführend. pullup teilt dem Raspberry Pi mit, dass die Sensoren am 1wire-Bus parasitär mit Spannung versorgt werden. Der Begriff parasitäre Stromversorgung wird, auch in diesem Forum oft falsch verstanden. Parasitär heißt nicht, dass der Sensor seine Versorgungsspannung von den 5V oder 3,3V des Raspberry Pi bezieht. Das wird nur oft angewendet, weil es sich auf dem Steckbrett gut macht und man kein extra Netzteil benötigt. Es kommt aber der Versorgung mit einer externen Spannungsquelle gleich. Der wirkliche Unterschied zwischen parasitärer und externer Stromversorgung ist, dass bei der parasitären Stromversorgung der Anschluss für die Versorgungsspannung und GND zusammengelegt (praktisch kurzgeschlossen) werden. Dadurch wird die Tatsache genutzt, dass die Datenleitung im pullup gefahren wird, also im Ruhezustand ständig auf + gezogen wird und der Sensor sich einfach intern seine Versorgungspannung daher nimmt, die er dann für die kurze Zeit, wo die Datenleitung wärend der Datenübertragung pulsierend auf GND gezogen wird, zwischenspeichert. Der Parameter kommt also aus dem Zusammenhang, dass die Sensoren auf dem Bus aus der pullup-Spannung der Datenleitung gespeist werden. Der physische Pullup-Widerstand von der Datenleitung gegen 3,3V muss trotzdem angeschlossen werden.


    Also nochmal kurz gesagt, den Parameter pullup auf "on" oder "y" zu setzten, schaltet den internen Pullup am gewählten GPIO nicht ein!

  • Hallo.


    ..... pullup teilt dem Raspberry Pi mit,....


    einem physikalischem Gerät kann ich bis in alle Ewigkeiten etwas mitteilen... es wird sich absult nix tun, solange ich nicht physikalisch eingreife...
    Dieses "mitteilen" aktiviert eben das physikalisch zu/abschalten des internen pull-up/down Widerstandes
    Das defineren eines GPIO's als Eingang mit zugeschateten Pullup muss auch nicht bedeuten dass da jetzt ein 1-wire Protokoll gefahren wird.
    Einfacher Test.
    GPIO als Eingang ohne Pull-up und Pull-down, und einen Draht ~1m an den Pin hängen...da freut sich der Mensch wenn der abgefragte Eingang munter rauf und runterschaltet...

    Edited once, last by root ().

  • Hi!


    Erstmal vielen Dank für die Unterstützung. Ich hab das Problem wie folgt in den Griff bekommen:


    1.) [font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]"pullup=on" weggelassen[/font]
    2.) herkömmliches Litzenkabel durch Kat.5 Netzwerkkabel ersetzt
    3.) einen zweiten Widerstand 4k7 parallel zum ersten geschalten -> somit 2k35


    Verwende übrigens nicht 1-wire, sondern für Vcc, Data, GND in jeweils eine Leitung bzw. ein Leitungspaar des Kat.5 Kabels


    greets