Projects, Technology

I needed a way to get data from a Keithley 617 Programmable Electrometer to a computer. The instruction manual for it is copyright 1984, so it obviously doesn’t simply use USB or  another modern serial protocol. The only data output is an IEEE-488 port (some call it GPIB).

DISCLAIMER: This tutorial is provided AS-IS. I am not responsible if you destroy your electrometer. I am not an expert with the IEEE-488 protocol and do not guarantee that my implementation is 100% correct. This tutorial assumes that you know what you’re doing and does not go into the details. That being said, this worked fine for me (after I realized that I originally misidentified a pin) and would be surprised if it didn’t work for you.

The front of the 617
The front of the 617
The IEEE-488 port
The IEEE-488 port

Reading the manual revealed that it is possible to put the device in a simplified communication mode called talk only mode. I used mode 41 because the data output is simpler.

talk-only

After that, I stripped open an IEEE-488 cable, identified the wires with a multimeter, and soldered them up to an Arduino. The pinout can be found on Wikipedia. This was long and tedious. Note that about half the wires are ground and I just twisted those together and connected them to an Arduino ground pin. You can use any of the input pins on the Arduino, including the analog pins (although I didn’t use pin 13 because the debug light makes communications wonky sometimes).

A beautiful soldering job
A beautiful soldering job

The Arduino code I wrote is available on Pastebin. Simply update the defines at the top of the program with the Arduino pins you actually used. I also wrote a python script which can be used on the computer for reading data into a file, but you can also just use any serial monitor of your choice at 9600 baud.

The completed setup
The completed setup
Technology

In Elementary OS Freya (and probably similar, like Ubuntu 14.04), you can obtain infinite volume control by adding keyboard shortcuts to the following commands and assigning them to your keyboard volume buttons.

Decrease volume:
$ pactl — set-sink-volume @DEFAULT_SINK@ -10%

Increase volume:
$ pactl set-sink-volume @DEFAULT_SINK@ +10%

Pushing the “Increase volume” button will now allow you to increase the volume as high as you want (until you blow your speakers). Obviously, that means that you need to use caution. Don’t try to see just how loud you can get it.

Elementary requires a log out and log in before keyboard shortcut settings are applied.