Forum: Mikrocontroller und Digitale Elektronik 1-wire Bus mit einem Pin benutzen


von Michael B. (gm8816)


Lesenswert?

Hallo,
hat jemand eine Schaltung mit der ich auf ein 1-wire Bus zugreifen kann. 
Ich habe mal etwas mit einem Schmitt Trigger gesehen aber ich kann mich 
nicht mehr genau dran erinnern. Diese Schaltung benutzt allerdings 2 
Pins am Mikrocontroller. Ich möchte hingegen nur einen benutzen. Er soll 
dann als Eingang und als Ausgang genutzt werden. Die Datenrichtung 
müsste dann im Mikrocontroller jedesmal geändert werden aber das ist 
kien Problem.

von Andreas K. (a-k)


Lesenswert?

Die gängige Implementierung benutzt einen Pin. Setzt aber voraus, dass 
die 1-Wire Devices entweder mit eigener Stromversorgung betrieben 
werden, oder der Pin genug Strom für parasitäre Versorgung liefern kann, 
was beispielsweise ein Original-8051-Pin nicht kann.

Besondere Schaltung gibt's da nicht. Dranhängen, Pullup, fertig. 
Allenfalls Schutzschaltung, wenn der Pin auch mal bischen 
Induktionspannung von längerem Kabel abkönnen soll.

Nachteil: Keine kontrollierte Flankensteilheit, mit entsprechend 
reduzierter Buslänge gegenüber speziellen 1-Wire-Treibern.

von Rahul D. (rahul)


Lesenswert?

>Die gängige Implementierung benutzt einen Pin. Setzt aber voraus, dass
>die 1-Wire Devices entweder mit eigener Stromversorgung betrieben
>werden, oder der Pin genug Strom für parasitäre Versorgung liefern kann,
>was beispielsweise ein Original-8051-Pin nicht kann.

Bis jetzt hatte ich 1wire so verstanden, dass die Ausgänge der einzelnen 
Bausteine wie beim I²C-Bus die Leitung nur gegen Masse ziehen.
Die Parasiten-Versorgung würde dann über einen relativ niederohmigen 
Pull-Up-Widerstand passieren.

von Andreas K. (a-k)


Lesenswert?

> Die Parasiten-Versorgung würde dann über einen relativ niederohmigen
> Pull-Up-Widerstand passieren.

Will man nur einen Pin verwenden, dann trennt man das auf. Ein relativ 
schwacher 4,7K Pullup dient der normale Datenphase. Für parasitäre 
Versorgung in der Messphase eines Wandlers, in der ja kein Bustransfer 
stattfindet, zieht der I/O-Pin die Leitung direkt hoch und kann so dem 
Device genug Strom liefern.

Mit einem Widerstand kombiniert geht das nur haarscharf kalkuliert. Das 
Device benötigt min 3V bei 1,5mA, d.h. der Pullup an 5V darf nicht über 
1,3K liegen. Bei diesem Wert zieht der Bus dann allerdings knapp 4mA bei 
Low, was exakt dem Limit vom Device entspricht.

von Michael B. (gm8816)


Lesenswert?

Hat denn jemand einen Schaltplan dazu oder kann mir fertige Bauteile für 
so ein 1-wire Bus vorschlagen. I2C ist in meinem Fall nicht möglich, da 
es nicht mit nur einer Datenleitung funktioniert. Ich will wirklich nur 
die Datenleitung und Masse haben.

von ARM-Fan (Gast)


Lesenswert?

Um was für einen µC handelt es sich denn bei dir?
Wir benutzen das ganze an 8051ern. Da ist dann nur noch
ein 1k Pullup an demjenigen Portpin und dann kommen die
1-wire Devices. Fertig. Der Rest ist Firmware.

von Andreas K. (a-k)


Lesenswert?

Sach mal, was willst du darauf noch sehen? Bei einem 1-Wire-Bus 
reduziert sich dieser Schaltplan stark auf eine grade Linie ;-).

Ansonsten solltest du dich mal bei Dallas/Maxim umsehen. AppNotes 148 
könnte helfen (sonst noch: AN126, Tech Brief 1).

von Andreas K. (a-k)


Lesenswert?

> Da ist dann nur noch ein 1k Pullup an demjenigen Portpin

Ergibt bei 5V einen Low-Strom von 5mA. Wird üblicherweise funktionieren, 
ist aber ausserhalb der Spezifikation (4mA max).

EDIT: Findet sich so auch in der AN148. Nun ja, die müssen es ja wissen.

von Michael B. (gm8816)


Lesenswert?

Das hatte ich wohl vergessen zu erwähnen. Ich benutze einen ATtiny84 und 
möchte nur einen Pin zum Senden und Empfangen benutzen.

von ARM-Fan (Gast)


Lesenswert?

Also den 1k-Pullup hatte ich seinerzeit auch aus nem Datenblatt
oder einer Appnote. Den hab ich nicht erfunden ;-)

Läuft jedenfalls stabil und in Serie...

von Michael B. (gm8816)


Lesenswert?

Ich habe mir jetzt überlegt den 74HC640 als Treiber zu benutzen. Bei dem 
IC muss man zwar die Datenrichtung angeben aber ich denke das lässt sich 
einrichten. Ich frage mich nur ob ich vor den Ausgang noch einen 
Widerstand bauen soll falls die Daten mal in der falschen Richtung 
ankommen.

von Andreas K. (a-k)


Lesenswert?

Langsam frage ich mich, ab die Diskussion noch einen Sinn hat. Oder ob 
du unter einem 1-Write Bus etwas ganz anderes verstehst als alle 
anderen. Dessen Erfinder Dallas/Maxim inklusive. Denn mit dem '640 
gleitet das deutlich ins Absurde ab.

Tip: Irgendwo im Code-Forum, oder wassweissichwo, liegt ein prima Stück 
Code von Peter Dannegger zum Thema 1-Wire mit einer Leitung.

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.