Forum: Mikrocontroller und Digitale Elektronik mehrere DS18S20 Sensoren an einem Bus


von Paul P. (cesupa)


Lesenswert?

Hallo,

Ich möchte 5 DS18S20 Temperatursensoren an einem Bus betreiben. Wenn ich 
drei von denen am Bus habe funktionierts einwandfrei, die anderen beiden 
zusammen funktionieren auch einwandfrei. Leider funktioniert es nicht, 
wenn alle 5 am Bus sind oder die funktionierenden ersten drei mit einem 
der anderen Sensoren. Komischerweise wird auch kein Fehler ausgegeben, 
sondern nur eine 0. Die Temperaturkonvertierung geht auch viel schneller 
von statten, als wenn alles funktioniert. Woran könnte das liegen?

von Herr Bert (Gast)


Lesenswert?

Treibst du niederohmig genug? Anders gefragt: Hat dein Zwischengesicht 
genügend Power, den ganzen Sauschwanz zu bedienen? Wenn man da mit zu 
wenig Leistung kommt passieren die queersten Sachen, hab' ich selbst 
erlebt. Eventuell reicht schon ein Treiber (im einfachsten Fall ein 
Transvestit).

Gruß, Bert

von Paul P. (cesupa)


Lesenswert?

???
Also ich hab einen 4,7k Widerstand zwischen DQ und Vcc (5V) wie im 
Datenblatt angegeben. Die Sensoren werden normal betrieben, also kein 
parasite power. Die Sensoren werden an eine 3er-Klemme angeschlossen. 
Was du jetzt genau meinst weiß ich leider nicht... die Sensoren werden 
direkt von einem Atmega32 ausgelesen. Könnte es vielleicht auch an der 
Länge der Kabel liegen, an denen die Sensoren dranhängen?

von Sanger (Gast)


Lesenswert?

Moin,

achte peinlich aufs Timing. Interrupts während des Recovery und der 
Read/Write Slots stören.

...
Zwischengesicht = interface / an deinem Prozzi
Sauschwanz      = pigtail / dein Bus
oder so ähnlich :-)
...

MfG

von Oliver K. (olli_k)


Lesenswert?

Hallo,
sendest du den Temperatur-Konvertierungsbefehl für alle Sensoren auf 
einmal?? Sprich: Konvertieren alle Sensoren die Temperatur zur selben 
Zeit? Ich meine mal gelesen zu haben, dass der 4,7k Pull-Up nur für 
einen Sensor ausgelegt ist. Wenn nun alle Sensoren gleichzeit die 
Temperatur wandeln, und somit mehr Energie benötigen, reicht der 4,7k 
Pull-Up eventuell nicht aus, um die Sensoren mit genügend Strom zu 
versorgen! Versuche entweder den Pull-Up kleiner zu machen, oder die 
Sensoren einzeln nacheinander anzusprechen!
mfg olli

von Hackes (Gast)


Lesenswert?

Bin jetzt kein DS-Profi, aber hab auch mein erstes Projekt mit 4 
Sensoren am BUS fertig und läuft (natürlich nach einigen Fehlern zuvor).

- Du sagst, du betreibst nicht parasitär, also als 3-Draht-BUS.

- Ist der BUS ein Stern oder alles fein hintereinander?

- Bei mir ist alles hintereinander und der 4,7k ist direkt am 1-WIRE-PIN 
des µCs

- Ich war auch erstaunt, daß die Wandlung sehr schnell fertig war, ABER 
das ist nicht immer so und nicht zuverlässig.

- Kam bei mir auch zu Fehllesungen dann.

Meine Vorgehensweise und SEITDEM KEINE Fehler mehr:

1.) START CONVERSION-Befehl an ALLE Sensoren GLEICHZEITIG senden. Hab 
den gerade nicht im Kopf, den gibts aber.

2.) jetzt kannst Dich in Deinem Programm um andere Sachen kümmern

3.) ERST nach mind. 750ms fragst die einzelnen Fühlern nach ihrem 
konvertierten Wert. Eine Wandlung KANN bis zu 750ms dauern. Geht 
manchmal schneller, KANN aber 750ms dauern. Laut Datenblatt!

Seitdem ich konsequent erst nach 750ms abfrage, treten keine Probleme 
mehr auf.

Vorschlag:

Bau mal ne schöne BUS-Leitung mit den Sensoren auf und mach KEINE 
Stern-BUSSE!!! Schreib das billigste Programm: Konvertierungsbefehl an 
alle, 750ms warten, die Fühler auslesen!!!

Gruß Hackes

von Paul P. (cesupa)


Lesenswert?

Hallo,

also ich sende den convertt-befehl an alle gleichzeitig und frage dann 
einzeln ab. Die Sensoren sind Sternförmig angeordnet.

Die Zeit habe ich grad auf 1s erhöht und gleiches Ergebnis. Wenn ich 
aber einen Widerstand parallel zu dem 4,7k Widerstand hänge 
funktionierts einwandfrei. Da kommt also wirklich zu wenig Saft am Bus 
an...
Da danke ich euch für eure Hilfe :)

Gruß
Paul

von Herr Bert (Gast)


Lesenswert?

> Paul P. schrieb:
>> Herr Bert schrieb:
>> Treibst du niederohmig genug? Anders gefragt: Hat dein Zwischengesicht
>> genügend Power, den ganzen Sauschwanz zu bedienen? Wenn man da mit zu
>> wenig Leistung kommt passieren die queersten Sachen, ...
> ???
> Die Sensoren werden an eine 3er-Klemme angeschlossen.
> Was du jetzt genau meinst weiß ich leider nicht...

Naja, ich meinte damit, daß die Gesamtkapazität deiner langen Leitung 
und der mehreren Sensoren für deinen treibenden Baustein eventuell 
einfach zu groß sein könnte.

Gruß, Bert

von Paul P. (cesupa)


Lesenswert?

Gibt es eigentlich eine Rechenvorschrift, mit der man den benötigten 
Widerstand für den Bus in abhängigkeit der anliegenden Sensoren 
ermitteln kann?

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.