1-Wire über lange Leitung - Entkoppeln?

Gast #1408133
Lesenswert?

Hallo,

ich betreibe DS1820 Temperatursensoren an einem AVR, funktioniert 
problemlos.

Was aber passiert, wenn ich längere Leitungen verwende? Immerhin dürfen 
an einem Bus ja dutzende Sensoren hängen, so dass eine beträchtliche 
Kabellänge zusammenkommen kann. In meinem konkreten Fall geht es zwar 
nur um 2 Sensoren am Ende einer 20m-Leitung, trotzdem hab ich ein 
mulmiges Gefühl.

Darf ich diesen 20m langen 1-Wire Bus direkt mit einem AVR-Pin 
verbinden? Ich habe die AVR's in der Vergangenheit als recht empfindlich 
gegenüber Einstreuungen an den Portpins kennengelernt. Ein zu langer 
oder nicht entstörter Portpin, und schon gibts Resets beim Einschalten 
der Neonröhren. Zwar hat der 20m-Bus bei meinen Experimenten bisher 
funktioniert, aber das muss ja noch nichts heissen.

1-Wire ist bidirektional, mit Optokopplern wirds also schon etwas 
schwieriger. Man würde wohl einen weiteren Portpin zum Schalten der 
Übertragungsrichtung benötigen. Und das ganze bei Signalen im 
Mikrosekundenbereich.

Wie macht ihr das bei langen Busleitungen? Einfach direkt ranhängen, 
oder sind Entstörmassnahmen anzuraten?

Danke & Gruß Sven
#1408152
Lesenswert?

Es gibt bei Maxim/Dallas eine Application Note, die sich ausgiebig mit 
dem Thema langer 1-Wire Busse befasst.

20m sind da aber eher als kurz anzusehen. Sauberes Timing vorausgesetzt 
geht das problemlos direkt am Pin. Bischen Schutzschaltung für den Pin 
ist aber sicher nicht verkehrt, sonst ist das nächste Gewitter 
vielleicht auch das letzte.

Wenn mal eine Störung reinrutscht ist das dank CRC nicht unbedingt ein 
Problem. Wenn die dir allerdings den Controller resettet, dann hast du 
vielleicht am Controller selbst was verkehrt gemacht.
Gast #1408226
Lesenswert?

OK, danke.
Timing ist sauber innerhalb der Spec, dementsprechend sind manche Pulse 
nur ca. 1.5us lang.
CRC-Checksumme prüfe ich auch.

Aber wie soll das "Bischen Schutzschaltung" aussehen? Bei Eingangspins 
ein RC-Glied ist klar. Aber bei einem bidirektionalen Pin?? Dann müsste 
der AVR ja ständig den C umladen. Und durch den Serienwiderstand wird 
der Bus nicht mehr vollständig auf Masse gezogen. Gibt's dadurch nicht 
Probleme?
Oder ist ein RC hier eh fehl am Platz?
(Firma: electronica@tdnet) Persönliche Seite #1408330
Lesenswert?

Sven schrieb:
> Aber wie soll das "Bischen Schutzschaltung" aussehen? Bei Eingangspins
> ein RC-Glied ist klar. Aber bei einem bidirektionalen Pin?? Dann müsste
> der AVR ja ständig den C umladen. Und durch den Serienwiderstand wird
> der Bus nicht mehr vollständig auf Masse gezogen. Gibt's dadurch nicht
> Probleme?
> Oder ist ein RC hier eh fehl am Platz?

Also der 1-Wire Pin des AVR sollte bereits alles mitbringen inclusive 
des Schutzes.

Wie schon erwähnt, solltest Du bei http://www.maxim-ic.com/ Dir mal das 
1-Wire "User Guide" und die "Application Notes" ansehen...

Das teht WIRKLICH ALLES drin, was Du wissen mußt.

Grüße
Michelle
#1408356
Lesenswert?

>Timing ist sauber innerhalb der Spec, dementsprechend sind manche Pulse
>nur ca. 1.5us lang.

Wenn Du das mit einem AVR machst, kannst Du dieses Timing ja 
kontrollieren und länger machen.

Von den 1,5us kommt u. U. nicht mehr so wirklich viel an und laut Spec. 
kannst Du das bis zu 10 us lang machen.

Gruss
Axel
#1408365
Lesenswert?

Axel Laufenberg schrieb:

> Von den 1,5us kommt u. U. nicht mehr so wirklich viel an und laut Spec.
> kannst Du das bis zu 10 us lang machen.

Obacht! Von der fallenden Flanke (AVR@5V: ~25 Ohm) kommt deutlich mehr 
an als von der steigenden Flanke (Widerstand 4K7). Bei 10µs low kann es 
bei langer Leitung und dem üblichen passiven Pullup u.U passieren, dass 
die zum frühestmöglichen Samplepunkt noch nicht wieder oben ist.
Gast #1408518
Lesenswert?

Danke für Eure Hilfe.
Die einfache Beschaltung mit Dioden und Serienwiderstand werde ich mal 
probieren.
Eine Verlängerung der Pulszeiten auf bis zu 10us ist aufgrund meiner 
Interrupt-Architektur kaum möglich (musste schon kämpfen, um auf eine 
Länge von 1.5us zu kommen). Sonst würde mein Programmtiming 
durcheinanderkommen.
Von einem Hardware-1-Wire-Pin am AVR mit spezieller Beschaltung hab ich 
noch nichts gehört...
#1408599
Lesenswert?

Sachte. Wie ich schon schrieb: 20m ist nicht viel und mühelos ohne 
speziellem Treiber machbar. Ich habe das in einer Installation mit wohl 
ungefähr 30m grösster Länge (plus 2 bis 5m lange Seitenäste) über 
mehrere recht verschiedene Sorten Kabel laufen. Direkt am AVR, auf Basis 
von PeDas Code, leicht korrigiert.
#1408972
Lesenswert?

Ich kann A.K. nur zustimmen, habe ebenfalls seit etwa 2 Jahren nahezu 
problemlos (es gab wohl ca. 2 Resets in der Zeit) ein Thermometer hier 
laufen - Der 1w Bus ist insgesamt sicherlich 30m lang und geht dabei 
über Telefonkabel in der Wand. Nach 10 m kommt ein Slave an ner 4m 
Stichleitung, der 2. Slave hängt direkt am Ende der 30 m.

Beschaltung am AVR: Pullup 1k? und ein 100R Serienwiderstand soweit ich 
weiß. Ist aber schon etwas länger her.

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