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?
wie funktioniert das mit dem externen MOSFET ? laut APP braucht man dazu 2 Ports am Controller und demnach eine entsprechend abgeänderte Software ?
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.
ich kanns dir nicht genau sagen, aber ich glaub der Mosfet muss Invers zum DataPin angesteuert werden, korregiert mich wenn ich falsch liege.
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.
danke für die Antwort, ich werd den Quellcode entsprechend anpassen und das ganze mal probieren.
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?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.