Every time I'm trying to hop on the train of "automated readings" with my current instrumentation, I'm hitting a wall where every single granular issue I need to sort out to make this work opens at least five other tracks of research....
If you are hopping on for the first time, then yes, that's how it is.
...
What I have handy is a (few) "GPIBUSB" by xypro (?), likely access to some NI adapter, and not a whole lot of time to learn new things, including coding. Sure, maybe also the moon in the sky?...
...For initial programming an AVR ISP adapter is needed to program the "Bootloader.hex" file.
It is very important, that the Fuses of the AVR are programmed.
Here an example how to program the bootloader using avrdude (using usbasp programmer): avrdude -c usbasp -p m32u4 -e -Ulock:w:0x3F:m -Uefuse:w:0xcb:m -Uhfuse:w:0xd8:m -Ulfuse:w:0xff:m avrdude -c usbasp -p m32u4 -U flash:w:BootLoader.hex
After programming the file, disconnect and connect the device and a USB drive will show up. Copy the TestAndMeasurement.bin file to this USB drive - ideally using the command line. Example: copy TestAndMeasurement.bin F:\FLASH.BIN. On Linux, there is a bug with the LUFA mass storage that means it is required to use dd if=TestAndMeasurement.bin of=/mnt/FLASH.BIN bs=512 conv=notrunc oflag=direct,sync.
When done, disconnect and connect USB again and you're ready to use it!
I have tried the "knockoff 82357B", the AR488 and the Xyphro. It depends on what you want to do.
If you have pre-made software that dependend on it's drivers or already know LabView, the "knockoff 82357B" is the way to go. (It's shortcomings are described elsewhere, but the usual faults (too thin traces and wrong driver IC) can be relatively easily corrected with a bit of soldering). The drivers are mighty but bloated.
[...]
Personally I found the xyphro on linux the least problematic, no drivers, no AR488 bus master setup, python and it's libraries installed easily and off to the races.
If you are hopping on for the first time, then yes, that's how it is.
It's probably the tenth, but I get to this point and get utterly discouraged every single time.
# ***************************************************************************
# Characterize Keithley 230 voltage source with Keithley DMM6500 DMM
# ***************************************************************************
# python-vxi11
import vxi11
import time
# ***************************************************************************
# Connect to instruments
# ***************************************************************************
# Keithley 230 Programmable Voltage Source at GPIB address 22 via Agilent
# E5810A LAN/GPIB gateway at IP address 192.168.0.70
instr_vs = vxi11.Instrument ("192.168.0.70", "gpib0,22")
instr_vs.clear() # Reset
# Keithley DMM6500 multimeter at IP address 192.168.0.66
instr_dmm = vxi11.Instrument ("192.168.0.66", "inst0")
instr_dmm.clear() # Reset
# Print DMM6500 ID
print ("DMM ID: " + instr_dmm.ask("*IDN?"))
# ***************************************************************************
# Instrument setup
# ***************************************************************************
# Set up Keithley 230
instr_vs.write ("V0.0X") # Set voltage to 0 v
instr_vs.write ("I1X") # Set current limit to 20 mA
instr_vs.write ("D0X") # Display voltage
instr_vs.write ("F1X") # Enable voltage output
# Set up Keithley DMM6500 instrument
instr_dmm.write (":disp:screen home_large_reading") # Show large digits
instr_dmm.write (":sens:func \"volt:dc\"") # DC volts mode
instr_dmm.write (":sens:volt:dc:range:auto on") # Autorange
instr_dmm.write (":sens:volt:dc:nplc 10") # 10 NPLC filtering
instr_dmm.write (":sens:volt:dc:inp mohm10") # 10 Mohm input Z
# ***************************************************************************
# Sweep the voltage source to characterize it
# ***************************************************************************
for i in range (0, 100): # 100 Points
# Set voltage source voltage
v = i * 0.100 # 0.0 v to 9.9 v
instr_vs.write ('V{:f}X'.format(v))
time.sleep (0.1) # Wait for voltage to settle
# Measure with the DMM
meas = float(instr_dmm.ask (":read?"))
# Display results
print ('set: {:7.3f} meas: {:10.6f} delta: {:10.6f}'.format(v,meas,meas-v))
# ***************************************************************************
# Clean up and exit
# ***************************************************************************
instr_vs.write ("F0X") # Disable voltage output
time.sleep (1.0) # Wait for last command to finish
# Close connection to instruments
instr_dmm.close()
instr_vs.close()
% python3 vxi11_test.py
DMM ID: KEITHLEY INSTRUMENTS,MODEL DMM6500,04440477,1.7.12b
set: 0.000 meas: -0.000038 delta: -0.000038
set: 0.100 meas: 0.099954 delta: -0.000046
set: 0.200 meas: 0.199954 delta: -0.000046
set: 0.300 meas: 0.299912 delta: -0.000088
set: 0.400 meas: 0.399929 delta: -0.000071
set: 0.500 meas: 0.499903 delta: -0.000097
set: 0.600 meas: 0.599974 delta: -0.000026
set: 0.700 meas: 0.699965 delta: -0.000035
set: 0.800 meas: 0.799940 delta: -0.000060
...
set: 9.700 meas: 9.699774 delta: -0.000226
set: 9.800 meas: 9.799752 delta: -0.000248
set: 9.900 meas: 9.899662 delta: -0.000338
As far as i understand RAX already got a xyphro usb interface and the flasher for it.
Regards, Dieter
-
Rereading what you wrote, it seems you might not have a GPIB adapter for personal use - I'd have to defer to others here on the forum w.r.t how those clone 82357B or NI adapters work (I'm lucky enough to have acquired real versions of them and a GPIB-ENET/1000). That said, if you don't want to do IT/SWDev work to get your stuff to work, then just paying the "tax" to get a VISA-supported adapter (by this I mean one that works with either the Keysight IO Libraries Suite or the NI VISA SW) is probably worth it.
TonyG
I'm assuming the learning curve will be steep and long.
If you use Python, you'll be up and running in no time. Once you have either the NI or Keysight drivers installed, you install PyVISA and you have a simple Python interface to those drivers.
See the examples at https://pyvisa.readthedocs.io/en/latest/introduction/communication.html