1-Wire star network

OP #3447508
Lesenswert?

Moin,

ich möchte gern genau das tun, was man nicht soll: Nämlich ein 1-Wire 
Stern-Netzwerk aufbauen.

Und zwar sollen bis zu 8 DS1820 (Temperatursensor) an einen CPU-Pin 
angeschlossen werden. Diese Sensoren werden in allen Richtungen im Raum 
verteilt, mit Kabellängen bis zu etwa 10 m. Eine lineare Topologie kommt 
leider nicht in Frage, da jeder Sensor einzeln jederzeit in seiner 
Position verändert werden können soll.

Wenn man hier schaut:
http://www.maximintegrated.com/app-notes/index.mvp/id/148
gibt es mehrere Möglichkeiten. Lineare Topologie fällt wie gesagt aus.

Umschaltung der Sensoren über Multiplexer (somit hätte man 8 einzelne 
Stichleitungen) wäre ja ganz toll, jedoch ist dann der Vorteil, dass man 
nur einen CPU-Pin braucht, dahin.

Weiterhin gibt es noch Schaltungen mit aktivem Pull Up oder Down, doch 
auch dafür benötigt man wieder zusätzliche Pins...


Wie sind eure Erfahrungen? Könnte es klappen, bis zu 8 Sensoren mit 
verschiedenen Kabellängen bis zu 10 m sternförmig an die CPU 
anzuschließen?
Wenn die Reflexionen zu stark sind, würde es reichen, mit der Frequenz 
runter zu gehen?

Weiterhin läuft meine CPU nur auf 3,3 V. Reicht zwar aus, aber 5 V wäre 
sicherlich störungssicherer. Könnte man da eine Art bidirektionalen 
Leitungstreiber verwenden (z.B. NXP P82B96)?

Achso, die Parasite Power Funktion möchte ich nicht nutzen, sondern die 
Betriebsspannung separat an die Sensoren legen. Das sollte ja die 
Probleme schon etwas eindämmen. Mir geht es nur darum, möglichst keine 
weiteren CPU-Pins zu verbrauchen.

Danke für eure Tipps!
#3447646
Lesenswert?

Robert S. schrieb:
> Wenn die Reflexionen zu stark sind, würde es reichen, mit der Frequenz
> runter zu gehen?

Nein, denn es ist die Flanke, die zählt, nicht die Frequenz. Die 
positive Flanke schleppt sich mit steigender Länge ohnehin dahin. Die 
negative Flanke kannst du mit einem Serienwiderstand von 100 Ohm am 
Ausgang vom Controller-Pin drosseln, wenn dieser Ausgang recht 
stromstark ist (z.B. AVR). Der Widerstand wirkt nebenbei auch als 
Schutzwiderstand.
OP #3447704
Lesenswert?

OK, das sind alles schon mal gute Hinweise!

Maxim schlägt ja auch vor, an jedem Slave 150 Ohm vorzusehen, wenn man 
"Stichleitungen" von einem Bus abführt.

Trotzdem macht es mir ein wenig Angst, den CPU-Pin einfach so nach 
draußen zu führen. Klar, die 100 Ohm wären dazwischen und natürlich noch 
ein Ferrit, eine TVS-Diode... Aber ein richtiger Leitungstreiber wäre 
schon toll :)

Die CPU ist übrigens ein STM32.
Persönliche Seite #3447730
Lesenswert?

Robert S. schrieb:
> Moin,
>
> ich möchte gern genau das tun, was man nicht soll: Nämlich ein 1-Wire
> Stern-Netzwerk aufbauen.
Lass es bleiben. Ich hab´s gemacht. Und würde es nicht wieder tun.

Du brauchst einen DS2482-800. Wie für dich gemacht. Und wenn du ganz 
fleißig sein willst, spendierst du noch eine galvanische Trennung mit 
einem ADUM und ESD-Schutz mit Zenerdioden.

µC-Pin würde ich auch nicht so direkt nach außen führen. Entweder als 
Eingang mit Schutzbeschaltung davor oder als Ausgang mit Treiber (d.h. 
Endstufe). Alles andere ist Ärger mit Ansage.
Aber mit dem DS2482-800 sollte dieses Problem aus der Welt sein.

Max
#3448124
Lesenswert?

Habe auch getan was man nicht soll: einen bunten Mix aus 12 Stück 
DS18B20/DS18S20 mal als Stern und mal mehrere hintereinander. Der 
weiteste ist rund 50m entfernt, der kürzeste auf der Platine. Alle mit 
Parasite Power versorgt weil es so schön einfach und adernsparend ist.

Angesteuert wird alles vom AVR mit 5V und läuft seit vielen Jahren 
problemlos.

Freilich kommt es ab und an zu Fehlern. Deswegen ist CRC- und 85.0 Grad 
Erkennung Pflicht. Bei einem Fehler einfach eine neue Messung starten.

Den Pullup habe ich auf 2k2 verringert sonst häufen sich die Fehler auf 
den weiter entfernteren Sensoren.

Mit dem genauen Timing auf dem W1 Bus steht und fällt alles.
OP #3448387
Lesenswert?

> Nur SCL und SDA. Die ADDs sind statisch, zur Definition der I2C-Adresse,
> wenn mehrere I2C Bausteine am Bus sind.

Achso! Da sieht man doch gleich, dass mir für I2C doch einige Grundlagen 
fehlen... Aber das scheint ja echt ein toller Chip zu sein. Werde mir 
den mal besorgen und testen.

Ich danke euch allen für die super Tipps und Erfahrungen!

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren