Forum: Mikrocontroller und Digitale Elektronik 1Wire DS18S20 Leitungslänge


von Fred (Gast)


Lesenswert?

Hallo,
habe zur Temperaturmessung (Heizung, Aussen etc.) 3 DS18S20 Sensoren an
einem Mega32 mit 2kOhm Pullup.
Die Leitungslänge betragt zusammen etwa 18m. Beim Anschluss des 4.
Sensors setzen plötzlich zwei andere aus. Gibt es soetwas wie
1Wire-Hubs oder Repeater um die Kabel noch verlängern zu können. Wollte
eigentlich noch weitere Sensoren ins Netz hängen.

Habe jetzt alles auf diesem System aufgebaut und möchte die Sensoren
auch gern weiterverwenden.

Bitte um Hilfe.
Gruss Fred

von A.K. (Gast)


Lesenswert?

Einen Repeater kann man sicher basteln - aber lohnt das? Eine zweiten
Bus aufzumachen wird wohl nicht so schwer sein. Ich hatte den gleichen
Effekt. Freilich musste ich mit einem Sammelsurium an verschiedenen
Kabeln in teilweiser Sterntopologie leben, und war dementsprechend
nicht verwundert, als sich der vierte als einer zuviel erwies.

von Fred (Gast)


Lesenswert?

Ein zweiter Bus ist vorbereitet, aber die neuen Sensoren sind auch
wieder 15 Meter entfernt.
Ich würde gern nach etwa 11 Metern einen Repeater klemmen und von dort
sternförmig weitergehen. Einen weiteren Controller mit Umwandlung in
rs232 uä. möchte ich vermeiden, da ich schon diverse Geräte
(SPS,PCM,AVR,DISPLAY,PC) habe, die alle mit einem eigenen Protokoll
kommunizieren.
Ein "dummer" Verstärker oder ein AVR mit einem einfachen Programm zur
Leitungsverlängerung wäre ideal.

Vielleicht hat schon jemand soetwas gebaut/gesehen.
Fred

von A.K. (Gast)


Lesenswert?


von Philipp Sªsse (Gast)


Lesenswert?

Schon probiert:

1. kapazitätsarmes Kabel nehmen (da ist schnell ein Faktor drei in der
Kabellänge möglich)

2. am Timing rumschrauben, insbesondere vor dem neuen Low-Ziehen der
Leitung dem Pullup-Widerstand genug Zeit lassen, daß auch am Ende des
Kabels die Leitung wieder high geworden ist.

von Michael F. (fury)


Lesenswert?

Bei mir half ein zusätzlicher Pullup am Ende des Kabels.
Inzwischen habe ich etwas über 25 m und 6 Sensoren.

Bei mir machen DS 2408 und DS 2405 Probleme, selbst an einem Kabel
von 3 m Länge, blockieren die alles.

von Günther Schock (Gast)


Lesenswert?

Bei mir hat ein externer MOSFET mit slew-rate-Begrenzung das Problem
gelöst, was nur mit 1m funktioniert hat, ging plötzlich auch mit 20m.
Grundsätzlich empfiehlt Dallas das einfache Interface an einem
Prozessorport nur für kleine Längen bis 1m. Alles andere sollte über
eine Treiberschaltung gemacht werden, dann braucht man auch bei
größeren Längen keinen Repeater. Schau mal bei Maxim-Dallas nach der
APP148, da steht alles drin.

von Ich (Gast)


Lesenswert?

Hallo,

ich grabe hier zwar einen recht alten Thread wieder aus, aber bei mir 
ist gerade genau dasselbe Problem aufgetreten:
Ich habe am Tiny 85 mit 3,3k als Pull-Up in ca. 10cm Entfernung einen 
DS18S20 - auf einer kleinen Platine montiert - angeschlossen. Darauf 
sind zwei Schraubklemmen, damit das Kabel weiter zum nächsten Sensor 
verlängert werden kann.
Sobald ich nun mein ca. 25m langes Kabel anschließe, kann ich nicht 
einmal mehr mit dem ersten Temperatursensor kommunizieren, geschweige 
denn mit dem am Ende des Kabels. Auch wenn nur das Kabel ohne Sensor am 
anderen Ende angeschlossen wird, ist schon keine Temperaturmessung mehr 
möglich.
Ich verwende zwei einzelne ungeschirmte Litzen, konnte aber bisher 
keinen Kurzschluss feststellen. Der Widerstand zwischen beiden Adern 
beträgt >10 Megaohm, die Kapazität der Leitung liegt meinen Messungen 
zufolge bei etwa 2 nF. Das Kabel ist nicht neben Stromleitungen verlegt, 
es verläuft im Kabelkanal neben Netzwerkkabeln. An einer Stelle (ca. 2m) 
liegt das Signal auf einer Doppelader eines 4x2 Telefonkabels, auf einer 
anderen Doppelader ist noch ein Telefon angeschlossen.
Ich hatte vor, noch mehr Sensoren weitere 20m entfernt zu platzieren, 
angeschlossen über ein eigenes, noch unbenutztes 2x2 Telefonkabel.
Ist das nur durch Timing-Änderungen und einen Treiber anstelle des 
µC-Ports möglich oder muss ich doch ein besseres Kabel verlegen?

von Jürgen L. (jliegner)


Lesenswert?

Seht auch mal nach ob die Software ordentlich programmiert ist. Es ist 
im parasitären Modus (ich denke darum ging es hier) entscheidend, dass 
nach dem Absetzen des Befehls zum Messen sofort der Pin auf High gezogen 
wird. Das macht sich erst recht bei langen Leitungen bemerkbar. Ich habe 
hier schon Code gesehen, da vergingen ein paar us zuviel. Welchen Code 
hast du zum Auslesen?

von david (Gast)


Lesenswert?

wie funktioniert das mit dem externen MOSFET ? laut APP braucht man dazu 
2 Ports am Controller und demnach eine entsprechend abgeänderte Software 
?

von david (Gast)


Lesenswert?

Kann mir niemand in kurzen Sätzen erklären wie genau der Mosfet 
angesteuert werden muss. In AppNote steht doch nirgends wie das Ding 
angesteuert werden muss.

von stefan (Gast)


Lesenswert?

ich kanns dir nicht genau sagen, aber ich glaub der Mosfet muss Invers 
zum DataPin angesteuert werden, korregiert mich wenn ich falsch liege.

von Werner (Gast)


Lesenswert?

david schrieb:
> Kann mir niemand in kurzen Sätzen erklären wie genau der Mosfet
> angesteuert werden muss.

Im Datenblatt des DS18B20 ist das in einem Satz zusammengefaßt:
"The 1-Wire bus must be switched to the strong pullup within 10μs (max) 
after a Convert T [44h] or Copy Scratchpad [48h] command is issued, and 
the bus must be held high by the pullup for the duration of the 
conversion (tCONV) or data transfer (tWR = 10ms)."

M.a.W. Du schickst das Kommand los und aktivierst dann den FET für tCONV 
bzw. tWR.

von david (Gast)


Lesenswert?

danke für die Antwort, ich werd den Quellcode entsprechend anpassen und 
das ganze mal probieren.

von manu (Gast)


Lesenswert?

ja moment das ist ja, "Strong PullUp".
Das mein ich ja gar nicht ! Ich rede von der Möglichkeit die 
Signalqualität zu verbessern mit der Slew Rate Control

von ich da (Gast)


Lesenswert?

Ich hatte ebenfalls Probleme mit einem DS18B20 der am Ende von einem 30 
m Kabel hing. Habe das Problem mit einer alternativen Lösung gelöst die 
sich TSIC306 nennt. Ist ein ebenso genauer digitaler Temp-sensor von 
Hygrosens o.ä. Er arbeitet allerdings auf einer anderen 
Übertragungsebene, im sogenannten Hammingcode.
Er liefert bei mir die Temperaturwerte stabil und bei ihm ist es egal 
wie lange das Kabel oder die Qualität des Kabels ist.

Warum also Übungen machen deren Erfolg ungewiss ist, wenn es mit einem 
anderen Sensor, Sensortyp gut lösbar ist?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.