Forum: Mikrocontroller und Digitale Elektronik RS232 über eine Leitung


von RS (Gast)


Lesenswert?

Hallöchen :-)

ist es möglich die RS232-Schnittstelle über nur eine Leitung zu 
realisieren?

Hat jemand sowas vielleicht schon programmiert?

Was muss man beachten? (sowohl Hardware als auch Software)


Ein Sensor soll über RS232 mit dem PC verbunden werden. Damit der Sensor 
nicht zu viele Verdrahtungen besitzt, soll die RS232-Interface über eine 
Leitung erfolgen.

Vielen Dank schon mal für die Hilfe

von RS (Gast)


Angehängte Dateien:

Lesenswert?

das Bild habe ich vergessen...

von Falk B. (falk)


Lesenswert?

Halbduplex ist das Zauberwort.

MfG
Falk

von Ekschperde (Gast)


Lesenswert?

Zweidrahtmodem ist das Zauberwort :-)
Dann geht auch Duplex.

von RS (Gast)


Lesenswert?

für Halbduplex sorgt doch die Software oder nicht?

von Falk B. (falk)


Lesenswert?

@ RS (Gast)

>für Halbduplex sorgt doch die Software oder nicht?

Teils. Die RS232 Treiber müssen das aber auch mitmachen (abschaltbarer 
Treiber).

MFG
Falk

von RS (Gast)


Lesenswert?

könnt Ihr mir mehr Infos geben, bitte?

von Ralf (Gast)


Lesenswert?

Aber nicht vergessen, die beiden Tx zu entkoppeln, sonst raucht es!

Ralf

von RS (Gast)


Lesenswert?

kann ich die Rx- und Tx-Leitungen einfach mitanander verbinden?

von Falk B. (falk)


Lesenswert?


von RS (Gast)


Lesenswert?

o man ich hasse das Leben, warum muss alles immer so kompliziert sein 
:'(

von RS (Gast)


Lesenswert?

kann mir jeman vielleicht Paar Tipps geben, wie die Softwareroutine 
aussehen könnte?

von Falk B. (falk)


Lesenswert?

Master und Slave sind auf Empfangen geschalten
Der Master schaltet auf senden
Der Master sendet seine Daten
Am Ende schaltet der Master wieder auf empfangen, z.B. durch den TXC 
Interrupt

Der Salve empängt die Daten und berechnet die Antwort
Der Slave schaltet auf senden
Der Slave sendet seine Daten
Am Ende schaltet der Slave wieder auf empfangen, z.B. durch den TXC 
Interrupt

Beginne am Anfang

MFg
Falk

P.S. Was ist daran so kompliziert?

von RS (Gast)


Lesenswert?

das komplizierte an der Sache ist, dass ich mir nicht vorstellen kann, 
wie ich mit NUR EINER LEITUNG einen Mikrokontroller mit dem PC verbinden 
kann.
Wenn ich da eine Idee hätte, würde ich die Software ohne große Probleme 
meistern, denke ich.

von Michael G. (linuxgeek) Benutzerseite


Lesenswert?

Wenn die Frage gestattet ist: Worin besteht eigentlich der Gewinn? Ob 
nun eine oder zwei Leitungen, das ist doch kein nennswerter Unterschied, 
vor allem wenn Du ein Kabel verwendest...

von RS (Gast)


Lesenswert?

naja der Gewinn liegt zum Beispiel darin, dass es 4 adrige Kabel 
existieren und man nicht auf 5 adrige umsteigen möchte

von Michael G. (linuxgeek) Benutzerseite


Lesenswert?

Muss denn der Sensor ueberhaupt in beide Richtungen kommunizieren? 
Sprich, empfaengt er ueber den RS232-Link auch Steuersignale oder sendet 
er nur?

von juppi (Gast)


Lesenswert?

hallo

eine D und ein R gegen + auf beiden seiten zur entkopplung.
wurde vor 20 Jahren gemacht auch ohne Int.

MfG

von Thomas (Gast)


Lesenswert?

wie wär's denn einfach mit einem LIN-Treiber?
z.B. TJA1020 von NXP?
Gruß

von RS (Gast)


Lesenswert?

>Muss denn der Sensor ueberhaupt in beide Richtungen kommunizieren?
der Sensor antwortet auf die Steuersignale

>wie wär's denn einfach mit einem LIN-Treiber?
es ist ja auch so was wie LIN. Gibt es LIN auf RS232?

