Forum: Mikrocontroller und Digitale Elektronik RS232 zwischen 5V embedded Geräten


von m_golbs (Gast)


Lesenswert?

Hallo,

RS 232 V.24 arbeitet ja physikalisch zwischen "-12V und 12V", oder?

Aus anderer Quelle "Gültige Signalpegel liegen in den Bereichen von +3V 
und +15V und - 3V und -15V. Pegel zwischen -3 V und +3 V sind nicht 
zulässig. Der Standard sieht einen maximalen Pegelhub von ± 25 V vor. 
Üblich sind ± 5V, ± 10V, ± 12V und ± 15V. Die tatsächlich anliegenden 
Pegel sind abhängig von der Treiberschaltung. - kompendium.infotip.de"

Wie kann man da ran gehen, wenn man ein 5V embedded Linux System, beagle 
bone oder raspberry Pi per USBtoRS232 Adapter mit einem ATMega verbinden 
möchte. Wo bekommt man die höheren Potentiale da rein?

Über Infos wäre ich dankbar.

Gruß Markus

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Dafür gibt es Konverterchips mit internen Ladungspumpen. Populär für 5V 
Systeme ist z.B. der MAX232 von Maxim und jeder Menge anderer 
Lieferanten (HIN232, LT232 etc.). Für 3,3V Systeme wurde z.B. der 
MAX3232 erfunden.

von georg (Gast)


Lesenswert?

m_golbs schrieb:
> Wo bekommt man die höheren Potentiale da rein?

Sender/Empfänger für RS232C sind Pegelwandler von TTL-Pegel auf +-15 V 
und umgekehrt, meistens invertierend. Die Empfänger brauchen keine 
zusätzliche Stromversorgung, die vertragen einfach die höheren 
Spannungen am Eingang. Sender brauchen natürlich entsprechende 
Versorgungsspannungen, entweder nimmt man einen DC-DC-Wandler auf +-12 V 
oder einen IC wie MAX232/3232, bei dem so ein Wandler schon eingebaut 
ist. Die kommen zwar nicht auf +-12 oder +-15 V, höchstens auf +-10 V, 
aber das reicht für eine normgerechte Verbindung.

m_golbs schrieb:
> per USBtoRS232 Adapter

Da muss sichergestellt sein, dass der auch wirklich auf +-10V oder mehr 
wandelt - oft werden unter dieser Bezeichnung auch Schaltungen verkauft, 
die nur 3,3 V oder 5 V Signale ausgeben, die dürfen natürlich nicht an 
echte RS232C-Signale angeschlossen werden.

Georg

von GEKU (Gast)


Lesenswert?

https://www.elv.at/elv-usb-modul-um2102n-bausatz.html

Modul hat USB Stecker und Pegelkonverter integriert.

von Wolfgang (Gast)


Lesenswert?

m_golbs schrieb:
> Wie kann man da ran gehen, wenn man ein 5V embedded Linux System, beagle
> bone oder raspberry Pi per USBtoRS232 Adapter mit einem ATMega verbinden
> möchte.

Was willst du da mit RS-232?
Der Raspberry hat USB, aber der ATmega kein RS-232.

von Stefan F. (Gast)


Lesenswert?

Ich würde heute nur noch RS232 nutzen, wenn das Gerät am anderen Ende 
des Kabels es unbedingt so will. RS232 stammt aus einer Zeit, als IBM 
moch glaubte, man braucht sich beim Bau von Computern nicht um die 
Grundlagen der Wellenausbreitung zu scheren. Diese Technik war meiner 
Meinung nach ein grobes Fehldesign.

RS422 Treiber sind viel einfacher, zuverlässiger und erlauben erheblich 
längere Kabel. Was die elektrischen Pegel angeht, ähneln sie dem CAN Bus 
sehr, der seit zig Jahren in KFZ verwendet wird. Ebenso stark verwandt 
mit DMX in der Bühnentechnik sowie diverse Bus-Systeme in der 
Haustechnik.

von Dr. Sommer (Gast)


Lesenswert?

m_golbs schrieb:
> beagle bone oder raspberry Pi per USBtoRS232 Adapter mit einem ATMega
> verbinden

Wozu der Adapter? Beide SBC haben direkt UARTs eingebaut, welche mit 
3,3V kompatibel sein sollten (Spannungsteiler verwenden).

von Schorsch X. (bastelschorsch)


Lesenswert?

