Projekt: USB-RS232 Interface
Leider findet man an aktuellen PCs und Notebooks oft keine RS-232-Schnittstelle mehr. So lässt sich beispielsweise das auf dieser Seite vorgestellte EPROM-Programmiergerät nicht an einem solchen Computer betreiben. Zur Lösung dieses Problems gibt es fertige Adapter, die den Anschluss von seriellen Geräten über USB ermöglichen. In der Praxis zeigte sich aber, dass nicht alle im Handel angebotenen Adapter zuverlässig funktionieren. Deshalb stelle ich hier ein USB 1.1 Interface vor, das mit meinen Projekten getestet wurde und zum Teil selbst aufgebaut werden kann.
Letzte Bearbeitung: 15.02.2004
Hinweis: Dieses Projekt wird nicht weiterentwickelt.
Schaltplan | usb-rs232-sch.zip |
Stückliste mit Empfehlungen zur Bauteilbestellung |
Beschreibung | Allgemeine Informationen über das USB-RS232-Interface |
Schaltung | Beschreibung der Schaltung |
Aufbau | Aufbau des USB-RS232-Interfaces |
Kurze Vorgeschichte: Ursprünglich wollte ich ein fertiges USB-RS232 Kabel für meine Experimente benutzen, da die USB-Problematik doch recht komplex und (zumindest für mich) schwer zu durchschauen ist. Und so entschied ich mich für ein handliches USB-RS232 Kabel von der Firma DeLock mit dem Chip PL-2303. Prinzipiell klappte damit auch die Kommunikation mit dem EPROM-Programmiergerät, aber beim Senden von großen Datenmengen vom PC zum Programmiergerät kam es immer wieder zu Übertragungsfehlern. Leider war das Problem nicht zu lösen, auch aktuelle Treiber brachten keinen Erfolg. Da man vor dem Kauf eines fertigen Kabels leider nicht weiß, welches IC verwendet wird, habe ich kein weiteres Fertigprodukt gekauft und entschied mich für den Selbstbau.
Der hier vorgestellte USB-RS232-Adapter verwendet den FT8U232AM von der Firma FTDI (siehe Links, Software). Dieser Chip ist zwar nicht der neueste aus dieser Produktserie, aber er hat sich bewährt und es gibt fertige Treiber für fast alle gängigen Betriebssysteme. Allerdings ist dieser Chip nur im MQFP-Gehäuse mit einem Pin-Abstand von 0,8 mm erhältlich und da solche ICs nicht gerade einfach zu verarbeiten sind (schon gar nicht auf Lochraster-Platinen), habe ich hier auf den Bausatz UM 100 von ELV zurückgegriffen:Dieser Bausatz enthält eine Platine in der Größe von 48,2mm x 40mm und alle nötigen Bauelemente. Außerdem liegt noch eine Bauanleitung und eine Diskette mit der Treibersoftware für Windows 98, 2000 und XP bei. Zum Anschluss an den PC benötigt man noch ein USB-Kabel (A-Stecker auf B-Stecker) und viel Geduld beim Bestücken der Platine. Wer sich letzteres nicht zutraut, der kann dieses Modul auch als fertig bestückte Platine bestellen, welche allerdings ungefähr das Doppelte kostet. Dieses Modul stellt eine vollwertige RS-232-Schnittstelle mit allen Leitungen zur Verfügung. Diese liegen allerdings im CMOS-Pegel vor und müssen erst mit Treibern in die typischen RS-232-Pegel (+/- 3...15V) umgewandelt werden. Im Folgenden beschreibe ich eine Schaltung, die auf einer Lochrasterplatine aufgebaut werden kann und zusammen mit dem UM-100 Modul eine normgerechte RS-232-Schnittstelle bereitstellt. Es ist aber auch möglich, das UM-100 Modul ohne zusätzliche Treiberschaltungen zu nutzen. Beispielsweise kann man das EPROM Programmiergerät mit einer kleinen Modifikation direkt mit dem UM-100 betreiben. Mehr Informationen dazu sind in der Beschreibung des EPROM Programmiergerätes zu finden.
Ich möchte hier den Aufbau eines kompletten USB-RS232 Adapters beschreiben. Dazu wird zuerst das UM-100 aufgebaut, wobei man folgendes beachten sollte: Für JP1 wird nicht die beiliegende gerade Stiftleiste verwendet, sondern stattdessen eine gewinkelte Ausführung. Später wird das Modul auf eine zusätzliche Treiberplatine aufgesteckt und dann würde der stehende Jumper stören. Der Kondensator C1 muss aus dem gleichen Grund liegend montiert werden. Die mitgelieferten Winkel werden nicht benötigt und können in der Bastelkiste verschwinden. Zum Aufbau des Moduls will ich nicht viele Worte verlieren, da in der beiliegenden Anleitung alles Wissenswerte drinsteht. Hat man die Lötarbeiten geschafft und alles nochmals genau kontrolliert, kann man einen Funktionstest durchführen. Der Jumper wird in die Stellung USB gebracht und das Modul an den PC angesteckt. Das System sollte nun das Modul richtig erkennen und es wird die Treiberdiskette angefordert. Wenn alles erfolgreich verläuft, dann findet man das UM-100 bei Windows Betriebssystemen in der Systemsteuerung wieder und zwar einmal als USB-Controller und einmal als serielle Schnittstelle.
Wenn alles richtig funktioniert, kann es mit der nächsten Platine weitergehen. Diese enthält die RS-232 Treiber in Form eines MAX238CNG, außerdem noch 5 Kondensatoren, den RS-232-Anschluss und einen Steckverbinder zum Aufstecken des UM-100 Moduls:
Experten werden sicher sofort erkennen, dass noch eine RS-232-Leitung fehlt, nämlich RI. Eigentlich war ein anderes Treiber-IC vorgesehen, aber der MAX238 war besser erhältlich. Leider fehlt ihm ein Empfängertreiber, deshalb habe ich einfach auf die Leitung RI verzichtet, weil diese in der Praxis fast nie verwendet wird. Zur besseren Übersicht sind hier noch einmal alle wichtigen Anschlüsse des UM-100 und deren weitere Führung in tabellarischer Form aufgelistet:
Leitung | Anschluss UM-100 | MAX238-Treiber (CMOS) | MAX238-Treiber (RS-232) | RS-232-Anschluss |
---|---|---|---|---|
GND | 1 | 5 | ||
DCD | 2 | 17 | 16 | 1 |
DSR | 3 | 22 | 23 | 6 |
RXD | 4 | 6 | 7 | 2 |
RTS | 5 | 18 | 1 | 7 |
TXD | 6 | 5 | 2 | 3 |
CTS | 7 | 4 | 3 | 8 |
DTR | 8 | 19 | 24 | 4 |
RI | 9 | 9 (nicht genutzt) | ||
+5V | 11 |
Alle benötigten Bauteile (siehe Stückliste) finden auf einer Lochrasterplatine mit einer Größe von 66mm x 48mm Platz. Man könnte es sicher auch noch kleiner aufbauen, die Größe ergibt sich jedoch durch das verwendete TEKO 10007 Gehäuse. Da ich für K2 keine passende Buchsenleiste erhielt, habe ich eine Version mit 2x10 Anschlüssen verwendet. Es steht dann beim Aufstecken des UM-100 Moduls auf beiden Seiten ein Anschlusspaar über, aber das ist kein Problem. Man muss nur beim Beschalten darauf achten, dass man die Anschlüsse richtig zählt.
Das linke Bild zeigt die fertig bearbeitete untere Gehäusehälfte. Die vom Hersteller vorgesehenen Befestigungen für die Platine müssen vorher vorsichtig herausgebrochen werden, da sie hier stören. Das gleiche gilt auch für die andere Gehäusehälfte. Im rechten Bild ist die fertig montierte Treiberplatine zu sehen.
Im linken Bild wurde das UM-100 Modul aufgesteckt und angeschraubt. In diesem Zustand ist das Interface voll funktionsfähig und kann schon mal getestet werden. Auf der rechten Seite sieht man die Anschlüsse des fertig montierten Gerätes. Die hervorstehenden Schraubenköpfe auf der Unterseite habe ich mit einem schnellhärtenden Zweikomponentenkleber überzogen, damit sie keine Kratzer auf Möbeln hinterlassen.
Damit ist das USB-RS232-Interface fertig und kann z.B. zusammen mit dem EPROM-Programmiergerät oder dem Temperaturmesssystem verwendet werden. Hierbei ist nur zu beachten, dass anstatt der direkten COM-Schnittstelle jetzt der (virtuelle) COM-Port des UM-100 ausgewählt werden muss. Alle anderen Einstellungen, wie z.B. die Schnittstellenparameter, werden ebenso konfiguriert wie bei einem normalen COM-Port.
Ich habe auch versucht, PonyProg über dieses USB-RS232 Interface mit dem seriellen Programmieradapter zu betreiben. Es funktioniert prinzipiell auch fehlerfrei, aber die Zeiten liegen weit über der Schmerzgrenze. So dauerte das Programmieren und Vergleichen eines AT90S2313 (2kB) ungefähr 15 Minuten. Ich kann also nur davon abraten.