bidirektionale Kommunikation über einen Draht

Gast #1429229
Lesenswert?

Servus Forum,

ich seh mal wieder vor einem Problem. Und zwar habe ich 2 uCs die ich 
über eine handelsüblichen 3,5-mm Kinkenbuchse (Kopfhöreranschluss) 
verbinden muss/will, wobei die Stromversorgung des einen uC ebenfall 
über diesen 3-Poligen Anschluss erfolgen muss. Die Datenmenge wird 
äußerst gering sein.

Der eine uC wird quasi in ein Control-Panel eingebaut. Dieses beinhaltet 
2 Potis (A/D-Wandler im uC), 1 Schalter und 3 LEDs. Mehr nicht.
Der Andere uC brauch also als Input die 3 Werte und gibt als Output 3 
Werte für die LEDs.
So nun frage ich mich wie sich das Realisieren lässt. Eine Idee war 
UART. Braucht aber min. 2 Leitungen (Rx und Tx), I2C auch (Clock, Data) 
sämmtliche mir bekannten RSxxx bruachen ebenfalls mehr als einen Draht.
Daten in eine Richtung mit UART kein Problem, aber bidiraktional ist 
hier die Herausforderung!
Wer har ne Idee und will sie mir veraten?

Ich bedanke mich schonmal.
MfG
Zack
#1429241
Lesenswert?

Ein 1-Draht-Bus kann z.B. so funktionieren:

- Der Bus steht im Idle-Zustand auf 1
- Der Master zieht ihn für bestimmte Zeit auf 0 und stellt dann
  ebenfalls für definierte Zeit ein Datenbit auf die Leitung.
- Dann erhält der Slave einen Zeitslot zugeordnet, in dem er sein Bit
  sendet
- Dann wird der Bus wieder in den Idle-Zustand versetzt.

Auf diesem Protokoll wird ein logisches Protokoll aufgesetzt, das den 
Slots zyklisch bestimmte Werte zuordnet. Die werden dann vom jeweiligen 
µC verarbeitet.
#1429245
Lesenswert?

CAN ist differentiell und braucht zwei Leitungen.

Machst Du Anlehnung an LIN-Bus:
- 1 Leitung + GND
- 1 Master, n Slaves
- Master sendet / pollt zyklisch oder bei Bedarf
- bei PTP Verbindung keine Adressierung notwendig
- realisierbar mittels USART: RXD und TXD werden über eine Diode 
miteinander
verknüpfert, Pullup nicht vergessen.
- Tricky: sendende CPU empfängt eigenes Gesendete
- nur RX ISR nötig

Gruss Bernd
#1429249
Lesenswert?

Ich würde durch umpolen der Versorgungsspannung Daten zum Slave senden. 
Der Slave braucht dann nur einen gleichrichter. Vom Slave zum Master 
gehts dann über den dritten draht.
Auf die Weise sollte man auch Hardware-UART oder -SPI des Controllers 
nutzen können. Ist dafür hardwareseitig aufwändiger als andere Lösungen.

Sebastian
Gast #1429265
Lesenswert?

Sony LANC funktioniert auch als "1wire", wobei dort noch ein Takt mit 
übertragen wird.
Man sollte also mit jeweils einem Open-Collector-Treiber pro Seite Daten 
auf einer Leitung senden können. Wenn man dann noch das Signal wieder 
abgreift, kann man dann auch die Daten des anderen (und die eigenen) 
empfangen.
Dadurch sollte auch eine Kollisionserkennung möglich sein.

Die Lösung mit der Wechselspannung wird für unidirektionale 
Kommunikation im Bereich der Modelleisenbahn benutzt. Dass man da auch 
eine Rückmeldung hat, ist mir nicht bekannt. Dass es mit nur einer 
Leitung zur Rückmeldung funktionieren soll, bezweifle ich, da ein 
Masse-Bezug fehlt.
Gast #1429273
Lesenswert?

Es reichen auch zwei Drähte für Versorgung und Signal. Schau Die mal das 
EIB Protokoll oder die billigene Derivate an (z.B. www.freebus.org).
Wenn Spaß macht kannst Du ja auch was auf "HF" modulieren und mit einem 
TP wieder rausholen.
Signal kannst Du über nen PWM Ausgang erzeugen (so im kHz Bereich) und 
mit einem C auf die Versorgung schicken. Der Empfänger filtert sich das 
Nutzsignal wieder raus. Anders rum funktioniert das natürlich genauso 
(siehe Power Line)
Gruß
Gast #1429284
Lesenswert?

Moin,

das ist ja alles schön und gut, aber lohnt sich der Aufwand?
Beim Einstecken eines Klinkensteckers wird zwischen benach-
barten Kontaken kurzzeitig ein Kurzschluss erzeugt. Hoffentlich
himmelst Du damit nichts.
Viel Erfolg
Stefan
Gast #1429296
Lesenswert?

1. Lösung 1-wire
2. Lösung eigene HW dazwischen :

So hab ich es mal gemacht. Die Versorgung muß z.B. min. 6V sein. Dann 
werden die Daten auf der Spannungsversorgung als Serielles Protokoll 
übertragen, indem die Spannungsänderung an der Versorgungsspannung 6V = 
LOW, 9V = HIGH die Daten ergeben. Damit kannst du nicht wahnsinig viel 
übertragen, aber so 300 Baud gehen sich schon aus (bei einigen 100mA). 
Eine kleine Zusatzhardware ist schon notwendig, aber der Stabi sitzt an 
der Versorgungsspannung und davor reicht schon ein Widerstand, 
Transistor und eine Zener Diode.

Wenn du 2x Plus nimmst, dann geht es in beide Richtungen. Ich wollet 
damals nur 2 Verbindungsleitungen.

ciao,
Philipp
Gast #1429302
Lesenswert?

Der "Control-A1-Bus" von Sony erfüllt alle Deine Anforderungen. Das 
Protokoll ist minimal, es ist bidirektional und kurzschlußfest. Und man 
kann es beliebig erweitern.
Applikationen gibt (gab) es viele und es gab mal eine gar nicht kleine 
Community, die sich mit allen Hardware-, Protokoll- und 
Software-Aspekten beschäftigt hatte. Es sollte sich also genügend 
Material für eine eigene Implementierung finden lassen.


Blackbird
PS.: In meine "Vor-µC"-Zeit hatte ich so einen Adapter noch diskret 
aufgebaut. Der tut es heute noch mit meiner Anlage.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren