mikrocontroller.net

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


Autor: Mike (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Sebastian (Gast)
Datum:

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

Autor: Christian H. (netzwanze) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: noobuntu (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Mike (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Christian H. (netzwanze) Benutzerseite
Datum:

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

Autor: Mike (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Mike (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Klaus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: Klaus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Sascha Weber (sascha-w)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Klaus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Mike (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.