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.
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.
Ein Mittelding zwischen langsam und schnell ist der PC900 im platzsparenden 6-Pin Gehäuse :-)
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).
>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.
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).
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.