08-14-2009 02:21 PM
Hello all,
I am using LabView to perform a sort of software-controlled linear voltage sweep with a Keithley 2400. The problem in short is that the Keithley does not always output the voltage it claims to be sourcing in the display. It has _not_ reached its compliance value when the problem appears.
The procedure is as follows: suppose a sweep from -10 to +10 volts in 21 steps (-10,-9,-8...9,10)
Using the Keithley 24XX driver:
First I send reset and initialization commands
Then I set the source to generate the initial voltage (-10V)
Then I set the device to measure current
I configure it to expect 1 software arm and trigger immediately upon receiving it
Next I turn on the source and wait several seconds.
After few seconds, i send a software trigger and acquire the measurements.
I adjust the source voltage to -9 volts and re-arm the sourcemeter.
Next I wait several seconds again and repeat this process until 10 Volts is reached.
Now, the problem: The first half of the sweep, the sourcemeter outputs the right voltage, but after crossing 0 volts, the sourcemeter tells me it is sourcing 1 Volt, but it actually outputs only about 300 mV! Then, 2 and 3 volts are sourced fine, but 4 volts results in a too low output again!
Does this sound familiar? I have checked the low-level text commands that are sent by the driver and they seem to be okay (no decimal separator problems or anything). I have also mailed Keithley this same question.
Thanks - DJ
08-14-2009 03:27 PM
AH- you are auto ranging and crossing quadrants (-V to +V) changes from I source to I sink.
The 2400 doesn't like that- specify the range and the compliance current (+/-) for each step.
Alternately, isn't there a step functions available with the 2400? (mines not right in front of me) check the examples in the driver to see an implementation that Keithley has made work right.
08-15-2009 06:30 AM
Ah, I expected this was a ranging problem, tried different things to solve it, but I hadn't tried to specify the range and compliance each time.
Performing a programmed sweep is not possible: I want to acquire the data after each measurement for a 'real-time' display. It also enables me to abort easily without losing already recorded data.
Thanks for now!