Instrument Control (GPIB, Serial, VISA, IVI)

cancel
Showing results for 
Search instead for 
Did you mean: 

Keithley 2410 sweep time much longer than it should

Solved!
Go to solution

Trying to write a vi to do a current-voltage sweep with Keithley 2410 hooked up to Labview with GPIB. The vi is attached, as well as screenshot. According to the manual, if I do not set a manual voltage setting time, and use default NPLC (1PLC), each voltage point should have 3ms automatic voltage setting time (with the current range I'm in), then come the measurement which is 1/60 s = 16.7 ms, so the measurement time for one data point should be 16.7 + 3 = 19.7 ms. However, when I run the program and read the time stamp, 100 data points takes 7.2s, which averages each data point takes 72 ms, which is significantly longer than it should. I triple checked the wiring to make sure everything is correct. Am I doing anything wrong here? Thanks a lot for your time!

Capture.PNGimage001.png

 

0 Kudos
Message 1 of 6
(4,042 Views)
Solution
Accepted by topic author themartianinvader

An SMU is a little more complicated than that.  You should read the full documentation on the Source Delay Measure cycle to see all the timing delays. See section 6-10 of the manual, and then section 7-7 for considerations on speeding things up.

 

Looking at your code, you have accepted a lot of default settings;  Auto-Zeroing, Auto-ranging, source delay, settling delay, NPLC, etc...

 

The bulk of that 7s in your sweep is likely Auto-zeroing and Auto-ranging.  You can either disable these (once you understand what you are sacrificing) or tweak the settings.  Eg. If you know that your measured voltage will always be 10mV-100mV then you can disable auto ranging and set the measurement scale to the 100mV range.  But if your voltage varies or orders of magnitude then you are better off leaving auto-ranging enabled.

 

Hope that helps.

Craig

Message 2 of 6
(3,978 Views)

Thank you so much for your reply! Here's my test results:

with 100 data points, 1PLC integration, here's the difference of time stamp between the first and last measurement:

 

autorange on, autozero on: 7s

autorange off, autozero on: 7s

autorange on, autozero off: 3.48 s

autorange off, autozero off: 3.47 s

 

So autozero has a major impact on the measurement speed.

 

Now the average time for one data point is 34.7 ms, which is comparable to the 1PLC measurement time + 3 ms voltage setting time, which comes out to be around 20 ms.   

0 Kudos
Message 3 of 6
(3,974 Views)

Nice work! 

 

You might also consider the Auto-zero Once option.  I'd have to re-read the documentation, but it does an autozero every so often to correct for errors but not every measurement.  Still it will add a delay, but will increase measurement accuracy.

 

Craig

0 Kudos
Message 4 of 6
(3,971 Views)

Thanks for that suggestion, here are the testing results, looks like autozero once has very small impact on the measurement time

 

autorange on, autozero on: 7s

autorange off, autozero on: 7s

autorange on, autozero off: 3.48 s

autorange off, autozero off: 3.47 s

 

autorange off, autozero once: 3.48s

0 Kudos
Message 5 of 6
(3,967 Views)

My goal is to measure the I-V curve at a series of voltage points. I'm using a for-loop to measure the multiple voltage points instead of a sweep, because I want to control an spectrometer to measure at the same time with Keithley at every voltage point for light emitting intensity, which cannot be linked to Keithley by hardware. However, the measurement is very slow, for 100 voltage points it takes 30s to run. I've disabled auto zero and set measurement speed to 1plc. The most likely reason could be that I put all the settings in the for loop, which slows down the measurement. But I'm not sure what can be taken out of the for loop to speed up the measurement

 

Also have several more questions,

1. Is there any rules for the sequence of configuring the measurement? Can I configure setting delay, NPLC, autozero before configuring measurement or configuring output? Can I configure output after enabling output? 

 

2. Right now I read out a value after each loop. Will it speed up the measurement if I store the value inside Keithley and read them out after the measurement?

 

3. Any other ways you would recommend to excute the IV measurement faster with a for loop?

 

Really appreciate your time for viewing and replying!

 

I've attached my code using the for loop measurement. 

0 Kudos
Message 6 of 6
(3,973 Views)