Forum: Mikrocontroller und Digitale Elektronik 2 DS 1820 einer stellt sich immer tot


von Mike (Gast)


Lesenswert?

Hallo zusammen,

ich habe ein kleines Problem, wenn ich 2 Sensoren an dem 1-wire-Bus 
anschließe. Hab es anfangs so versucht beide nacheinander mit der Id 
anzusprechen und auszulesen. Da antwortet aber immer nur einer, der 
andere stellt sich irgendwie tot.

Nach kurzem rumspielen hab ich einfach mal das Grundprogramm 
reingepackt, nach dem Schema...

CC          //Skip Room    also alle ansprechen
44          //Konvertierung
wait 750ms  // bis er fertig is
CC          //Skip Room    alle wieder ansprechen
BE          //Schreibbefehl um Temp auszulesen

Funktioniert ganz normal bei einem Sensor, aber wenn ich 2 reinpacke 
müssten doch beide gleichzeitig antworten und nur Quatsch dabei 
rauskommen oder? Tut es aber nicht, es liest nur einer aus. Oder wissen 
die beiden Sensoren voneinander? Jedenfalls stellt sich wieder der selbe 
Tot.

Schon mal vielen dank für ne Antwort, falls jemand eine Idee hat
Mike

von Sebastian (Gast)


Lesenswert?

Wenn man zwei Sensoren am Bus hat, mussen die nacheinander mit ihren 
Seriennummern angesprochen werden, sonst gibt's nur Kollisionen.

von Christian H. (netzwanze) Benutzerseite


Lesenswert?

Mike schrieb:
> Funktioniert ganz normal bei einem Sensor, aber wenn ich 2 reinpacke
> müssten doch beide gleichzeitig antworten und nur Quatsch dabei
> rauskommen oder?

Ja, sollte so sein.

> Tut es aber nicht, es liest nur einer aus.

Kommen dabei auch saubere Daten raus?
Wenn ja, stimmt etwas nicht.

von noobuntu (Gast)


Lesenswert?

hi mike,

ich hatte auch einmal das selbe Problem. Es lag einfach an der 
Ansteuerroutine. Man muss darauf achten, dass sobald man keine Daten 
mehr an die Sensoren sendet den I/O Pin floatet, ansonsten gab es bei 
mir immer Kollisionen.

mfg noobuntu

von Mike (Gast)


Lesenswert?

die ausgelesenen Werte sind sauber, erwärm ich den funktionierenden 
steigt die angezeigte Temperatur, erwärm ich den anderen bleibt die 
angezeigte Temp konstant. habs auch mit dem Oszi kontrolliert. Oder um 
mal mein ursprüngliches Problem zu verdeutlichen. Ich hatte es anfangs 
so

CC           //skip room
44           //konvertierung
warten
55           //match room
64-Bit-id1   //vorher einzeln ausgelesen
BE           // Temp1 ausgeben

55           //match room
64-Bit-id2   //vorher ausgelesen
BE           //Temp2 auslesen

Es wird aber nur einer ausgelesen, der andere gibt FF zurück. Schließ 
ich sie einzeln an funktionieren sie beide. Gerade etwas komisch 
komisch. Ebenfalls am Oszi angeschaut, der inaktive rührt sich nicht, 
der andere funkt ihm auch nicht dazwischen sonder wird nur bei seiner 
Abfrage aktiv.

von Christian H. (netzwanze) Benutzerseite


Lesenswert?

Timingprobleme?
Ist es immer der zweite oder erste Sensor in der Kette?
Vielleicht mal beide austauschen und dann nochmal beobachten.

von Mike (Gast)


Lesenswert?

Es ist immer der selbe Sensor, hab sie jetz in der Aufrufreihenfolge mal 
vertauscht und jetz is es der erste der vom Programm her nicht 
antwortet. Die Sensoren selbst zu tauschen macht keinen Unterschied Ich 
ruf jetz nur mal per Id den Streikenden auf + einmal ausgeben, und 
zeichne am Oszi die Kommunikation auf, wenn nur der eine am Oszi hängt. 
Und dann wenn beide drannhängen. So wie ich dass sehe müssten die beiden 
Aufzeichnungen identisch sein, da ja nur einer aufgerufen wird.