RS232 ist eine Norm, die einfach einige Jahre auf dem Buckel hat und man 
sehe und staune: Immer noch verwendet wird. Also nimm die Daten und pass 
dein Gerät darauf an, wenn du eine Norm verwenden willst. Damit lassen 
sich Generationen von Geräten miteinander verbinden ohne allzu großen 
Aufwand.

Ist das denn was Schlechtes ?

von Einer K. (Gast)


Lesenswert?

m_golbs schrieb:
> Wo bekommt man die höheren Potentiale da rein?
z.B. ebay: 272413019707


Wobei ich hier auch keine Notwendigkeit sehe.

von Wolfgang (Gast)


Lesenswert?

m_golbs schrieb:
> Wo bekommt man die höheren Potentiale da rein?

MAX232 Nachfolger

von Jim M. (turboj)


Lesenswert?

m_golbs schrieb:
> Wo bekommt man die höheren Potentiale da rein?

Am besten gar nicht. Denn man arbeitet dann eben nicht mit RS232 sondern 
mit UART.

Allerdings darf man dann auch keinen USB2RS232 Wandler benutzen, sondern 
einen USB2UART. Letzterer hat keinen MAX232 zur Wandlung auf RS232 
verbaut.

Achtung: Es gibt 5V und 3V USB2UART Wandler, und es gibt moderne µC die 
keine 5V mehr an den IOs vertragen. Grade auch beim RPi würde ich da 2x 
nachschauen was der verträgt.

von m_golbs (Gast)


Lesenswert?

Hallo,

vielen Dank für die Info. Einen MAX232 verwende ich auf einer gekauften 
Platine schon. Wenn der dann mit 5V versorgt wird entsteht per 
Ladungspume der notwendige V.24 Potentialunterschied?

Kann es dann zusätzlich notwendig werden die GND's der zwei Systeme auf 
ein Niveau zu ziehen? Habe gerade den Effekt, dass die RS232 zwischen 
ATMega und Laptop nur dann läuft, wenn der STK200 Programmieradapter mit 
angeschlossen ist.

Gruß und Dank Markus

von HildeK (Gast)


Lesenswert?

m_golbs schrieb:
> Kann es dann zusätzlich notwendig werden die GND's der zwei Systeme auf
> ein Niveau zu ziehen?

Unbedingt, man benötigt Massebwzug!

von m_golbs (Gast)


Lesenswert?

Hallo,

vielen Dank für die umfangreichen Darstellungen. RS232 hat für mich den 
Vorteil einfach in einem ATMega & Co. umzusetzen zu sein. Ich brauche es 
eigentlich nur für debugging und zum Logging von Daten über Wochen und 
Monate. Geschwindigkeit, Datenrate & Co. spielen in meiner Anwendung 
keine Rolle, Zykluszeit 10 sec. mit 9600 bits. Ich überlege als 
Alternative zum RPi mit "GPIO zu Serieller UART Port (MAX232)" einen 
alten noch vorliegenden dnp7520 (NS7520 ARM7TDMI) zu verwenden, in C 
einen RS232 zu Socket Server zu programmieren. Muss mal die alte 
Entwicklungsumgebung des ARM7TDMI auspacken , altes Linux in eine VM, 
und schaun ob die ganze Registerproblematik für einen Laien zeitlich 
überschaubar verständlich ist. Der Socketserver muss ja nur analog 
minicom Daten von der RS232 auf den Port legen. Dann habe ich die 
universelle LAN Schnittstelle und kann es überall hin einbinden, 
kombinieren... Habe so etwas schon mal vor 15 Jahren für eine 
Applikation mit CAN gemacht.

@Masseausgleich: Der RS232 Anschluss vom Laptop über das "Modem Kabel" 
hin zur RS232 Platine mit MAX232 sollte doch die Masse führen? Der 
ATMega hat auch die Masse und Versorgung an der MAX232 Platine. 
Eigentlich müsste der Ausgleich dann ja da sein?

Gruß und Dank Markus

von (prx) A. K. (prx)


Lesenswert?

Stefanus F. schrieb:
> RS232 stammt aus einer Zeit, als IBM
> moch glaubte, man braucht sich beim Bau von Computern nicht um die
> Grundlagen der Wellenausbreitung zu scheren.

RS232 stammt von 1960, und damit aus einer Zeit, in der Modemfunktionen 
über etliche Leitungen statt über ein Protokoll angesteuert wurden, weil 
es noch keine Mikroprozessoren gab, und in der neue Rechner aus 
einzelnen Germanium-Transistoren bestanden. Bei V.24 in voller Schönheit 
sind es dann noch ein paar Leitungen mehr als bei RS232. Diese durchweg 
differentiell auszuführen hätte die Leitungsanzahl verdoppelt und den 
Interfaceaufwand ebenso.

