GPIB zu USB Interface, Elektor 04-2011

Herr Rainer Schuster war so freundlich, und hat einen im guten Stil programmierten GPIB zu USB Wandler mit Win32 Demo Programm zum auslesen eines Tektronix Oszillographen TDS210 im Heft Elektor 04-2011 vorgestellt. Das ganze ist deutlich preiswerter als kommerzielle Schaltungen.

Leider ist es durch den Verzicht auf GPIB Bus Treiber nur möglich maximal 1 Gerät anzuschließen. Der R8C kann in Summe maximal 60 mA an den I/O Ports liefern. Pro Ausgang sollten es aber nicht mehr als 2 mA sein, um die Spannung von 0.8V für den LOW Pegel nicht zu überschreiten. Per IEEE-488 Standard hat jedes GPIB Gerät am Bus einen Widerstand Abschluss mit 3 KOhm nach +5V und 10 KOhm nach 0V.

Entwicklungs Software

Nach 5,5 Jahren ist die Toolchain von Renesas etwas durcheinander geraten.

Gute Erklärung für Anfänger: Erste Schritte mit Renesas M16C und GCC

Probleme:

Vereinfachte Hardware

Da in der Bastelkiste noch ein Elektor R8C Starterkit (Beilage im Heft 12-2005!) vorhanden war, wurde nach einen passenden USB-Serial Wandler gesucht. Da bei Ebay für nur 5 EUR (inkl. Versand) ein Nokia CA-42 Clone (Chip Polific PL2302) zu haben war, wurde er ausprobiert. Dabei gab es folgende Schwierigkeiten:

Der Nokia Stecker war vergossen, so war die Pin Belegung nur schwierig zu bestimmen, siehe Bild rechts. Bein anklicken wird das Bild vergrößert. Wenn die Farben zu Pin Nummer Bestimmung erfolgt ist, kann es an das löten gehen. Meine Zuordnung:
Pin Farbe Signal
8 red GND
7 green Data out from phone
6 white Data into phone
5 brown ?
4 black +3.3 V
3 orange Accessory Control Interface
.. blue schield

attachment:GPIB_USB_Kabel1_DSC01698.jpg

Now I have learned, that only the cable with the blue USB plug housing (rubber like) does have a pl2303 chip inside. The cable with a black USB plug hard plastic housing does have a seldom used OTI 6858 chip (Ours Technology Inc.), which has drivers for Windows and Linux only. Jetzt habe ich gelernt, dass nur das Kabel mit blauem USB Stecker Gehäuse (Gummi ähnlich) einen pl2303 chip hat. Das Kabel mit dem schwarzen USB Stecker Gehäuse mit Hart-Plastik Schalen hat den selten vorkommenden OTI 6858 chip (Ours Technology Inc.), zu dem es nur Treiber für Windows und Linux gibt. Dafür hat man eine DTR Leitung und die USB +5V leicht zugänglich.

Die +5 V von der USB Schnittstelle waren nicht am Kabelende vorhanden. Also wurde der, leider vergossene, USB-Stecker vorsichtig aufgeschnitten, und ein Draht von dem +5 V Anschluss zum Kabelende geführt.

attachment:GPIB_USB_Kabel1_DSC01698.jpg

Der Aufbau wurde auf einer Lochraster Platine von Firma Vero gemacht. Da waren die GND und +5 V bereits als Leitungen quer durchgezogen.

attachment:GPIB_USB_Kabel1_DSC01698.jpg

Die ganze Schaltung wurde in ein altes Gehäuse (4-fach USB-Hub) eingebaut. Der GPIB Stecker ließ sich dort gut befestigen. Verdrahtet wurde mit WireWrap Draht, der bei 18 Leitungen nicht so stark aufträgt. Die Maxime war schnell und preiswert. Ich habe ein Schaltbild mit Eagle5 gezeichnet und angehängt: GPIB_USB.sch

attachment:GPIB_USB_Kabel1_DSC01698.jpg

