1-Wire mehrere Sensoren

  • Leider werde ich frühestens am Wochenende dazukommen, die angepassten Widerstände einzulöten.

    Dann wird es sich weisen, ob mein Pegelwandler so funktioniert, wie er sollte.


    Vielleicht noch kurz zu den Einstellungen am Pi:

    dtoverlay=w1-gpio,pullup=0 oder 1?

    Wie gesagt: theoretisch wäre ja kein Pullup mehr nötig, oder?

    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

  • theoretisch wäre ja kein Pullup mehr nötig,

    eher praktisch statt theoretisch

    Dann wird es sich weisen, ob mein Pegelwandler so funktioniert, wie er sollte.

    wenn nicht, Pegelwandler zumindest für die DS18B20 Sensoren rauswerfen und optimal VCC an 3,3V und pullup nach Bedatf von 1,5k über 1k bis minimal 820 Ohm verringern.

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

  • Zitat: "...Besser man verwendet einen aktiven Pegelwandler..."

    Bei solchen Aussagen krieg ich einen Hals! Pegelwandler sollen dort eingesetzt werden, wo es notwendig ist. Z.B. um Busse wie I²C oder SPI von 3V3 auf 5V zu bekommen. Bei 1wire ist das purer Unsinn. 1wire basiert auf dem Prinzip des Pulldowns eines offenen Kollektors. Dabei wird die Datenleitung auf Masse gezogen, um Informationen zu übertragen. Der Pullup hat die Aufgabe die Datenleitung auf high zu halten. Erst wenn was passiert wird am Sensor in einer Bitfolge auf low gezogen. high und low sind dabei unabhängig von der Betriebsspannung beim DS18B20 wird alles unter 0,8V zu low und alles über 2,2V zu high. Die Busspannung kommt vom Raspberry und ist, ich sag es noch einmal, völlig unabhängig von der Betriebsspannung!

  • Bei 1wire ist das purer Unsinn

    Danke für die klaren Worte!

    Dann schmeiß ich also den Pegelwandler komplett raus und werde den "konventionellen" Weg gehen.

    nach Bedarf von 1,5k über 1k bis minimal 820 Ohm

    Ich werde mir eine Schaltung mit einem 2k Trimmpoti und einen 820Ohm Festwiderstand in Serie zusammenlöten - dann kann ich am einfachsten meine Schaltung entsprechend der eingesetzten Sensoren und Kabellängen anpassen.


    Danke für Eure Hilfe!

    Schönes Wochenende!

    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

  • 2k Trimmpoti und einen 820Ohm Festwiderstand in Serie zusammenlöten

    So eine Lösung benutze ich auch. Benutzt Du für die 5V für die Sensoren ein eigenes Netzteil? Das wäre von Vorteil. Leider schlagen Signale von den GPIOs ziemlich leicht durch. Das heißt sie beeinflussen Signale anderer GPIOs und auch die Betriebsspannung. Das liegt natürlich ein wenig an der Qualität der verbauten Teile auf der Platine. Deshalb sollte man beim Drumherum solide arbeiten und am besten den Raspberry sowohl in der Betriebsspannung als auch bei der Stromentnahme aus den GPIOs ziemlich in Ruhe lassen. 1wire ist im aktiven Zustand schon eine Herausforderung. Es können da pro Sensor (DS18B20) je nach Betriebsart bis zu 4 mA gezogen werden.

  • Ich werde mir eine Schaltung mit einem 2k Trimmpoti und einen 820Ohm Festwiderstand in Serie zusammenlöten - dann kann ich am einfachsten meine Schaltung entsprechend der eingesetzten Sensoren und Kabellängen anpassen.

    nun ja, den R gibt es ja nur einmal auf dem Bus, Potis neigen zum Aussetzen, also nach Abgleich durch Fest R ersetzen, wobei Bauteile altern oder "einlaufen" (run in) und deswegen ein knapper Abgleich sinnlos ist und nicht zu empfehlen will man nicht irgendwann nachjustieren, doof halt wenn man nicht daheim ist!

    Besser nach Abgleich und OK die nächste deutlich niedrigere Stufe wählen, also bei 1,5K -> 1k, bei 1k -> 820 Ohm (an 3,3V).

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

    Einmal editiert, zuletzt von jar ()

  • Benutzt Du für die 5V für die Sensoren ein eigenes Netzteil

    Aktuell bin ich ja noch in der Exmerimentierphase.

    Deshalb hängt das Netzteil noch direkt am Raspi, der dann die 1-Wire Versuchsschaltung speist. Diese schaut mittlerweile so aus:

    Nur dass eben der 4,7k-Festwiderstand ein 2k Trimpoti ist.

    Alle 10 Stück DS18B20 hängen parallel an 5V (VDD) und GND. Die DQ-Adern habe ich über eine Kodierschalter verbunden, um mir das ständige an und abklemmen beim Experimentieren zu ersparen.


    Für den späteren Dauereinsatz habe ich mir eine Zwischenplatine gelötet mit 2 St. MCP23017, um meine 4 Relaiskarten anzusteuern, die bis vor kurzem auch noch einen Pegelwandler beinhaltete.

    Die MCP23017 haben in Verbindung mit den Relais gut funktioniert und sind momentan wieder deaktiviert (IC aus der Halterung gezogen).


    Wenn alles fertig ist, wird das Netzteil (5V-3A) direkt auf der Platine angeschlossen, um die Relaiskarten und VCC des 1-Wire-Bus möglichst direkt mit Strom zu versorgen. Von der Platine geht es dann zum Micro-USB des Raspi, da mir persönlich der Weg über den 5V-Pin etwas zu riskant ist.

    Alle GPIOS des Raspi (mit Ausnahme des I²C und 1-Wire) werden dann ausschließlich Eingänge (Taster) sein, was die Wechselwirkung untereinander in Grenzen halten dürfte.


    Besser nach Abgleich und OK die nächste deutlich niedrigere Stufe wählen

    Den Tipp werde ich auf jeden Fall beherzigen, wenn erst mal alle Fühler erkannt werden.

    Wenn du mir die blöde Frage entschuldigen magst: Woher kommt eigentlich die Abstufung (1k5, 1k, 820), wie du sie vorschlägst?



    Ganz kurz OT zu den Relais:

    26 St. sind für Rollos (Auf/Zu), 4 St. für Luftklappen (Auf/Zu) - also sind im schlimmsten Fall 17 Relais gleichzeitig angezogen - sonst würden die 3A des Netzteils wohl nie reichen.

    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

  • Wenn du mir die blöde Frage entschuldigen magst: Woher kommt eigentlich die Abstufung (1k5, 1k, 820), wie du sie vorschlägst?

    nun ja, Feld-Wald&Wiesenwerte, üblicherweise aus der E-12 Reihe

    1k5 1k2 1k 820 Reihe


    1. Bedingung, die Ströme dürfen beide nicht überlasten ca. 3mA am PI bei 3,3V eben 1k (gilt auch für de DS in Grenzen) -> 820 Ohm ist eine tolerierbare Überschreitung wenns nötig ist weil die 3.3V vom PI eben weniger Spannung haben.

    2. Bedingung Kabelkapazität (Abhängig von der Länge & Umladezeit der Leitungen für eine sichere Erkennung von low nach high)


    2,2k an 5V waren für 1 Jahr bei mir OK mit ca. 72m Kabel, dann stiegen die ersten Sensoren aus, also ging ich um 2 Stufen 1k8 zurück auf nun sichere 1k5 also gute 3mA an 5V (Atmel AVR)


    Ich hätte auch Werte aus der E192 Reihe wählen können nur das war mir zuviel Text und diese gibt es nicht an jeder Tankstelle!

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

  • Update:

    Ich habe mich nun ein wenig durchgetestet:

    Ich bin bei (gemessenen) 1,8k am Poti gestartet. Dabei wurden max. 3 Fühler erkannt (egal welche Fühler ich verwendete)

    Bei 1,4k waren es 4 Fühler, bei 1k 6 Fühler und bei 830Ohm dann schließlich 8 Fühler.


    jar : weiter runter kann ich ja lt. deiner Erklärung nicht mehr - dann gehen defintiv also nicht mehr als 8 Fühler pro GPIO?


    Kurios bei der Sache ist allerdings:

    Wenn ich bei der jeweiligen Konfiguration einen Fühler zuviel aktiviert hatte, ging gar nichts mehr. Auch nach einem Neustart des Raspis nicht!

    Ich musste dann erst aller Sensoren deaktivieren und die 3,3V sowie den GPIO wieder abklemmen, etwas warten und dann wieder anschließen.

    Kann sich das wer erklären?

    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

  • bei 830Ohm dann schließlich 8 Fühler.


    jar: weiter runter kann ich ja lt. deiner Erklärung nicht mehr - dann gehen defintiv also nicht mehr als 8 Fühler pro GPIO?

    irgendwie ist dein Kabel Mist oder deine Verkabelung, das kann ich von hier nicht prüfen, erst recht nicht am PI.


    Die genannten 820 Ohm für mehr als 8 Sensoren am PI stammen von einem anderen User.

    Wieviel Meter Kabel ud welches hast du denn installiert?

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

  • Waren die Codierschalter schon immer im Spiel?

    gute Frage, das scheint mir alles sehr Verdächtig, ich nutze Wago 221 zum schnellen an- & abklemmen

    https://www.wago.com/221/de/


    eine Frage wurde mir immer noch nicht beantwortet, kennt hier jemand Mr.Ed?


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

  • eine Frage wurde mir immer noch nicht beantwortet, kennt hier jemand Mr.Ed

    Ja. Auch ich kenne das Pferd noch ;)!

    Mein Nick soll zwar eine Anspielung auf die Rockgruppe sein, kommt aber eigentlich von meinem Vornamen (Edwin - kurz: Ed)

    So jetzt aber wirklich zurück zum Thema:


    irgendwie ist dein Kabel Mist oder deine Verkabelung

    Du hast recht.

    Die Verkabelung war mist - Ich hatte die Fühler über Potenzialsammelklemmen verbunden, bei welchen die Kabel (im Normalfall) nur eingesteckt werden müssen.

    Bei näherer Betrachtung habe ich dann bemerkt , dass sich trotz großer Sorgfalt beim Einstecken viele der Ader nach etwas Bewegungen einfach aus den Klemmen ziehen ließen.


    Nun ist die gesamte Verkabelung neu:

    VCC und GND der Fühler hängen jetzt an geschraubten Potenzielsammelschienen.

    Die Datenleitungen der Fühler sind über eine Lusterklemmenreihe mit den Dip-Schaltern (qualitativ hochwertige) verbunden.

    Die einzigen Steckverbindungen sind die am Raspi.

    Alle restlichen Verbindungen sind gelötet.


    Waren die Codierschalter schon immer im Spiel?

    Nein, die sind neu, da ich mich beim Ab- und Anklemmen der Fühler immer ärgern musste und die Kabel wurden davon auch nicht besser.

    Der Vorschlag von Jar mit den WAGOs klingt aber gut - werde ich auch noch versuchen.


    Das Trimpoti steht momentan auf exakt 1k und es sind 6 Fühler angeschlossen.

    Als Fühler sind vorkonfektionierte (mit Edelstahlgehäuse) mit einer Kabellänge von 1 Meter (Kabellänge bis zum Raspi also max. 1,5m) im Einsatz.

    Das Problem mit dem Bus, der, wenn er mal weg ist, von alleine nicht wieder kommt, besteht aber immer noch:

    Starte ich den Raspi (aus stromlosem Zustand), wird kein einziger Fühler mehr erkannt - egal, wieviele angeschlossen sind, oder ob diese Kunfiguration vor dem Shutdown bereits funktioniert hat!

    Erst wenn ich den 1-W-Bus abklemme (manchmal reicht es, den GPIO4 abzuklemmen, machmal müssen auch 5 und 3,3V weg), etwas warte und wieder anschließe, sind die Fühler wieder da.

    Das selbe ist nötig, wenn ich einen Fühler zuviel (also in der aktuellen Konfiguration 7 Stück) aktiviert hatte.



    Update:

    Habe eben die Codierschalter rausgeworfen und WAGOs eingesetzt.

    Dabei ist mir aufgefallen, dass sich der Bus am leichtesten wiederherstellen lässt, wenn ich einen neuen Fühler anklemme!

    Der Ablauf:

    Raspi mit 3 angeklemmten Fühlern (=1 WAGO) starten -> kein Fühler wird erkannt

    3 weitere Fühler (=1 weiterer WAGO) anklemmen -> die Fühler tauchen nach und nach auf

    dabei ist es wieder unerheblich, welche Fühler ich wann anschließe.

    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

    Einmal editiert, zuletzt von Mr.Ed ()

  • In der Tat: Sehr interessanter Artikel!


    Dort gibt es übrigens auch den Schaltplan eines "FET-Drivers" (mittels eines MosFETs), um die Performance für lange Leitungen (bis zu 200m) zu erhöhen.

    Vielleicht wäre diese Schaltung für den späteren Einsatz doch noch eine Option.


    Außerdem wird dort auch beschrieben, dass eine Stern-Topologie mit gleich langen Stubs, welche meinem Versuchsaufbau entspricht, problematisch sein kann.

    Deshalb habe ich noch versuchsweise die Topologie geändert.

    Allerdings wieder ohne Erfolg.


    Langsam vermute ich, dass es irgendwas am Raspi sein muss, da da Fehlerbild immer das gleiche bleibt - egal was ich am 1-Wire verändere.

    Vielleicht fehlt ja einfach irgendwo eine Einstellung?

    Das einzige was ich angepasst habe: Das # vor dem Eintrag in der /boot/config.txt : "dtoverlay=w1-gpio" zu entfernen.

    Die Datei /sys/bus/w1/devices/w1_bus_master1/w1_Master_pullup enthält den Wert 1

    Ist das OK?

    Oder muss sonst noch was angepasst werden?

    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

  • Der 1wire-Bus ist nicht gut auf Klemm- und Schraubverbindungen oder Schalter, egal wie hochwertig zu sprechen. Ich würde immer wenn möglich feste (Steck)Verbindungen nehmen.

    also sorry ich kenne mehr schlechte "feste (Steck)Verbindungen" als schlechte Wago Federklemmen, ich kann natürlich nur aus meiner Erfahrung im aktiven Dienst sprechen.

    Die Datei /sys/bus/w1/devices/w1_bus_master1/w1_Master_pullup enthält den Wert 1

    sollte eigentlich nicht stören hilft aber auch nichts denn ide internen pullups um 50-100k Ohm bewirken bei echten R mit 1-2k keinen Mehrwert, im Gegenteil, Terminierung und pullup sollten am Ende der langen Leitung sitzen um die Kabelkapazität schnell umzuladen also am letzten DS18B20 denn der DS funkt ja sein Telegramm nach low raus und da muss es schnell wieder auf high gehen, nicht am PI

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

  • also sorry ich kenne mehr schlechte "feste (Steck)Verbindungen" als schlechte Wago Federklemmen

    Ich auch, aber es geht nicht um schlecht und gut oder locker und fest, sondern um flach und parallel.

    Die Datei /sys/bus/w1/devices/w1_bus_master1/w1_Master_pullup enthält den Wert 1

    Ist das OK?

    sollte eigentlich nicht stören hilft aber auch nichts denn ide internen pullups um 50-100k Ohm bewirken bei echten R mit 1-2k keinen Mehrwert

    Hat beides nichts miteinander zu tun. Der Wert in w1_Master-pullup muss 1 sein. Das ist treiberintern und bedeutet, dass ein Pin (am RasPi, mit neuer Firmware ja auch wählbar) mit einem Pullup belegt ist, wo der herkommt ist dem Treiber egal. Es bedeutet nicht, dass der interne Pullup zugeschaltet wird, obwohl die schreibweise das vermuten lässt. Eigentlich ist der Eintrag sinnlos, weil man ja immer einen braucht, scheint aber ein Überbleibsel von älteren Systemen zu sein, wo dieser Eintrag erforderlich für die parasitäre Stromversorgung war. Ist im Quelltext des Treibers hart kodiert, also auch nicht durch ein Overlay änderbar.

  • Eigentlich ist der Eintrag sinnlos, weil man ja immer einen braucht

    da sagst du was.....


    aber so sind Softis (äh Kernelprogger) immer alles komplizieren oder ans Jahr 3000 denken, evtl. hat dann ein PI wählbare pullups von 100k bis 1 Ohm

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