von juppi (Gast)


Lesenswert?

@Thomas (Gast)

http://miredaktion.sv-www.de/imperia/md/upload/article/234pdf.pdf


fast das gleiche Prinzip!

MfG

von RS (Gast)


Lesenswert?

hi,

ich bin's noch mal :-)..

Die Hardware funktioniert so weit ganz gut, aber ich habe ein kleines 
Problem mit der Software.

Und zwar ist es so, dass ich mehrere Bytes empfange und sie in eine 
Array speichere. Das Ende erkenne ich durch CR (carriage return ~ 0x0D). 
Klappt alles ganz gut. Aber bei der Auswertung habe ich keine gute 
Lösung.

Ich will, je nachdem welche Bytes ich erhalten habe, die entsprechende 
Antwort zurücksenden.
D.h. wenn ich so was erhalte:
0x21
0x20
0x23
0x0d (für das Ende)

will ich antworten mit:
0x45
...

Die Anzahl der Bytes die ich erhalte, sind unterschiedlich (von 0 bis 
10).

Am liebsten hätte ich das ganze mit der SWICTH-Anweisung programmiert, 
aber bei switch-Anweisung kann ich nur auf einen Character- oder 
Integer-Wert abfragen.
Mir fällt an dieser stelle nur die if-Anweisung mit strcmp() ein:
1
//empf: Array für die empfangene Characters
2
//sx eine Liste von soll-Werten
3
4
x=strcmp(empf,s1);
5
if( !x )
6
{
7
  //beide gelich, tu was
8
}
9
10
x=strcmp(empf,s2);
11
if( !x )
12
{
13
  //beide gelich, tu was
14
}
15
16
x=strcmp(empf,s3);
17
if( !x )
18
{
19
  //beide gelich, tu was
20
}
21
22
x=strcmp(empf,s4);
23
if( !x )
24
{
25
  //beide gelich, tu was
26
}
27
.......

Gibt es eine bessere Methode?? Es muss doch bestimmt was einfacheres 
geben..

Danke
RS

von RS (Gast)


Lesenswert?

hmm.. hab immer noch keine andere Lösung entdeckt :-D

von Peter D. (peda)


Lesenswert?

RS wrote:
> Hallöchen :-)
>
> ist es möglich die RS232-Schnittstelle über nur eine Leitung zu
> realisieren?

Ja, überhaupt kein Problem.

Wenn man sich mal die Eingangsdaten eines RS232 Chips ansieht (z.B. 
MAX232), fällt auf, daß die vollkommen TTL-kompatibel sind.

Ich benutze daher ne wired OR Schaltung in meinem Bootloader:

http://www.mikrocontroller.net/attachment/29691/fboot18.zip

Beitrag "UART Bootloader ATtiny13 - ATmega644"

Der PC sendet über den Widerstand 4,7k und der AVR sendet mit open drain 
Ausgang, d.h. strong High für Low und tristate für High (RS232 Pegel ist 
ja invertiert).

Damit der PC weiß, was ist sein Echo und was wurde wirklich vom AVR 
gesendet, zählt er die Bytes einfach mit.


Peter

von Dietmar B. (dietmar1)


Lesenswert?

juppi schrieb:
> hallo
>
> eine D und ein R gegen + auf beiden seiten zur entkopplung.
> wurde vor 20 Jahren gemacht auch ohne Int.
>
> MfG

Hallo zusammen,

auf der Suche nach einer RS232 Anbindung im Halbduplex bin ich auf den 
Artikel gestoßen.
Ich habe einen Laptimer mit einem BNC Anschluss, welcher auf RS232 
angeschlossen wird.
Leider fehlt mir das Schnittstellenkabel. Eine Belegung dafür bekomme 
ich nicht.
Ich könnte mir vorstellen, dass in dem Adapterkabel zwischen BNC und 
RS232 Stecker eine einfache Schaltung verbaut ist.
Leider habe ich keine Vorstellung, wie über ein Widerstand und Diode die 
Beschaltung realisiert werden kann. Vermutlich ist das für ein Profi 
kein Problem.
Könnte mir jemand freundlicherweise eine Skizze dieser Beschaltung 
zukommen lassen oder mir das erklären und welche Bauteilwerte verwendet 
werden sollen?

Vielen Dank im Voraus.

Dietmar

von Dietrich L. (dietrichl)


Lesenswert?

RS schrieb:
> mit NUR EINER LEITUNG einen Mikrokontroller mit dem PC verbinden

