Hello everyone! I've noticed that in the past I've gotten a few links to my GPIBUSB adapter project from this forum, so I figured I would make a dedicated thread for it.
A few years ago when I was in my final year of undergrad I was working at a fresh university lab (which I later spent my masters at). While setting up some equipment, I had to connect a bunch of T&M equipment to a PC via GPIB. However, I quickly discovered what a pain in the arse it is to get GPIB working. Specifically, I found that the Linux GPIB drivers do not contain MATLAB bindings. Well, if they did we couldn't get it to work. Getting it to work with Python was no problem with pyvisa, but this project had the requirement that we used MATLAB. Eventually we just installed Windows instead (which caused later issues with SSH but that's another topic).
A few months later I was thinking about that situation and set off to make my own solution. I decided to make a board that used a virtual serial port to avoid all these issues. This way any modern software could talk to a GPIB connected device.
This past weekend I finally finished up the third major revision of my GPIBUSB adapter board. Major hardware changes include swapping the pull-up resistors for the proper GPIB line drivers, as well as swapping the FT232RL for the newer FT230X. There is a number of software improvements from improved reliability to additional commands.
In order to help abstract the user away from having to deal with adapter-specific commands (eg: setting the target GPIB address, etc) my friend and I started a Python library project called InstrumentKit
. Here, we took things another step further and abstracted hardware-channel specific instructions away. InstrumentKit allows you to communicate with equipment via Python while maintaining a consistent API across instruments and keeping you away from having to deal with the specifics associated with the physical connection. This means serial, tcpip, nix filelikes (eg /dev/usbtmc0), my adapter, etc are all opened with a single command (or a single line in a YAML config file). But that's all I'll say about that for now and I'll make another post at a later time with more details.
This project (along with everything else I do) is open source hardware. Sources can be found in a few repositories at my Github page
. Do note that a few docs need some updates but the main files are there. You can also find the adapter on my website at Galvant Industries
I have a few ideas for improvements in the next version, but let me know what you all think!
Oh, and I'll try to get a video of it in action in a few days.
[edit Jan 18] I uploaded a video of it in action here: http://www.youtube.com/watch?v=VzGDldTVSOg