: Bearbeitet durch User
von georg (Gast)


Lesenswert?

m_golbs schrieb:
> Der RS232 Anschluss vom Laptop über das "Modem Kabel"
> hin zur RS232 Platine mit MAX232 sollte doch die Masse führen?

Ja, eine minimale serielle Verbindung benötigt TxD, RxD und GND. Für 
viele Zwecke genügt das auch.

Georg

von Olaf (Gast)


Lesenswert?

> des Kabels es unbedingt so will. RS232 stammt aus einer Zeit, als IBM
> moch glaubte, man braucht sich beim Bau von Computern nicht um die
> Grundlagen der Wellenausbreitung zu scheren. Diese Technik war meiner
> Meinung nach ein grobes Fehldesign.

Wenn du solche Dinge sagst dann hinterlaesst du keinen besonders 
fachlich gebildeten Eindruck um es mal hoeflich zu sagen.

RS232 hat bis jetzt mindestens 50Jahre das gemacht was es machen sollte. 
Das ist eine Entwicklungsleistung die ich den meisten Schaltungen die 
ich in diesem Forum so sehe nicht entnehmen kann.

Olaf

von Dr. Sommer (Gast)


Lesenswert?

m_golbs schrieb:
> RS232 hat für mich den Vorteil einfach in einem ATMega & Co. umzusetzen
> zu sein

Eben nicht. Du brauchst immer noch einen Spannungswandler a la MAX232. 
Am einfachsten ist es, den UART vom ATmega direkt mit dem UART vom 
PI/BBB zu verbinden, ganz ohne RS232 und ohne USB. Braucht höchstens 2 
Widerstände. Einfacher, billiger und effizienter geht es nicht.

m_golbs schrieb:
> Ich überlege als Alternative zum RPi mit "GPIO zu Serieller UART Port
> (MAX232)" einen alten noch vorliegenden dnp7520 (NS7520 ARM7TDMI) zu
> verwenden, in C einen RS232 zu Socket Server zu programmieren

Ist dann also exakt das gleiche wie mit dem PI/BBB?

von Dr. Sommer (Gast)


Lesenswert?

Oder du portierst die ganze Anwendung auf einen STM32F4 welcher 
integriertes Ethernet hat, oder einen ESP32 mit integriertem WLAN. Dann 
braucht es überhaupt keine serielle Schnittstelle/RS232 mehr.

von Stefan F. (Gast)


Lesenswert?

Dr. Sommer schrieb:
> Oder du portierst die ganze Anwendung auf ... Ethernet

Das ist jetzt nicht wirklich einfacher, als alle vorher diskutierten 
Varianten von UART.

von Dr. Sommer (Gast)


Lesenswert?

Stefanus F. schrieb:
> Das ist jetzt nicht wirklich einfacher, als alle vorher diskutierten
> Varianten von UART.

Nö, aber "direkter", die Daten nehmen dann weniger Umwege. Die Frage ist 
halt, wenn man schon einen ARM7TDMI oder so hat, wozu dann noch der 
ATmega?

von m_golbs (Gast)


Lesenswert?

Hallo,

Dr. Sommer schrieb:
> wenn man schon einen ARM7TDMI oder so hat, wozu dann noch der
> ATmega?

Ich bin nur ein Hilfselektroniker und Hilfsinformatiker, alle paar 
Monate oder im Schadensfall. Ich versuche für meine Aufgaben mir 
Standards zu definieren die den Zweck minimal erfüllen, lange verfügbar 
sind, nicht immer alles neu erfinden, erlesen und erleiden zu müssen.

Warum 8bit Atmels's? Es werden wohl einige Aufgaben in nächster Zeit 
umzusetzen sein, und ich habe nur einen ARM7TDMI auf Hutschiene, RS232 
nach außen geführt, frisst wohl nicht so viel Strom und kann per 
Ethernet an RPi, BB & Co. Daten liefern, dort z.B. loggen. RS232 to 
Socket Code kann dann wohl auch portiert werden. Außerdem kommt man beim 
Hutschiene ARM7TDMI nicht direkt an alle Anschlüsse ran. Beim Grillen, 
verfusen & Co. sind die Atmels einfach kostengünstiger :-) Warum 
Microchip, ehemals Atmel? Weil es da ein tolles Forum mit Anleitungen 
vor Jahren schon gab und noch gibt. Bin nun mit den ATMegas und ATTinys 
halbwegs auf Kurs, das mit vertretbarem Aufwand. An sich reichen mir für 
die kleinen MSR Aufgaben die verfügbaren 8bit Risk Atmels. Bei größeren 
Aufgaben nutze ich lieber Systeme auf Basis Debian Linux, aktuell primär 
ARM oder PPC. Amtels mit CAN, USB oder Ethernet sind nicht mal schnell 
zu programmieren und der Code ist für Laien schwerer verständlich. Habe 
vor Jahren mit Ethersex per ATMega einiges probiert, AT90CAN128 für 
Joystick zu CAN Anbindung mich versucht. Nur das dauert alles recht 
lange...