Aber verschieb ich mal auf morgen.
Vielen Dank für die Antworten

Mfg Mike

von Mike (Gast)


Lesenswert?

So guten morgen zusammen,

neuer Tag neues Glück. Also ich hab es jetz mal testweise so 
programmiert wie gestern beschrieben, aber find das Ergebnis eher 
verwirrender als aufklärend.

Konvertierungsbefehl und leseBefehl nur an id1

1.Versuch
Nur Sensor 1 anschließen funktioniert tadellos. Hab zusätzlich die ganze 
Kommunikation am Oszi aufgezeichnet.

2.Versuch
Selbe Programm aber diesmal Sensor 1 und 2 anschließen. Sensor 1 mag 
nich mehr.
Ebenfalls alles mit dem Oszi aufgezeichnet und hab es mit dem 
Vorhergehenden Bit für Bit :-) verglichen. Auf der Datenleitung liegt 1 
zu 1 das selbe Signal an, vom ersten Reset bis zum letzten Befehl H-BE, 
außer dass Sensor 1 alleine antwortet aber mit Gesellschaft nichts mehr 
macht.

Kann es sein das an der Schaltung was nicht stimmt?

Mfg Mike

von Klaus (Gast)


Lesenswert?

@Mike

Mike schrieb:
> CC           //skip room
>
> 44           //konvertierung
>
> warten
>
> 55           //match room
>
> 64-Bit-id1   //vorher einzeln ausgelesen
>
> BE           // Temp1 ausgeben

war fast richtig!

1-wire reset
CC    //Skip-rom
44    // konvertierung   Alle Sensoren gleichzeitig
55           //match room
64-Bit-id1   //1 Sensor
BE           // Scratchpad einlesen die ersten beiden bytes
1-wire reset

1-wire reset
CC    //Skip-rom
44    // konvertierung   Alle Sensoren gleichzeitig
55           //match room
64-Bit-id1   //2 Sensor
BE           // Scratchpad einlesen die ersten beiden bytes
1-wire reset

So sollte es eigentlich dann gehen!

von Klaus (Gast)


Lesenswert?

Uuups! Fehler


1-wire reset
CC    //Skip-rom
44    // konvertierung   Alle Sensoren gleichzeitig

1-wire reset
55           //match room
64-Bit-id1   //1 Sensor
BE           // Scratchpad einlesen die ersten beiden bytes
1-wire reset // Abbruch nach dem 2 byte

;------------------------------------

1-wire reset
CC    //Skip-rom
44    // konvertierung   Alle Sensoren gleichzeitig

1-wire reset
55           //match room
64-Bit-id1   //2 Sensor
BE           // Scratchpad einlesen die ersten beiden bytes
1-wire reset // Abbruch nach dem 2 byte

von Sascha W. (sascha-w)


Lesenswert?

@Klaus

warum soll die Konvertierung 2x gestartet werden? Das ist nicht nötig.

@Mike

wie sind die Sensoren angeschlossen? eigene 5V oder über den Bus?

Sascha

von Klaus (Gast)


Lesenswert?

Sascha Weber schrieb:
> @Klaus
>
>
>
> warum soll die Konvertierung 2x gestartet werden? Das

@Sascha
Sorry! hast natürlich recht hoffe aber das der Treadsteller ein Auge 
zudrückt

von Mike (Gast)


Lesenswert?

Hallo zusammen,

die Sensoren sind extern an 5 V angeschlossen. Hab aber mittlerweile den 
Fehler gefunden.
Ich hab die Sensoren in einer Sternschaltung angeschlossen und immer am 
Knotenpunkt mit dem Oszi aufgezeichnet. Kam mir halt mal die Idee, ich 
weiß ja nicht was ich direkt an den Sensoren anliegen habe. Ich hab die 
Sensoren mit den 10m Kabellänge und Rj-Stecker.
Aufs gerate wohl, hab ich bei dem nicht funktionierenden einfach das 
kabel mal gekürzt und es funktioniert. Stören sich anscheinend 
gegenseitig bei voller Leitungslänge.

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.