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
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.
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
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.
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.
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).
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 ?
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.
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
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
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.
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
> 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
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?
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.
Dr. Sommer schrieb:> Oder du portierst die ganze Anwendung auf ... Ethernet
Das ist jetzt nicht wirklich einfacher, als alle vorher diskutierten
Varianten von UART.
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?
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
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
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).
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.
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?
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.
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...
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 :)