Dr. Sommer schrieb:
> Am einfachsten ist es, den UART vom ATmega direkt mit dem UART vom
> PI/BBB zu verbinden, ganz ohne RS232 und ohne USB. Braucht höchstens 2
> Widerstände. Einfacher, billiger und effizienter geht es nicht.

Wieviele Meter sind mit der Schaltung und 9600 bits möglich?

Gruß und Dank Markus

von S. R. (svenska)


Lesenswert?

m_golbs schrieb:
> Wieviele Meter sind mit der Schaltung und 9600 bits möglich?

Falsche Frage. Wieviele Meter brauchst du denn?

Mit einer 5V-Leitung und Serienwiderständen als 3,3V-Pegelwandler kommst 
du nicht besonders weit. Wenn du den AVR mit 3,3V betreibst, kannst du 
die Widerstände weglassen und hast dann etwas mehr Freude an den 
Signalen. Beides ist nur für kurze Strecken geeignet.

Für gestörte Umgebungen bzw. größere Abstände gibt es
(a) höhere Spannungen ("echtes" RS-232)
(b) LVDS, RS485
(c) andere Systeme

von A. S. (Gast)


Lesenswert?

Ein MAX232 mit Platine und Cs kostet beim Chinaman irgendwie 1€ oder so.

In der Praxis klappte es trotzdem relativ zuverlässig, eine 
PC-Schnittstelle (oder die typischen USB-RS232-Wandler) direkt mit je 
einem Inverter anzusteuern.


Ja, der Sender muss >5V bzw. <-5V bereitstellen, ja, die 
Umschaltschwelle kann irgendwo zwischen -3V...3V liegen, ... aber sie 
kann auch bei etwa 1V liegen. Und das tut sie in praktisch jeder(!) 
verfügbaren HW!

Wenn Du den Pegel also invertierst (0V->5V, 5V->0V), dann kannst Du es 
auch direkt an den PC anschließen, mit je 1k..10k in Serie. Der begrenzt 
beim Eingang den Strom durch die ClimbDioden (die bei Logik-Invertern 
mit drin sind, bei Komparatoren bitte prüfen), beim Ausgang den 
Kurzschlussstrom.

Als eingangsschaltung (PC->Deiner Schaltung) geht auch ein Transistor 
mit Basiswiderstand 4k7 als Eingang und Collektor-Widerstand 4k7 als 
Inverter zu Deiner Schaltung und Diode von Basis zu Kollektor um die 
Sättigung zu vermeiden.

Macht zwar alles von Preis und Platz her keinen Sinn (siehe oben, 
Chinaman), funktioniert aber zuverlässig, wenn man weiss, was man tut 
(also die Dimensionierung so halbweg den Gegebenheiten anpasst).

von S. R. (svenska)


Lesenswert?

A. S. schrieb:
> In der Praxis klappte es trotzdem relativ zuverlässig, eine
> PC-Schnittstelle (oder die typischen USB-RS232-Wandler) direkt
> mit je einem Inverter anzusteuern.

Es geht hier um die Verbindung eines Linux-SBCs (mit 3,3V-UART) und 
eines AVR (mit 3,3V- oder 5V-UART). Irgendwelche Tricks, um eine 
PC-Schnittstelle möglichst beschissen anzusteuern, sind da nicht nötig. 
Drei Drähte (plus ein Widerstand für unterschiedliche Spannung) reichen.

Die notwendige Datenrate ist gering, die gewünschte Entfernung (sowie 
Umgebung) nicht bekannt.

Im Übrigen liefert ein MAX232 oder MAX3232 definitiv keine ±12V, sondern 
eher so ±8V. Das hätte man bei richtigen Treiberbausteinen erst nach 
einigen zig Metern auf dem Kabel.

von m.n. (Gast)


Lesenswert?