Aber eine GND-Leitung hast du schon? Denn ein Stromkreis hat immer 2 
Leitungen!
Oder ganz ohne Leitung: per Funk ;-)

von Dietmar B. (dietmar1)


Lesenswert?

gehe davon aus, dass GND über den Schirm vom BNC geholt wird
RX und TX über eine Leitung im Halbduplex.
Wie oben Beschrieben, soll das mit Diode und Widerstand realisierbar 
sein.

von Asdf Q. (Gast)


Lesenswert?

Dietmar B. schrieb:
> gehe davon aus, dass GND über den Schirm vom BNC geholt wird
> RX und TX über eine Leitung im Halbduplex.
> Wie oben Beschrieben, soll das mit Diode und Widerstand realisierbar
> sein.

Solche Lösungen werden seit Jahrzehnten im Automobilbereich verwendet. 
Google mal nach "K-Line" oder "LIN-Bus". Im wesentlichen hast Du einen 
Ruhepegel, der den High-Zustand darstellt (über Pullup eingestellt), und 
wenn ein Teilnehmer sendet wird der Low-Pegel aktiv über 
open-collector-Treiber angelegt.

von Hannes (Gast)


Angehängte Dateien:

Lesenswert?

Dietmar B. schrieb:
> juppi schrieb:
>> hallo
>>
>> eine D und ein R gegen + auf beiden seiten zur entkopplung.
>> wurde vor 20 Jahren gemacht auch ohne Int.
>>
>> MfG
>
> Hallo zusammen,
>
> auf der Suche nach einer RS232 Anbindung im Halbduplex bin ich auf den
> Artikel gestoßen.


Entspricht wohl funktionell dem Vorschlag "Das mc-Netzwerk" Thema in der 
MC 4/1983 und 5/1983.

Hubert Eing hatte dazu schon was in der ELEKTRONIK 8/1982, S. 87 unter 
dem Titel "SP-Netz" publiziert.

von Georg (Gast)


Lesenswert?

Falk B. schrieb:
>>für Halbduplex sorgt doch die Software oder nicht?
>
> Teils. Die RS232 Treiber müssen das aber auch mitmachen (abschaltbarer
> Treiber).

Schön und gut, aber kann der Sensor das auch?

Abgesehen davon, abschaltbare Sender gibt es bei RS485, bei RS232 ist 
das eher unüblich.

Georg

von Wolfgang (Gast)


Lesenswert?

Soul E. schrieb:
> Solche Lösungen werden seit Jahrzehnten im Automobilbereich verwendet.
> Google mal nach "K-Line" oder "LIN-Bus".

Was hat LIN mit RS232 zu tun?
RS232 ist eine voll duplexfähige Spezifikation der physikalischen 
Schnittstelle und kein Bus, LIN ist ein Eindraht-Bus.

von EAF (Gast)


Lesenswert?

Ralf schrieb:
> Aber nicht vergessen, die beiden Tx zu entkoppeln, sonst raucht es!

RS232C ist per Definition Dauerkurzschlussfest.
Also kein Rauch.

von Dietmar B. (dietmar1)


Lesenswert?

Vielen Dank für die bisherigen Infos.
Bisher zeichnet sich für mich keine Lösung ab.
Für mich hat sich das so gelesen, dass es sich mit einer einfachen, 
passiven Schaltung mittels Dioden und Widerständen realisieren lässt, da 
das ganze ja in einem RS 232 Stecker verbaut sein muss.

Vielleicht ist in dem Stecker ja auch ein Wandler o.ä. verbaut.

von c-hater (Gast)


Lesenswert?

RS schrieb:

> ist es möglich die RS232-Schnittstelle über nur eine Leitung zu
> realisieren?

Naja, eine Signal-Leitung und GND, also insgesamt zwei.

> Hat jemand sowas vielleicht schon programmiert?

Ja, ich z.B. Vermutlich aber auch noch Zehntausende andere.

> Was muss man beachten? (sowohl Hardware als auch Software)

Hardware: TXe müssen entkoppelt werden (1 Diode pro Sender+gemeinsamer 
Lastwiderstand). Bei hinreichend konfigurierbarer UART-Hardware kann man 
auf die Diode verzichten, indem man OpenDrain-Ausgänge benutzt.

