Forum: Mikrocontroller und Digitale Elektronik Welcher Optokoppler für 9600 Baud RS232?


von Frank501 (Gast)


Angehängte Dateien:

Lesenswert?

Ich habe hier drei Platinen/Baugruppen, welche ich über die Serielle 
Schnittstelle miteinander verbinden möchte :
1. RFID Reader von Pollin
2. Auswerteeinheit mit Mega8
3. Displayeinheit mit Mega8

1 hängt über ca. 5m nicht verdrillter Leitung und einen Optokoppler, der 
das Signal invertiert (testweise PC817) an 2 (RS232 mit +/- 12V Pegel)
3 hängt direkt an TxD von 2 (TTL-Pegel, momentan etwa 30cm 2adreige 
Leitung aus einem Flachbandkabel (GND und TxD))

nun habe ich folgende Probleme :
1.: die Daten von 1 kommen meist nicht korrekt bei 2 an. Ich vermute, es 
liegt an dem Optokoppler, welcher anscheinend nicht schnell genug ist 
oder nicht richtig durchsteuert.

2.: die Daten von 2 kommen nie korrekt an 3 an.

Die Baudrate ist fest auf 9600 eingestellt, da ich die Baudrate von 1 
nicht ändern kann, weil mir der Quellcode fehlt. Der Bascom Quellcode, 
den man bei Pollin herunter laden kann, ist so wie es aussieht nicht 
komplett, so das man ihn nicht compilieren kann.
Ändere ich allerdings die Baudrate bei 2 und 3 auf 2400Baud, so kommen 
die Daten von 2 korrekt bei 3 an. Leider steht mir diese Option nicht 
zur Verfügung, da ich auf einer Schnittstelle nicht für Senden und 
Empfangen getrennt einstellen kann.

Die Verbindung über den Optokoppler zwischen 1 und 2 möchte ich wegen 
der Potentialtrennung nbedingt beibehalten.
Gibt es Optokoppler, die ich anstelle des PC817 einsetzen kann. Eine 
Adapterplatine ist kein Problem, aber die gesamte Schaltung möchte ich 
nicht ändern, da die Platine bereits fertig geätzt ist.

von Anja (Gast)


Lesenswert?

Hallo,.

bei richtiger Dimensionierung schafft ein PC817 gerade so die 9600 Baud.
Ich gehe wie folgt vor:
Vorwiderstand bei Diode auf ca 2 mA Strom dimensionieren. (Ist Abhängig 
vom tatsächlichen Pegel der verwendeten RS232-Schnittstelle). Auf der 
Empfängerseite verwende ich einen Emitterfolger. Also statt 10KOhm am 
Kollektor ca. 1K5 am Emitter des Phototransistors. Dadurch gerät dieser 
nicht so leicht in Sättigung und wird schneller.
Damit die Polarität wieder stimmt müssen ggf. noch die beiden 
Steckerpins auf der Sendeseite getauscht werden. Wenn nicht gerade ein 
Hardware-UART verwendet wird kann natürlich auch in der Software 
invertiert werden.

Das ganze ist natürlich nur eine Bastellösung. Die Toleranzen beim PC817 
mit Stromverstärkungsfaktor fordern ggf. einen individuellen Abgleich.

Ansonsten eignet sich für Baudraten bis ca 100000 Baud ein 6N138.
Für höhere Baudraten ein 6N137. Der braucht allerdings mindestens 5-15 
mA Sendestrom.

von Gast (Gast)


Lesenswert?

Ein Mittelding zwischen langsam und schnell ist der PC900 im 
platzsparenden 6-Pin Gehäuse :-)

von Anja (Gast)


Lesenswert?

Hallo,

ich sehe gerade Du hast die Platinen schon gemacht.
in dem Fall würde ich einfach den 1k Ohm auf der Sendeseite auf ca 1-2 
mA Anpassen und auf der Empfangsseite den Widerstand so hochohmig machen 
daß der Low-Pegel (0.4 - 0.6V) gerade so erreicht wird. (Der Transistor 
nicht in Sättigung gerät).

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

>bei richtiger Dimensionierung schafft ein PC817 gerade so die 9600 Baud.

Das ist so nicht korrekt. An 470 Ohm Arbeitswiderstand (R2) schafft der 
auch MIDI (32.500 kBit/s).

@Frank501: Die 1N4148 gehört antiparallel über die Optokoppler-LED, 
nicht in Serie. Das ist aber nur Kosmetik.

von Anja (Gast)


Lesenswert?

Hallo Travel,

war eine Denkblockade bei mir: Die RS232-Spec "garantiert" maximal 5mA 
Strom (Vorausgesetzt sie hat "mouse driveability"). Bei RS232 und 
bidirektionaler Übertragung denke ich automatisch an "maximal 2 mA für 
jede Richtung".

Du hast natürlich Recht: ein Optokoppler ist umso schneller je größer 
der Strom und je niedriger der Arbeitswiderstand (Damit der Transistor 
nicht in Sättigung gerät).

von Frank501 (Gast)


Angehängte Dateien:

Lesenswert?

Die Datenübertragu8ng von dem RFID Modul über die RS232 Schnittstelle 
funktioniert jetzt.

Ich habe den Tipp von Anja befolgt und den Vorwiderstand für die LED im 
Optokoppler soweit erhöht, das jetzt ca. 2mA fleissen können. R=3,3K.

Den Kollektorwiderstand konnte ich leider nicht anpassen, da er in einem 
SIL-Array steckt, aber so wie es jetzt ist, funktioniert es bereits. 
Danke für die ANtworten und guten Tipps.

Bei meinem 2ten Problem bin ich leider noch nicht weiter gekommen.

Die Datenübertragung von einem Mega8 auf den anderen über die Serielle 
Schnittstelle mit TTL-Pegeln.
Die Schaltung sieht (ohne jetzt die restliche Beschaltung eingezeichnet 
zu haben aus, wie im Anhang. Also Resetwiderstand, Quarze und 
Abblockkondensatoren sind schon vorhanden, nur in der Teilschaltung 
nicht eingezeichnet.

Die Leitung zwischen den beiden Controllern ist ca.30cm lang. In etwa so 
lang, wie sie später in der fertigen Anwendung auch werden soll.
Das Problem hier bei ist ebenfalls, das die Daten nur sehr unvollständig 
ankommen. Die Schatung in meinem Testaufbau hatte bereits ganz gut 
funktioniert:
Controller -> 50cm ungeschirmte Leitung -> Pegelwandler -> LCD Display 
mit seriellem Eingang

nur mit der jetzigen Schaltung mit nur 30cm Leitung dazwischen klappt es 
nicht.

Frank

von spess53 (Gast)


Lesenswert?

Hi

Masse verbunden?

MfG Spess

von Frank501 (Gast)


Lesenswert?

lach

Ja, die Masse ist verbunden. Ist bei einer Zweidrahtleitung auch nicht 
all zu schwer zu kontrollieren.

Ich habe die Ursache des Problemes gefunden: der Eingangspuffer für den 
UART war mit 8 Byte wesentlich zu klein. Bei der relativ langsamen, byte 
weisen Übertragung vom RFID Board zum Controller spielte das keine 
Rolle, aber wenn der Controller die Daten mit
writeln(serout,'20Zeichen langer Text');
raus haut, dann verschluckt sich der Empfänger etwas, wenn der Buffer 
voll und noch anderes zu erledigen ist.
Jetzt habe ich deb Buffer auf 22 Byte erhöht und es funktioniert.

Frank

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.