1-wire mit ds2401 position in kette auslesen

Hallo liebe Community,

ich habe mehrere ds2401 in einem 1-wire-Netz.
diese werden von meinem Master-Arduino im Netz erkannt.

ich wollte fragen, ob es möglich ist, dass ich nicht nur weiß, dass
sich der ds2401 im netz befindet, sondern an welcher position er sich
im netz befindet?!
gibt es da eine möglichkeit einen physikalischen verzögerer einzubauen, der
dafür sorgt, dass ich eine reihenfolge auslesen kann? oder softwareseitig?

herzlichen dank für eure Mühe und Ideen!

Das one-wire Protokoll ist ja sehr großzügig, was Timing angeht. Du kannst jedes übertragene Bit einzeln mit Handschlag begrüßen und dir ZWISCHEN den Bits unendlich viel Zeit lassen. Da sehe ich keine Möglichkeit, Laufzeitinformationen zu erhalten.
Eine sehr aufwändige Lösung: du kannst an jeden einzelnen DS2401 eine Verzögerungsschaltung bauen, die das Einschalten der Stromversorgung verzögert, z. B. um eine Sekunde, beim nächsten zwei Sekunden usw. Wenn du dann den Bus immer wieder abfragst, erhälst du erst eine Rückmeldung, dann zwei, dann drei etc.
Ich weiss nicht, ob dir das weiterhilft, weil ich nicht weiss, was dein Ziel ist. Warum musst du die Position am Kabel kennen?

hallo olf2012,

vielen dank für deine schnelle antwort.

ich möchte einen kleines spiel bauen mit verschiedenen, farbigen puzzleteilen, in welchem ich eine bestimmte reihenfolge vorgebe und diese dann gelegt werden soll. kleines projekt für meinen kleinen sohn. zum beispiel soll gelegt werden: mastermodul<-rot–grün–blau–blau–grün.
die 1-wire lösung lässt ja nur zu, dass ich weiß, dass einmal rot, zwei grüne und zwei blaue angeschlossen sind und nicht die position. (welche ich ja wissen möchte.)

wie würde denn so eine verzögerungsschaltung aussehen? also welche bauteile etc.?

ich danke die vielmals!

ich wollte fragen, ob es möglich ist, dass ich nicht nur weiß, dass
sich der ds2401 im netz befindet, sondern an welcher position er sich
im netz befindet?!

Nein!

Niemals!

No!

Vergiss es!

combie:
Nein!

Niemals!

No!

Vergiss es!

Wie kommen Sie zu dieser Aussage?

Ich habe die Spezifikation des 1-Wire Protokolls gelesen(und hoffentlich viel davon verstanden).

Tipp:
Auch du könntest dir diese zur Brust nehmen.
(es besteht die Hoffnung, dass du danach mehr Ahnung davon hast, als ich)

Alternativ:

Du könntest jedes Feld mit einem Arduino Pin verbinden, und diesen dann Abfragen ob oder welches Teil da liegt.

Ich hatte mir die Beschreibungen zur 1-wire Bibliothek schon angesehen und ich konnte weder das eine noch das andere ausschließen. (mein Wissenshorizont im Arduinokosmos ist da leider auch sehr begrenzt) Deshalb meine Fragestellung hier in der Community.

Ich danke euch beiden auf jeden Fall für eure Ratschläge, ich werde erstmal die Verzögerungsschaltung ausprobieren und danach die Pin-Lösung.

Vielen Dank nochmal für eure Mühe!

Natürlich sind weitere Tipps und Lösungen immernoch gern gesehen.

Lauzeitmessung kann man definitiv ausschließen, egal welches Protokoll. Dazu müsste man im Nanosekundenbereich messen, das kann nur spezielle Hardware, mMn auch kein normaler PC.

@kosmo
und die “Puzzleteile” werden nicht wie bei einem normalen Puzzle aneinander gelegt, sondern können in beliebiger Reihenfolge an die richtige Stelle gelegt werden. Damit ist ja meine Idee mit der Einschaltverzögerung auch nicht brauchbar, glaube ich

hi,

ideen sind nicht das problem, kosmo, aber wir müßten schon mwhr wissen, wie das ganze aussehen soll, welche formen, welche größe, werden die teile nur hingelegt oder in aussparungen usw..

gruß stefan