Software: Der Receiver muss wissen, dass er auch immer den vom eigenen 
Sender produzierten Kram mithört. Und: Multi-Master ist relativ 
schwierig umzusetzen, kann sich aber den Sachverhalt aus dem vorigen 
Satz zunutze machen, um Kollisionen relativ zuverlässig zu erkennen. 
Zusätzlich braucht man aber ein Protokoll, was dies unterstützt. Sprich: 
erstes Byte einer jeden Nachricht muss so eine Art Adressbyte sein, was 
den Absender eindeutig identifiziert.

von A. S. (Gast)


Lesenswert?

Bei einer normalen RS-232-Leitung sind -5..15V auf der Leitung (bei 
Ruhepegel 1 und den vorgesehenen Invertern).

Die Dioden müssen also im Ruhepegel sperren.

Also Dioden in Durchlassrichtung von TX nach RX an jedem Device. Und 
dann beide RX verbinden.

Das Problem: Der eigene RX zieht das Signal gegen GND, so dass die 
mögliche Übertragungslänge mehr als halbiert wird.

von Dietmar B. (dietmar1)


Angehängte Dateien:

Lesenswert?

Habe nun ein Adapterkabel beschafft
Wird mit Transistoren etc. realisiert

von Dietmar B. (dietmar1)


Angehängte Dateien:

Lesenswert?

Rückseite

von Tim H. (tim_h33)


Lesenswert?

Dietmar B. schrieb:
> Wird mit Transistoren etc. realisiert

Ja man voll die Transistoren

von Wolfgang (Gast)


Lesenswert?

Dietmar B. schrieb:
> gehe davon aus, dass GND über den Schirm vom BNC geholt wird

BNC hat keinen Schirm. Den gibt es nur bei Triaxialkabel.
Der Außenleiter bei BNC wird mit für die Signalübertragung benötigt.

von Ben B. (Firma: Funkenflug Industries) (stromkraft)


Lesenswert?

Hey wenn ihr schon mal dabei seid, könnt ihr mir sagen wie man Drehstrom 
über eine einzelne Leitung überträgt? 5 Adern für die Phasen, Null und 
dann auch noch die Erdung ist doch wirklich lästig!

von Lothar (Gast)


Lesenswert?

Ben B. schrieb:
> Hey wenn ihr schon mal dabei seid, könnt ihr mir sagen wie man Drehstrom
> über eine einzelne Leitung überträgt?

https://memory-alpha.fandom.com/de/wiki/Plasmaleitung

von Gerhard O. (gerhard_)


Lesenswert?

Mit der SDI-12 Spezifikation wird ein 1200Bd  Eindraht Half-Duplex 
Serial Bus für Sensor Communication beschrieben:

http://www.sdi-12.org/current_specification/SDI-12_version-1_4-Jan-30-2021.pdf

Verwendet zwar keine RS232 Pegel, ist aber möglicherweise als 
Ansatzpunkt für Ähnliches von Interesse. In der Spezifikation wird auch 
die dazu notwendige (einfache) Hardware behandelt.

Auch Protokollfragen werden in B-1 behandelt.

Auf Seite A-1 finden sich ausführliche Schaltungsverwirklichungs 
Informationen.

: Bearbeitet durch User
von Anja (Gast)


Lesenswert?

Ben B. schrieb:
> Hey wenn ihr schon mal dabei seid, könnt ihr mir sagen wie man Drehstrom
> über eine einzelne Leitung überträgt? 5 Adern für die Phasen, Null und
> dann auch noch die Erdung ist doch wirklich lästig!

Dafür gibts doch Adapter Drehstrom auf Gardena.

https://etel-tuning.eu/produkt/adapter-drehstrom-auf-gardena/

zum Thema oben:
man könnte das ganze auch als LIN-Bus realisieren dafür gibt es fertige 
Treiber-Bausteine.

Gruß Anja

von Bauform B. (bauformb)


Lesenswert?

A. S. schrieb:
> Das Problem: Der eigene RX zieht das Signal gegen GND, so dass die
> mögliche Übertragungslänge mehr als halbiert wird.

MAX3222 und ähnliche RS-232-Transceiver haben einen POWERDOWN aka SHDN 
Eingang. Damit werden die TX-Ausgänge abgeschaltet und ziehen dann noch 
max. 25uA. Das Ganze funktioniert dann praktisch wie RS-485, nur mit 
echten RS-232-Pegeln und ohne Dioden und Widerstände.

Mit Transceivern, die zwischen RS-232 und RS-485 umschaltbar sind, 
funktioniert das genauso (z.B.XR3160E).

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.