m_golbs schrieb:
> Wieviele Meter sind mit der Schaltung und 9600 bits möglich?

Mit RS232-Treibern und Abschlußwiderständen an der Leitung kann man auf 
1 km bei 9600 Baud kommen. Mit 115k2 Baud noch auf 100 m.

S. R. schrieb:
> Im Übrigen liefert ein MAX232 oder MAX3232 definitiv keine ±12V, sondern
> eher so ±8V. Das hätte man bei richtigen Treiberbausteinen erst nach
> einigen zig Metern auf dem Kabel.

MAX3232 liefern ca. +/- 6 V @ VCC = 3 V.
Den 2. Teil Deiner Aussage mit "richtigen Treibern" verstehe ich nicht. 
Sind MAXe falsche Treiber?

von Stefan F. (Gast)


Lesenswert?

m.n. schrieb:
> Sind MAXe falsche Treiber?

Er meint vermutlich Treiber, die eine +/-12V Versorgung aus einem 
Netzteil beziehen. Sie liefern aufgrund der höheren und stabileren 
Spannungen ein besseres Signal/Rausch Abstand.

Ich habe die MAX3232 als brauchbare Kompromisslösung für die meisten 
Fälle kennen gelernt.

von Sebastian S. (amateur)


Lesenswert?

Irgendwie wiederholt sich alles. Also im Westen nichts Neues!

In sehr vielen Bereichen wird nichts Neues erfunden, sondern Standards 
einfach ausgenutzt.
Auf die uralte LP ging plötzlich mehr drauf, nachdem man dynamische 
Spur-/Rillenbreiten geschrieben hat.
Auf die ursprüngliche CD ging irgendwann mal mehr drauf, nachdem man, im 
Rahmen der erlaubten Toleranzen, einfach mehr Spuren draufpackte. Der 
vorgeschriebene Mindestabstand machte es.

RS232 hatte tatsächlich mal +/- 12V nötig. Die Definition selber sprach 
aber von einem toten Bereich von 3V. Also war plötzlich high, 
3,irgendwas Volt und konnte somit auch von einem 3,3V Prozessor 
geliefert werden.
Natürlich konnte man mit 12V weiter rufen, aber wer das nicht braucht...

von Dr. Sommer (Gast)


Lesenswert?

m_golbs schrieb:
> Es werden wohl einige Aufgaben in nächster Zeit
> umzusetzen sein, und ich habe nur einen ARM7TDMI auf Hutschiene, RS232
> nach außen geführt, frisst wohl nicht so viel Strom und kann per
> Ethernet an RPi, BB & Co. Daten liefern, dort z.B. loggen.

So richtig blicke ich durch deine Argumentation jetzt nicht durch, aber 
wie wäre es mit so etwas:

https://os.mbed.com/components/mbed-Rail-24-V/

Hutschiene-Kompatibel, hat Ethernet und diverse I/Os, und auch RS232, 
wobei man das dann gar nicht mehr braucht. Ist dann auch ein aktuellerer 
Controller (Cortex-M3) als der olle ARM7TDMI. Dank mbed Unterstützung 
sollte es recht einfach zu programmieren sein, und der Code dann 
einigermaßen gut übertragbar auf andere Systeme. Darauf könntest du 
deine Steuerungsaufgabe komplett umsetzen und die Daten dann direkt per 
Ethernet verschicken, ganz ohne RS232. Ethernet kann ja auch ziemlich 
lange Leitungen (mit Switch/Router unbegrenzt).

m_golbs schrieb:
> Beim Grillen,
> verfusen & Co. sind die Atmels einfach kostengünstiger :-)

Dank 24V-I/Os wäre o.g. Modul vermutlich Grill-Resistenter. Verfusen 
kann man diesen Controller gar nicht (hat keine Fuses!). Im Zweifelsfall 
ersetzt man das Controller-Modul.
Sind bei so einer Industrie-Anwendung (Hutschiene?) die Kosten wirklich 
so wichtig?

m_golbs schrieb:
> Weil es da ein tolles Forum mit Anleitungen
> vor Jahren schon gab und noch gibt.
mbed und ARM hat auch eine gute Community.

Ich will dir nichts vorschreiben, aber immer wenn ich von so 
Adapter-auf-Adapter-auf-Adapter-Lösungen lese gruselt es mich :)

ATmega UART - MAX232 - RS232-Leitung - MAX232 - ggf. USB-UART-Adapter - 
SBC/PI/dnp7520 - Ethernet - PC

vs.

mbed Rail Modul - Ethernet - PC

gleich viel schöner :)

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.