Mehrere Sensoren an 1-Wire machen Probleme

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Die 5V machen wie du sagst nichts - hat aber nichts damit zu tun, dass die GND nicht mehr durch die Sensoren verbunden sind: DU musst für einen reibungslosen Betrieb die GND der 5V und der 3V3 verbinden, falls dies nicht ohnehin der Fall ist (wie z.B. bei den 3V3 des Raspberry und 5V vom USB Port des Raspberry). Die +5V liegen ja "in der Luft", wenn Du keine Sensoren hast - die gehen ja nur zu den Sensoren...

    Ohne Sensoren fließt über den Widerstand nur ein Strom gegen Masse, wenn Du den GPIO aktiv gegen Masse schaltest. Ist der GPIO als Eingang konfiguriert zieht der Widerstand diesem auf die 3V3 und die beiden Potentiale sind gleich => es fließt (so gut wie) kein Strom...

    Ich hoffe ich habe mich verständlich ausgedrückt?

    ...wenn Software nicht so hard-ware ;) ...

    Freue mich über jeden like :thumbup:

  • Ich hoffe ich habe mich verständlich ausgedrückt?

    Danke verstanden.

    Ohne Sensoren fließt über den Widerstand nur ein Strom gegen Masse, wenn Du den GPIO aktiv gegen Masse schaltest.

    Ich nehme an, das passiert dadurch, dass man einen GPIO als Input oder Output definiert. Da der GPIO für die Temperaturmessung auf Input konfiguriert ist, ist er gegen Masse geschaltet, oder?

    Langsam verstehe ich ein wenig mehr ... ist aber noch sehr begrenzt.

    Letzte Frage deshalb: Was passiert, wenn ich die 3,3V und die 5V des Raspberries miteinander verbinde? Oder ganz extrem: Was passiert, wenn man den Pluspol von 10.000V Gleichstrom-Laborgerät mit dem 3,3V-Ausgang des Raspberries verbindet und GND des Laborgerätes mit GND des Raspberries?

    Ich vermute nichts, da nichts gegen Masse läuft (oder drücken die 10.000V in die 3,3V und der Raspberry verprutzelt) :)

  • Die Versorgungsspannung der Sensoren darf nur 3V3 betragen, nicht 5V!

    Das ist so nicht ganz richtig. Die Versorgungsspannung kann mit dem 3V3 Bus ruhig 5V betragen. Wichtig ist, dass der Pullup von der Busleitung gegen +3V3 geht. Der DS 18B20 zieht mit opendrain auf Masse. Also die Betriebsspannung ist nicht das Problem. Der Widerstand müsste für 12 DS18B20 auf 400 Ohm gesenkt werden, das wäre optimal. Der GPIO verträgt das auch. Der Hinweis auf das Dokument AN4255.pdf ist genau richtig. Der 4k7 steht in vielen Anleitungen nur, weil er ein einigermaßen guter Wert für die damals im Kernel begrenzte Anzahl von 10 Sensoren war. Was aber auch nur bei sehr kurzen Leitungen der Fall war. Also Lösung ist die Verringerung des Pullups gegen 3,3V. Aber Achtung ca. 200 Ohm ist Ende der Fahnenstange für einen GPIO!

  • Ein Widerstand >=200 Ohm ist auf jeden Fall sinnvoll. Und die Sensoren werden kaum weniger erfordern.

    Aber die letzte Aussage wird der Sache nicht ganz gerecht. So lange der GPIO als Eingang geschaltet ist, kannst du ihn im Prinzip auch ohne Widerstand auf 3,3 V legen. Der Widerstand wird vielmehr als Schutz gebraucht, für den Fall, dass der GPIO versehentlich (Programmfehler, falschen Programm gestartet) oder während des Bootens oder aus welchem Grund auch immer als Ausgang geschaltet wird. Wenn er dann low ist, versucht er den Strom von 3,3 V gegen GND zu ziehen. Bei 200 Ohm sind das 16 mA, was die Grenze für den GPIO ist. Deshalb sollten immer allermindestens 200 Ohm vor dem GPIO liegen.

    Oh, man kann hier unliebsame Nutzer blockieren. Wie praktisch!

  • Ich nehme an, das passiert dadurch, dass man einen GPIO als Input oder Output definiert. Da der GPIO für die Temperaturmessung auf Input konfiguriert ist, ist er gegen Masse geschaltet, oder?

    Ein Eingang ist normalerweise hochohmig - es fließt also (so gut wie) kein Strom in den GPIO. Es fließt nur Strom, wenn Du den GPIO als Ausgang konfigurierst und auf low schaltest. (...oder PullDown Widerstände konfigurierst, falls dies möglich ist - aber vergessen wir das mal) 


    Langsam verstehe ich ein wenig mehr ... ist aber noch sehr begrenzt.

    Letzte Frage deshalb: Was passiert, wenn ich die 3,3V und die 5V des Raspberries miteinander verbinde? Oder ganz extrem: Was passiert, wenn man den Pluspol von 10.000V Gleichstrom-Laborgerät mit dem 3,3V-Ausgang des Raspberries verbindet und GND des Laborgerätes mit GND des Raspberries?

    Ich vermute nichts, da nichts gegen Masse läuft (oder drücken die 10.000V in die 3,3V und der Raspberry verprutzelt) :)

    Wenn Du die 3,3V und die 5V des Raspberry verbindest, werden die 3,3V auf 5V angehoben und alles was mit den 5V nicht umgehen kann stirbt - schlechte Idee. Das Gleiche passiert bei 10.000V: Die 3,3V werden auf 10.000V angehoben - bei entsprechender Leistung schlägt die Spannung über und alles brennt ab...

    Der Widerstand müsste für 12 DS18B20 auf 400 Ohm gesenkt werden, das wäre optimal. Der GPIO verträgt das auch.

    Ich bin der Meinung, dass bei externer Versorgung der Sensoren an Vdd die 4K7 weiterhin optimal sind. Es soll ja immer nur 1 Teilnehmer am Bus aktiv sein und deshalb ist es egal ob 1 oder 10 dran hängen. Will man die Sensoren über den Datenpin mit Strom versorgen, dann muss man den Widerstand entsprechend verringern. Das ist aber hier nicht der Fall und daher nur verwirrend. Da im Datenblatt des DS18B20 der Sink-Current mit min. 4 mA angegeben ist, kann es ab einem PullUp unter ca. 800Ohm (3,3V/0,004A) passieren, dass der Sensor nicht mehr zuverlässig auf Masse ziehen kann und somit die Kommunikation problematisch wird.

    ...wenn Software nicht so hard-ware ;) ...

    Freue mich über jeden like :thumbup:

  • Ich denke, mit zunehmender Leitungslänge und zunehmender Zahl an Sensoren steigt die Kapazität des Gesamtsystems an. Ein Sensor muss also mehr Ladung gegen GND ziehen, um ein Signal zu senden. Das würde sogar für einen größeren Widerstand sprechen. Allerdings geht das runterziehen der Spannung gegen GND ziemlich ratzfatz, denn da ist ja kein Widerstand. Ob der Pullup 400 oder 4000 Ohm hat, ist da wohl ziemlich egal.

    Andererseits muss durch den Pullup die Spannung ja auch wieder schnell genug auf 3,3 V gezogen werden, wenn der Sensor nicht mehr auf GND schaltet. Um dann das gesamte System wieder mit Ladung zu versorgen, darf der Widerstand nicht zu groß sein. Ich gehe mal davon aus, dass deshalb der Widerstand bei ausgedehnten Systemen kleiner gewählt wird. Schließlich muss eine gewisse Flankensteilheit erreicht werden, damit das Timing noch stimmt.

    Wenn ich das Datenblatt richtig verstehe, hat der BME280 eine Buskapazität von 400 pF. Bei 20 Stück also 8 nF. Die RC-Zeitkonstante bei 4,7KOhm ergibt dann 38 µs. Das Timing des OneWire sieht aber für eine logische 0 maximal 15 µs vor. das würde dann schon mal schiefgehen. Bei 400 Ohm ist die Zeitkonstante 3 µs - das ginge dann wieder. Angeblich kann man bis zu 100 Sensoren anschließen. Das entspräche einer Kapazität von 40 nF und gäbe bei 200 Ohm eine Zeitkonstante von 8 µs - könnte in der Tat noch funktionieren.

    PS: Die 4 mA Sink Current des DS18B20 sind der Minimumwert und gelten bei 0,4 V, wenn ich das richtig verstehe...

    Oh, man kann hier unliebsame Nutzer blockieren. Wie praktisch!

    Einmal editiert, zuletzt von Gnom (5. Februar 2018 um 21:53)

  • Wenn Du die 3,3V und die 5V des Raspberry verbindest, werden die 3,3V auf 5V angehoben und alles was mit den 5V nicht umgehen kann stirbt - schlechte Idee. Das Gleiche passiert bei 10.000V: Die 3,3V werden auf 10.000V angehoben - bei entsprechender Leistung schlägt die Spannung über und alles brennt ab...

    Es ging um den Fall, wo keine Verbracher hinter den 3,3 und 10.000V angeschlossen sind, also wie ich schrieb, lediglich die 3,3 und 10.000V miteinander verbunden werden (und deren GND natürlich auch) ... was passiert dann? Danach fragte ich.

  • Spannung ist nichts anderes als ein Ungleichgewicht von Ladungen, das durch einen Stromfluss versucht sich auszugleichen.

    Von +10.000 zu GND fließt ein Strom - je nachdem, was dazwischen ist, fließt mehr oder weniger und bewegt einen Elektromotor oder lässt einen unvorsichtigen Handwerker zu einem Stück Kohle verbrutzeln.

    Bei 3,3 V zu GND ist es ähnlich. Nur ist der Strom geringer, weil schon der Hautwiderstand des besagten unvorsichtigen Handwerkers den Strom auf harmlose Größen beschränkt.

    Von 10.000 zu 3,3 ist fast der gleiche Unterschied wie von 10.000 zu GND. Auch hier wird also ein Strom fließen, bis auf beiden Seiten die gleiche Spannung erreicht ist (was bei einem Netzteil nicht so schnell passiert, weil es ja aus dem AKW reichlich Nachschub bekommt - eine 10.000 Volt Mignonzelle wäre aber nach einiger Zeit auf 3,3 V entladen und der Stromfluss würde aufhören).

    Wenn der Pi robust genug wäre, hättest du schlicht auf allen stromführenden Teilen des Pi 10.000 volt. Er wird sich aber ganz sicher unter einem hässlichen Geräusch zersetzen.

    GND ist nur eine Definition - Wenn den ganzes Haus auf 3,3 Volt aufgeladen ist, weil es auf einer Wasserader steht oder so (Esoteriker vor!), und dein Pi geerdet ist, dann ist GND bei dir sozusagen 3,3 V (gemessen gegen das Haus deiner Großmutter, das NICHT auf einer Wasserader steht). GND ist immer da, wo der "Minuspol" deiner Geräte angeschlossen ist. Da die ganze Welt über mehr oder minder feuchtes Erdreich verbunden ist, herrsch sozusagen überall mehr oder minder ein "Null"-Niveau, das eben GND darstellt.

    Oh, man kann hier unliebsame Nutzer blockieren. Wie praktisch!

  • Ich bin der Meinung, dass bei externer Versorgung der Sensoren an Vdd die 4K7 weiterhin optimal sind.

    Meine Meinung wollt ihr gar nicht hören, weil Meinungen nicht weiterhelfen. Nun hat der "Erfinder" von 1wire schon extra eine Abhandlung über die Stromversorgung und die Dimensionierung des Pullups veröffentlich und keinen interessiert es. Also 4k7 ist nur ein Anhalt.

    https://pdfserv.maximintegrated.com/en/an/AN4255.pdf

  • Also, wenn Du mich schon so komisch anmachst, mache Dir bitte auch die Mühe den gesamten Satz zu verstehen. Es geht hier nicht darum die Sensoren über den Datenpin mit Strom zu versorgen, sondern es wird eine externe VDD angelegt - die Frage war ob 3,3V oder 5V - dazu müsste man halt mehrere Beiträge lesen um das zu verstehen. Ich habe extra geschrieben bei EXTERNER Versorgung, um solchen Einwänden vorzubeugen und ich habe meine Meinung auch begründet... Egal, ich bin raus - der Themenersteller hat genügend Infos und offensichtlich viel erfahrenere one-wire Anwender als mich.

    Aussagen wie diese verderben einem die ganze Freude daran, wenn man anderen weiter zu helfen versucht.

    ...wenn Software nicht so hard-ware ;) ...

    Freue mich über jeden like :thumbup:

  • Diese "Abhandlung" bezieht sich wohl ausschließlich auf die parasitäre Stromversorgung und ist deshalb für die hier gegebene Anwendung relativ wenig nützlich. Und wenn ich es richtig verstehe, geht es auch nur um den zusätzlichen Bedarf stromhungriger Geräte. Von der richtigen Auswahl des Pullup-Widerstandes in Abhängigkeit von Leitungslängen und Anzahl der Sensoren ist hier nirgends was zu finden.

    Insofern völlig nachvollziehbar, dass das keinen interessiert. ;)

    Oh, man kann hier unliebsame Nutzer blockieren. Wie praktisch!

  • Zitat

    Some 1-Wire devices offer extended features, which include EEPROM, temperature measurement, and a SHA-1 engine. Operation of these special features can require additional power, so the 1-Wire device's pull-up resistor (RPUP) must be sized accordingly.

    Allein schon.

    Zitat

    For most parasitic-powered 1-Wire devices, the minimum operating voltage (VPUP) is 2.8V.

    Diese Information betrifft die Spannungsversorgung bei parasitärem Betrieb. Leistungsaufnahme (power) auf dem Bus ist sowohl bei parasitärem als auch bei "normalen" Betrieb zu berücksichtigen. Damit auch die Größe des Pullup.

    Falls es wirklich jemanden interessiert wie man saubere Busse mit 1w hinbekommt:

    https://www.maximintegrated.com/en/app-notes/index.mvp/id/148

    Und wer dann wirklich Profi werden möchte: https://www.maximintegrated.com/en/sitesearch.external.html?sp_q=1%2Dwire%20power%20ds18b20&_charset_=UTF-8

  • Ulkig, dass hier manche Leute sagen, es macht quasi keinen Unterschied, ob ein bisschen Vdd und ein paar mA zusätzlich auf die Datenleitung gehen oder nicht, während andere mir schon erklärt haben, dass die Kapazität einer SMD-LED eine Schaltung instabil macht...

    Vielleicht kann ein anwesender Experte und mal von seinen praktischen Erfahrungen mit meterlangen Leitungen und mehr als 10 Sensoren berichten. Probieren geht letztlich über (Datenblätter) studieren.

    Oh, man kann hier unliebsame Nutzer blockieren. Wie praktisch!

  • Nun dann bin ich mit 15 Sensoren in gemischter Topologie und insgesamt ca. 120m Kabellänge vielleicht gut genug? Also extra Stromversorgung 5V. Pullup 620. Saubere Kabelübergänge, auf keinen Fall geschirmt (Kapazitätsproblem, dadurch keine steilen Flanken). Vcc und GND getrennt (10mm) zum Bus verlegt. wenn Zusammen, dann verdrillt. An jedem Sensor 100nF zwischen Vcc und GND.

    Steht tatsächlich alles in den Dokumenten zum 1-wire Bus.

  • Da fragt man sich, warum du mit deinem Wissen so lange hintern Berg hältst. Das hättest du ja schon mal am Montag einbringen können.

    Oh, man kann hier unliebsame Nutzer blockieren. Wie praktisch!

  • Da fragt man sich, warum du mit deinem Wissen so lange hintern Berg hältst.

    Manchmal glaubt man, ein Denkanstoß reicht aus, manchmal fehlt die Zeit und dann hatten wir auch die DS18B20 Thematik schon so oft durch. Es gibt nur ein Thema, was das noch schlägt und das sind die Fragen zum Relais :angel:

  • Hallo,

    Hab den Thread etwas verfolgt.
    Ich habe im Haus 3 Stränge (UG, EG, OG) mit jeweils ca. 10 Sensoren in Serie (bzw. aktuell noch CAT 5 von Sensor zu Sensor).
    Leitungslänge jeder der 3 Stränge ca. 50m, Abstand der Sensoren: 3m.

    Ist hier der RaspberryPi geeignet mit dem GPIO Port ? Falls ja, wird vermutlich nichtmal die Spannung der Datenleitung reichen für die Versorgung oder ?
    (Externe Versorgung würde ich auf alle Sensoren führen und Ground mit Ground Raspi verbinden).


    Oder soll man in dem Fall auf den DS9490R ausweichen mit externer Spannung?

    danke,

Jetzt mitmachen!

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