PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : RS232 bzw. TTL-UART splitten



pongi
13.11.2007, 16:27
Hallo!

Ist es prinzipiell möglich, mit Transistoren ein RS232 bzw. UART-TTL zu splitten, damit ich mit einem uC mehrere, mit verschiedenen Protokollen arbeitenden Regler auslesen kann?

Am besten wäre, wenn man den RS232 Signal umschalten könnte, denn dann bräuchte ich nur einen MAX232. Das wird aber wahrscheinlich wegen den negativen Pegeln mit Transistoren schwer gehen...

Bei beiden Möglichkeiten bin ich mir nicht sicher, wie sich eine Umschaltung (selbstverständlich wenn gerade keine Übertragung stattfindet) bzw. eine äussere Beschaltung auf die Signale auswirkt.

Hat jemand schon Erfahrungen damit, oder kennt jemand eine schon fertige Lösung?

MfG

pongi

shaun
13.11.2007, 17:30
Viel wichtiger wäre erstmal die Frage, woher das Kriterium kommt, welcher Teilnehmer gerade mit dem PC verbunden sein soll. Eine Schaltung bauen, die alle Protokolle der Welt versteht und intelligent umschalten kann ist ungefähr unmöglich. Zum Umschalten würde ich der Einfachheit halber CMOS-Multiplexer benutzen, allerdings auf TTL-Ebene, weil die Dinger für den Bereich -12..+12V teurer sind als ein paar MAX232. Mit Transistoren kann man sicher auch was bauen, immerhin ist in ICs ja auch nichts anderes drin. Aber ob man den Aufwand betreiben will...?

pongi
13.11.2007, 17:36
Die Teilnehmer werden im Polling Betrieb abgefragt. Ich hab mir das so vorgestellt, dass ich einen uC nehme, der zwei HW-UARTs hat. Der eine UART ist fest dem PC zugeteilt, der andere kommuniziert mit den Teilnehmern. Umgeschalten wird nur dann, wenn die Kommunikation an einer Schiene abgeschlossen wird.

Die Lösung mit Transistoren habe ich mir so vorgestellt, dass immer ein Transi an die Rx und eins an die Tx Leitung kommt, und sie werden vom uC geschalten.

Besserwessi
14.11.2007, 16:49
Wenn keine Handschake Leitungen RTS/CTS gebraucht werden, kann ein MAX232 ja dann immerhin gleich 2 Schnittstellen versorgen.
Wenn es sehr viele Eingänge sind dann vielleicht doch ein +-12 V geeigneter Umschalter oder Pegelwandler ohne Ladungspumpe (z.B. MC1489). Dann wird allerdings eine Extra Spannungsversorgung gebraucht.

pongi
14.11.2007, 17:02
RTS/CTS werden nicht gebraucht. Insgesamt wären 4 Schnittstellen zu bewältigen, also mit zwei MAX232s sollte es hinhauen.

Theorätisch ist also mein Vorhaben also möglich?

shaun
14.11.2007, 20:17
Jein, Du hast immer noch nicht beantwortet, woher die Umschaltlogik wissen soll, wann welcher Teilnehmer senden darf.
Ausserdem machen einzelne Transistoren das Ganze irgendwie umständlich, man muss die Pegel dann genau im Auge behalten, ein billiger Multiplexer (zB 74HC4052, kann 2x4 Kanäle bedienen) ist einfacher zu handlen.

pongi
14.11.2007, 20:24
Ja, hast recht mit dem Multiplexer, wird am Ende auf das hinauslaufen.

Die Umschaltlogik ist ein uC. Da die anderen Teilnehmer nur dann was senden, wenn dazu der uC einen Befehl gegeben hat, und noch dazu sind die Daten, die an den uC gesendet werden von der Länge her bekannt (also zB immer nur 6 Bytes), kann der uC selber umschalten, wenn er mit den verschiedenen Teilnehmern kommunizieren will. Es weiss dann genau, wann es keine Daten mehr von den Slaves erwarten soll, und daher das Umschalten möglich ist.

Daher mache ich mir weniger Sorgen um evtl. Datenkollisionen, ich war mir nur nicht sicher, ob das ganze vom Prinzip her geht.

Vielen Dank aber für die Unterstützung :D

pongi

shaun
15.11.2007, 00:13
Achso, da hast Du natürlich den besten Weg gefunden. Wenn der Controller die Kontrolle hat, ist das echt easy. Dann mal frohes Schaffen :)