10 Temp-Sensoren an 30m Onewire Kabel

Moin!

Ich habe 10 Stück DS18B20 Temperatursensoren auf den letzten 10m eines 30m langen geschirmten 2x2x0,8 Kabels. Mein Mega bekommt aber keine Daten. Angeschlossen sind sie mit 5V, Masse, Daten mit 4k7 PullUp-Widerstand. Lokal, also mit kurzem Kabel angeschlossene Sensoren funktionieren normal, also die Software auf dem Arduino ist ok.

Ich habe folgendes erfolglos versucht

  • 3,3 V oder 5V
  • parasitär geht auch nicht
  • hab den Widerstand auf 2k35 verringert
  • habe auch den search, also die Sensoren-Suche weggelassen und die Sensoren direkt über die Adresse angesprochen, ich bekomme entweder 0 (mit 4k7) oder -127 (mit 2k35) als Werte.
  • wenn meine lokalen Sensoren dran sind und ich zusätzlich nur das lange Kabel (also ohne Sensoren) dazunehme, sind meine lokalen Sensoren auch weg.

Mit einem USB-1wire Converter von Denkovi klappt das Auslesen vom PC aus ganz stabil mit allen 10 Sensoren, auch mit dem langen Kabel. Also sind das Kabel und die Sensoren auch ok.

Was hat der Konverter, das der Arduino nicht hat? Was mache ich falsch??

Geh mal runter auf 1k. Je nach Kabel kann einfach die Kapazität zu groß sein, da hast Du einen so gewaltigen Tiefpass dass alle Daten untergehen. Kannst auch mal ein Scope dranhängen, ob noch was von den Datenflanken zu sehen ist.

Hallo, du musst den Pullup verteilen. d.h. an jeden deiner 10 Sensoren einen 47k Widerstand zwischen + und D. Und du solltest die Stromversorgung zusätzlich mit Kondensatoren entstören. Ganz hinten am Bus einen 100µF und an jeden Sensor 100nF zwischen + und - Wenn das nicht reicht, dann nimmst du für Minus und D ein Antennenkabel(sehr kleine Kapazität) oder wenigsten für einen Teil deiner Busleitung

PS: habs bei mir so gemacht. Grüße an alle Schwarzseher und Dauernörgler ;)

ar182: PS: habs bei mir so gemacht. Grüße an alle Schwarzseher und Dauernörgler ;)

Die Praxis schlägt an Funktionalität oft die Theorie - ausprobieren hilft oft.