Arduino RX und TX über einen Draht

OP #2621293
Lesenswert?
• ▲
▼
Moin,

ich probiere gerade ein Gerät welches entweder sendet oder empfängt mit 
einem Arduino zu verbinden und dafür die RX/TX Ports zu verwenden. Das 
dumme ist, dass das Gerät über eine Leitung sendet und Empfängt. Von da 
her meine Frage an das Forum:

Hat jemand eine Idee wie man RX und TX parallel schalten kann und den 
Arduino nur jeweils eines von beiden auslesen kann?

Die naive Lösung die beiden Ports einfach zu verbinden und SW mäßig nur 
zu lesen oder zu schreiben haut schon mal nicht hin. Kann man also eines 
per SW abschalten?

Alternativ dachte ich, dass man womöglich über zwei Transistoren jeweils 
den einen oder anderen abklemmen könnte:

1
 
2

3
Gerät
4
|
5
|
6
|---------
7
|        |
8
TR1--|---TR2
9
|    |   | 
10
|    |   |
11
RX  Pin4 TX am Arduino

Die Idee jetzt, dass man einen PNP (TR1) und einen NPN Transistor (TR2) 
nimmt und über einen Steuerausgang (Pin4 wobei egal ist welcher es denn 
wird) entweder RX oder TX abklemmt. Meiner sehr naiven Vorstellung nach 
könnte das funktionieren, wobei ich allerdings nur sehr wenig Ahnung von 
E-Technik habe :-(.

Falls das eine Lösung wäre: Was müsste man denn da für Transistoren 
nehmen? Davon habe ich nämlich gar keine Ahnung... ;-)

Schon mal danke an alle die mir zur Erleuchtung verhelfen wollen!

Grüße
p
Gast #2621299
Lesenswert?
• ▲
▼
Peer H. schrieb:
> Hat jemand eine Idee wie man RX und TX parallel schalten kann und den
> Arduino nur jeweils eines von beiden auslesen kann?

RX sollte ein Eingang sein und TX ein Ausgang.
Die sollte man auf der Arduino-Seite problemlos verbinden können.
Besser wäre es, die beiden Pins mit einem Widerstand zu entkoppeln 
(1kohm?).
Dann kann dein TX-Pin 0 ausgeben und "der Gerät" eine 1, ohne, dass es 
zu einem Kurzschluß kommt.
Der Widerstand darf auch gerne größer sein...
(Firma: matzetronics) #2621327
Lesenswert?
• ▲
▼
Der RS-485 Standard ist z.B. ein Half-Duplex Protokoll, welches mit 
Tranceivern arbeitet, die per Port auf Senden und Empfangen umgestellt 
werden. Hier z.B. ein paar geeignete Tranceiver von Maxim:
http://www.maxim-ic.com/datasheet/index.mvp/id/1111
Sie benötigen also ausser RXD und TXD noch ein zusätzliches Signal. 
Dafür ist dieser Bus recht robust und kann über dutzende Meter gezogen 
werden.
Gast #2621329
Lesenswert?
• ▲
▼
Matthias Sch. schrieb:
> Der RS-485 Standard ist z.B. ein Half-Duplex Protokoll, welches mit
> Tranceivern arbeitet, die per Port auf Senden und Empfangen umgestellt
> werden. Hier z.B. ein paar geeignete Tranceiver von Maxim:
> http://www.maxim-ic.com/datasheet/index.mvp/id/1111
> Sie benötigen also ausser RXD und TXD noch ein zusätzliches Signal.
> Dafür ist dieser Bus recht robust und kann über dutzende Meter gezogen
> werden.

Alkohol am frühen Morgen?
Was hat RS485 mit oneWire zu tun?
#2621357
Lesenswert?
• ▲
▼
Peer H. schrieb:
> ich probiere gerade ein Gerät welches entweder sendet oder empfängt mit
> einem Arduino zu verbinden und dafür die RX/TX Ports zu verwenden.

K-Line wäre da eine Lösung. Man liest zwar selber mit, was man sendet, 
aber das kann man auch zur Kollisionserkennung benutzen.
Ungefähr so:
1
______         R1
2
      |    ___ 1kΩ
3
   VCC|---|___|---+
4
      |           |
5
    RX|-----------*
6
µC    |     D1    |
7
    TX|----|<|----*----o K-Line
8
      |   1n4148
9
   GND|----------------o GND
10
______|
Die K-Line kann durch TX nur "runter" gezogen werden, dadurch erhält man 
ein "wired-and" aller angehängten TX-Leitungen. Über RX kann man wie 
gewohnt einlesen. Einzig gilt zu beachten, dass man, wenn man die 
Kollisionserkennung nicht braucht, den Receiver vor jedem Senden 
abschalten und danach wieder anschalten muss.

Andere Leute setzen ein Protokoll mit drauf und nennen das dann Lin-Bus.

Wiederrum andere nehmen einen Transistor(NPN, Emitterschaltung), um die 
K-Line runter zu ziehen. Dieser Transistor muss dann natürlich über eine 
Inverterstufe angesteuert werden, das kann auch wieder ein Transistor 
sein.

mfg mf
Gast #2621375
Lesenswert?
• ▲
▼
P. H. schrieb:

> Hat jemand eine Idee wie man RX und TX parallel schalten kann und den
> Arduino nur jeweils eines von beiden auslesen kann?

Diese Lösung gibt es seit Jahren, sie nennt sich LIN bzw ISO K-Line. 
Dafür gibt's fertige Chips, die sind dann auch kurzschlussfest etc.

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.