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
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.
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
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.
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.
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.
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?
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?
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.
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.
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
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?