Forum: Mikrocontroller und Digitale Elektronik 1-Wire star network


von Robert S. (efyzz)


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!

von Konrad S. (maybee)


Lesenswert?

Wenn du den Leitungen zu den DS1820 eine Ader extra spendierst, dann 
könntest du die Versorgungsleitungen sternförmig anschließen und die 
Datenleitung zu jedem Sensor hin- und zurückführen und am Knotenpunkt 
von einem Sensor zu nächsten weiterreichen.

von Tom P. (booner)


Lesenswert?

Hei,

gibts nicht auch einen 1Wire Masterbaustein, an den man mehrere 1Wire 
Busse hängen kann?


Grüße,

Tom

von Robert S. (efyzz)


Lesenswert?

Leider nein, bzw. konnte ich noch nichts finden. Ein einfacher 
Leitungstreiber (wie der P82B96 für I2C) wäre ja schon mal eine 
Verbesserung...

Gute Idee, Konrad!
Aber wollen wir mal abwarten, ob noch jemand andere Tipps hat.

von (prx) A. K. (prx)


Lesenswert?

Probier es aus - die Chancen stehen nicht schlecht. Ein Stern mit 4 
Strahlen zwischen 2 und zig Metern funktioniert jedenfalls auch.

von (prx) A. K. (prx)


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.

: Bearbeitet durch User
von Robert S. (efyzz)


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.

: Bearbeitet durch User
von Max G. (l0wside) Benutzerseite


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

von Robert S. (efyzz)


Lesenswert?

Mmh, nicht schlecht!

Allerdings bin ich dann bei 5 Leitungen: SCL, SDA und ADD0-2. Und ich 
müsste meinen Sourcecode auf I2C umbasteln.

Dann doch lieber direkt das 1-Wire muxen mit 74HC4051 oder??? Wären nur 
4 Leitungen.

von (prx) A. K. (prx)


Lesenswert?

Robert S. schrieb:
> Allerdings bin ich dann bei 5 Leitungen: SCL, SDA und ADD0-2.

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

von Torsten S. (tse)


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.

von Wolfgang (Gast)


Lesenswert?

A. K. schrieb:
> Die positive Flanke schleppt sich mit steigender Länge ohnehin dahin.
Das könnte man ihnen mit einer KSQ an Stelle des üblichen Widerstandes 
abgewöhnen.

von Robert S. (efyzz)


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!

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.