Damit man gleich etwas vom Schaltbild sieht, hier als PNG Datei. Dazu noch als PDF Datei, zum besseren ausdrucken GPIB_USB.pdf.

attachment:GPIB_USB.png

Test der Schaltung

Um das prinzipielle funktionieren des Programms und der Schnittstelle zu testen, braucht man ein Terminal Programm. Dazu empfehle ich PUTTY, es funktioniert auch unter Win 7-32.

PUTTY Einstellungen, Session:
  Connection Type: serial
  Serial line: COMx (x = USB Serial Emulation Nummer, z.B. 6)
  Speed: 38400

Tastatur Eingabe (blind, ohne Echo): "I", strg"J" (Großes I, Steuerung+J = LineFeed)

Antwort:
GPIB/USB converter V1.0

oder
Set local echo ON
Text from the clipboard is inserted into the terminal window via the middle mouse key.

oder mit dem MAC OS X Terminal (sudo wegen /var/spool/uucp Zugriff):
$ sudo cu -l /dev/cu.PL2303-0000103D -s 38400
Hilfe zu "cu" (Call Up another system):
    ESCAPE: strg + alt gr + N = ~
    Terminate: ~.
    Variable: ~v
    Komandos: ~?
    \ = SHIFT + alt + 7

Das ganze wurde in der Virtual Box V.4.0.6 unter MAC OS X 10.6 getestet.

Firmware Kommandos

Die Kommandos können manuell in einem Terminal an den GPIB-USB Konverter geschickt werden. Alle Kommandos müssen mit LineFeed (strg+J) abgeschlossen werden.

Änderungen an der Firmware

Leider gibt es einen Bug im File GPIB_functions.c.

Ursache:
Da bei dem Port 0 das Bit 0 für die serielle Schnittstelle gebraucht wird (TxD), müssen die Daten um 1 nach links geschoben werden. Das Bit 7 wird dann über Port3, Bit 1 ausgegeben. Da leider zuerst geschoben und dann auf Bit 7 geprüft wird, bekommen alle ASCII Zeichen > 0x3F dann das Bit 7 gesetzt. Einige GPIB Teilnehmer werden das klaglos korrigieren.
Mein Logic Analyzer HP1631D leider nicht.

Lösung:
Im Programm GPIB_functions.c in Funktion send_gpib_byte() muss die Befehlsfolge sein:

        if (data & 0x80) p3_1=0; else p3_1=1;
        data = data <<1; //shift to p0_1..p0_7
        p0= ~data;

Erweiterung von GPIB_USB.c

Um meinen HP Logic Analyzer HP1631D sinnvoll mit dem Interface betreiben zu können wurden noch ein paar Befehle dazu programmiert:

Die erweiterten Dateien sind hier hinterlegt: GPIB_USB.c , GPIB_functions.c und binary Release.zip.

Anwendungsprogramm hp1630.py für Logic Analyzer

Um den HP Logic Analyzer HP1631D komfortabel bedienen zu können, wurde ein Python Programm hp1630.py geschrieben. Es läuft zur Zeit unter MAC OS X, kann aber auch leicht an Win32 oder Linux angepasst werden. Wenn man das Programm ohne Kommando Zeilen Parameter aufruft erscheint eine Hilfe Meldung. Als GPIB Adresse ist fest die 4 eingestellt. Es sind folgende Befehle eingebaut, als Kommando Zeilen Parameter:

Wenn man ein anders GPIB Gerät damit betreiben will, muss man das Programm entsprechend anpassen. Da Python eine Multi-Platform Interpreter Sprache ist, sollte eine Anpassung nicht so schwierig sein.

Zum Schluss noch ein hardcopy Bild von dem HP1631D im Waveform Modus: txo10MHz_BNC.png

Liste der Seiten in dieser category:

... -- RudolfReuter 2011-06-17 08:43:38


Go back to CategoryHowTo or StartSeite ; KontaktEmail (ContactEmail)