Ich wollte meine paar Messgeräte, die mit GPIB ausgestattet sind, mit einem einfachen GPIB-Adapter steuern.
Leider sind aber die kommerziellen GPIB Karten bzw. Adapter sehr teuer.
Und da ich nur eine "einfache" Steuerung meiner Messgeräte brauche, habe ich einen GPIB-USB-Adapter auf Basis eines PIC18F2550 gebaut.
Die Idee es doch selber zu machen kam mir von dieser Seite.
Da ich den USB mit dieser Software nicht zum laufen bekommen habe, habe ich die Software selber umgesetzt. Der Microchip PIC18F2550 Mikrocontroller ist für "full speed USB" konfiguriert. Es wird mit 20MHz betrieben und benutzt die interne PLL für 48MHz core speed und 12MHz USB speed. Alle IO-Leitungen haben 100 Ohm Schutzwiderstände. Der PIC kann maximal 25 mA Treiben, was nicht ganz der IEEE 488 Norm entspricht (hier sollten es 48 mA sein). Für kurze Kabel reicht es aber allemal.

Bei der Entwicklung habe ich auf mein Tool "IEEE488 Plugin für Zeroplus Lap C16032" zurückgegriffen.



Eagle-Schaltung



Der fertige Adapter sieht so aus:

Der erste Test lief erfolgreich mit einem Frequenzzähler RACAL-Dana 1991. Benutzt wurde der USB-Stack libusb-win32-1.2.6.0.


Es gibt zwei verschiedene Versionen der Firmware für den PIC18F2550:

VersionBeschreibungCompilerAnmerkungenSourcen
V1.0.1 USB-Treiber von CCS und auch mit diesem compiliert CCS Da ich nicht weiss, ob der USB-Treiber von CCS weitergegeben werden darf, ist dieser nicht bei den Sourcen enthalten.
Funktioniert nur mit Daten, die kleiner als 60 Bytes sind.
https://sourceforge.net/projects/usbgpib/files/
ab V2.0 USB-Treiber von Microchip Microchip C18 Toolsuite Sourcen vollständig frei https://sourceforge.net/p/usbgpib/code/4/tree/

Die Test-Software für den PC wurde mit CodeGear geschrieben. Sie ist nur zum testen des USB-GPIB-Adapters gedacht und als Anschauung der Ansteuerung vom PC aus.

Das Ansteuern von Java aus kann in dem Sourcen von USB-GPIB-Adapter-JavaDriver eingesehen werden. Ist ähnlich wie JPIB, den ich schon für den OsciViewer angepasst habe.
Hier ist das zugehörige Javadoc.

Die neuere Version (>= V2.0) ist erweitert worden, und kann jetzt sehr große Datenmengen (getestet bis 25007 Bytes) problemlos empfangen.
Das Senden scheint auch mit größeren Datenmengen zu funktionieren.

Bei den Treibern habe ich auf LibUsb aufgebaut (siehe auch OsciViewer). Es funktioniert sehr gut.

Die Geschwindigkeit liegt bei 25000 Bytes bei ca. 1-2 Sekunden. Die Software ist zur Zeit auf der sicheren Seite. Könnte aber bestimmt noch mehr an Geschwindigkeit raugeholt werden.

Mit dem Lecroy 9400A läuft er ohne Probleme.

Einschränkungen

  • Auf Grund der einfachen Schaltung und geringen Treiberleistung, reicht es nur für kurze Kabel.
    Getestet habe ich mit einer Sternverkabelung mit jeweils max. 1-2 m Kabeln und 4 Geräten.
  • Probleme gibt es mit dem HP8620 wenn mehrere Geräte zusätzlich dranhängen.
  • Mit dem TR4131 gibt es immer wieder Kommunikationsprobleme. Scheinen nicht von der Hardware, sondern in dem Ablauf des Software-Protokolls zu liegen. Konnte ich noch nicht finden.

 

Links

 

Genannte Marken oder Produktnamen sind Warenzeichen oder eingetragene Warenzeichen der jeweiligen Eigentümer.