RS232 <=> RS485 Adapter

Hallo,

ich möchte mir einen Halfduplex RS232 RS485 Konverter bauen. Wo bekomme ich Baupläne her und wie kann ich das Gerät hinterher über eien Handshake-Leitung in C ansprechen / steuern?

Ich habe zwar schon einen Schaltplan aus einem Buch (Serial Port Complete Seite 201 allerdings mit einem RS232CPE-Modul), aber der scheint nicht zu funktionieren. Die Schaltung hier besteht nur aus 3 Modulen (9Pol-SubD-Stecker / -Buchse, MAX232CPE und sn75176BP-Transceiver)

Ich möchte mich in das Thema RS232 und RS485 einarbeiten und würde diesbezüglich gerne auch ein paar Beispiele ausprobieren.

Könnt Ihr mir Tipps geben? Worauf muss ich achten? Habt Ihr evtl. Quellcodes und Schaltpläne die Ihr mir zur Verfügung stellen würdet?

Vielen Dank für Eure Bemühungen

Michael Post

Reply to
Michael Post
Loading thread data ...

Michael Post schrieb:

Hallo,

das Problem ist die =DCbertragungsrichtung. Mit den heutigen UARTs mit=20 FIFO wei=DF die Software nicht wann wirklich das letzte Bit des letzten=20 Bytes gesendet wurde und die =DCbertragungsrichtung von Senden auf=20 Empfangen umgestellt werden darf. Die Schaltung m=FCsste wenigstens noch ein nachtriggerbares Monoflop=20 haben, die Zeitkonstante mu=DF passend zur Baudrate gew=E4hlt werden. Mit dem Monoflop hat man ein Signal wann endlich Ruhe beim Senden ist=20 damit auf Empfang umgeschaltet wird. Allerdings darf das was an der anderen Seite mit RS485 angeschlossen ist =

nicht zu fr=FCh antworten, es sollte noch mindestens die L=E4nge von drei= =20 Zeichen warten bevor es selber wieder sendet.

In C kannst Du die =DCbertragungsrichtung nur steuern wenn Du vom=20 Schnittstellenbaustein die n=F6tige Information bekommst, am besten einen= =20 Interrupt wenn FIFO Empty und Transmitter Empty vorliegt.

Bye

Reply to
Uwe Hercksen

Am einfachsten ist es, den 485 Baustein immer dann auf Senden zu schalten, wenn ein Startbit-Pegel anliegt.

Bei Stopbit-Pegel wird er wieder hochohmig (Empfangen).

An der A-Leitung muss dann ein 1k Pullup angeschlossen werden, und an der B-Leitung ein 1k Pulldown, damit der Bus in der Tristate-Phase in den Stopbitzustand geht.

Für kurze Distanzen geht das bis zu einigen 100 KBaud.

Bei langen Distanzen braucht es zusätzlich ein nachtriggerbares Monoflop, damit der Treiber solange niederohmig bleibt, bis der Pegelwechsel vorüber ist und die Buskapazität weitgehend auf Stopbitpegel umgeladen ist, und Abschlusswiderstände. Evtl. muss man die Pullup/Pulldownwiderstände auf 470R verkeinern und kann dann die Abschlusswiderstände etwas grösser auslegen.

Grüsse,

Peter

Reply to
Peter Heckert

Danke für die Antwort.

Bei mir handelt es sich erst einmal um einen Abstand von gut 3 Metern Kabellänge zwischen den Geräten.

Was meinst Du mit 1K-Pulldown und 1K-Pullup.

Bekomme ich die bei Reichelt und Konsorten?

Nach der Suche habe ich bei

formatting link
und
formatting link
nach "Pullup" nichts gefunden.

Vielen Dank

Michael

Reply to
Michael Post

Michael Post schrieb:

Hallo,

hast Du noch nie von Pullup Widerst=E4nden geh=F6rt? Ein Widerstand zwischen einem Signal und der + 5 V Versorgungsspannung.

1K bedeutet 1 Kiloohm.

Ich habe den Eindruck Dir w=E4re mit einem fertigen Wandler viel mehr=20 geholfen als mit einem Selbstbau.

Bye

Reply to
Uwe Hercksen

dann kann ich mich allerdings nicht in die Materie einarbeiten und Elektronik verstehen.

Ich bin eigentlich Informatiker.

MFg

Michael

Reply to
Michael Post

Hallo, Michael,

Du (michael.post) meintest am 04.02.05:

Du - das tut mir echt Leid!

Viele Grüße! Helmut

Reply to
Helmut Hullen

Hmm... Rs 485 ist etwas heavy zum Einsteigen. Für eine 100% Lösung des Problems (Vollautomatik,maximale Leitungslänge und Baudrate, Kompatibilität mit allen Fremdprodukten) braucht man eigentlich einen Mikroprozessor.

Wenn man sich etwas bescheidet, und sich mit kleinerer Leitungslänge und Baudrate zufrieden gibt, dann ist eine Sparlösung mit Monoflop genauso effektiv.

Ein Schaltbild, für die Lösung, die ich beschrieb, findet sich z.B. hier:

Mehr gibt es hier:

Die meisten Datenblätter enthalten Schaltbilder.

Meine Lösung weicht nur insofern davon ab, dass ich die Richtung nach jedem Datenbit umschalte. Das funktioniert dann für alle Baudraten.

Du müsstest also die Zeitkonstante des Timers auf die Länge des Stoppbits bei höchster Baudrate einstellen.

Natürlich geht das nicht mit 1 MBaud, aber das kann die RS232 sowieso nicht.

Bei 3m Leitungslänge ist das völlig unkritisch. Bei hohen Leitungslängen (> 50m) muss man etwas Gehirnschmalz für die Dimensionierung von Pullup- und Abschlusswiderständen aufwenden und auch die Datenblätter des Treibers intensiv studieren, man muss auch Leitungswiderstand und

-kapazität berücksichtigen.

Siehe auch:

Grüsse,

Peter

Reply to
Peter Heckert

Danke für Dein Beileid ;-)

MFG

michael

Reply to
Michael Post

PolyTech Forum website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.