Posted Fri, 08 Dec 2023 00:45:37 GMT by Song, T
Hi there,

I am using two 2460 SMUs and one Keysight 34410 DMM to measure the I-V characteristics of 3 different photodiodes (two needs the source and sense from the SMUs for I-V curves, and one only needs current reading from the DMM. All the data points need to be measured simultaneously). I would like to do synchronized measurements on these 3 devices with SCPI commands on LabVIEW platform. My plan is to utilize the digital I/O lines to trigger the synchronization. I found an application note which describes a similar scenarios like mine (see attached), but it is based on SMU 2400 and the command sets are different from 2460. I wonder if anyone from Tektronix could help me convert those commands into 2460 SCPI format so that I can run it with my SMUs and learn from there? Meanwhile, could you share with me on some SMU 2460 synchronization examples for source/sense? A few SCPI examples based on LabVIEW platform would be great. 

Thanks,
Tao
Posted Wed, 03 Jan 2024 14:29:23 GMT by Odhner, Bradley
Check out section 17 of the 2460 Reference Manual for a guide on converting 2400 code for the 2460: https://www.tek.com/en/keithley-source-measure-units/keithley-smu-2400-graphical-series-sourcemeter-manual-8

I'm not totally sure what you mean on synchronizing source/sense for the 2460s, you just want to measure the voltage and current at the same time? This is called source readback on the 2460 and is on by default. When source readback is on, the SMU will measure the source value immediately before the measure value. These readings are returned with the same timestamp in the reading buffer.
Posted Sat, 09 Mar 2024 01:06:09 GMT by Song, T

Thanks for the reply. What I mean on synchronization is to synchronize the testing of two SMUs and one DMM on three individual devices. I do know the readback function. My need is more than a readback on SMU.

Actually, after reading through the triggering section in the reference manual, now I am able to use the Keithley’s synchronous triggering mode to configure one SMU (let’s say SMU #1) as a synchronous master and the other as an acceptor (SMU#2). My first goal is to do synchronized IV sweeps on two difference devices with the two SMUs (the next goal is to add an extra Keysight DMM for measuring monitor device voltage at the same time, but we can leave it for now since I have not completed the first goal). For example, I would have SMU#1 measure one device's current at 10 different voltage bias levels (e.g., 0-0.9V with a 100mV step). Meanwhile, at each voltage sourcing level, I need SMU#2 to simultaneously run a IV sweep starting from 0 to 0.6V (e.g., with 50mV step). As you may know, this needs a source/measure loop on both SMUs. The following are my SCPI codes for the two SMUs (I also attached them below)
#SMU 1 (master):
*RST
:DIG:LINE1:MODE TRIG, OUT
:DIG:LINE2:MODE TRIG, IN
:TRIG:DIG1:OUT:PULS 0.001
:TRIG:DIG1:OUT:STIM NOT1
:TRIG:DIG2:IN:EDGE EITH
:SOUR:FUNC VOLT
:SOUR:VOLT:ILIM 0.200000;
:FUNC "CURR"
:SOUR:VOLT:READ:BACK ON
:CURR:RSEN ON

:SENS:CONF:LIST:CRE "Masterbiaslevel";
:SOUR:VOLT 0.100000;             **this voltage level changes in each loop when the slave SMU finish its IV sweep in the LabVIEW code
:SENS:CONF:LIST:STOR "Masterbiaslevel"
:TRIG:LOAD "Empty"
:TRIG:BLOC:NOT 1, 1;  
:TRIG:BLOC:SOUR:STAT 2, ON;
:TRIG:BLOC:CONF:RECALL 3, "Masterbiaslevel"
:TRIG:BLOC:DEL:CONS 4, 0.100000;
:TRIG:BLOC:MDIG 5, "defbuffer1", 1;
:TRIG:BLOC:BRAN:COUN 6, 7, 4;
:TRIG:BLOC:WAIT 7, DIG2;
:TRIG:BLOC:SOUR:STAT 8, OFF;
INIT
*WAI
TRAC:DATA? 1,7,"defbuffer1", SOUR, READ, REL

#SMU2 (slave):
*RST
:DIG:LINE2:MODE TRIG, OUT
:DIG:LINE1:MODE TRIG, IN
:TRIG:DIG2:OUT:PULS 0.001      
:TRIG:DIG2:OUT:STIM NOT1
:TRIG:DIG1:IN:EDGE EITH
:SOUR:FUNC VOLT
:SOUR:VOLT:ILIM 0.200000;
:FUNC "CURR"
:SOUR:VOLT:READ:BACK ON
:CURR:RSEN ON

:SOUR:CONF:LIST:CRE "MyConfigList";
:SOUR:VOLT 0.000000;
:SOUR:CONF:LIST:STOR "MyConfigList";
:SOUR:VOLT 0.100000;
:SOUR:CONF:LIST:STOR "MyConfigList";
:SOUR:VOLT 0.200000;
:SOUR:CONF:LIST:STOR "MyConfigList";
:SOUR:VOLT 0.300000;
:SOUR:CONF:LIST:STOR "MyConfigList";
:SOUR:VOLT 0.350000;
:SOUR:CONF:LIST:STOR "MyConfigList";
:SOUR:VOLT 0.380000;
:SOUR:CONF:LIST:STOR "MyConfigList";
:SOUR:VOLT 0.400000;
:SOUR:CONF:LIST:STOR "MyConfigList";
:SOUR:VOLT 0.450000;
:SOUR:CONF:LIST:STOR "MyConfigList";
:SOUR:VOLT 0.500000;
:SOUR:CONF:LIST:STOR "MyConfigList";

:TRIG:LOAD "Empty";
:TRIG:BLOC:WAIT 1, DIG1; 
:TRIG:BLOC:SOUR:STAT 2, ON;
:TRIG:BLOC:CONF:NEXT 3, "MyConfigList";
:TRIG:BLOC:DEL:CONS 4,0.100000;
:TRIG:BLOC:MDIG 5,"defbuffer1";
:TRIG:BLOC:BRAN:COUN 6,9,4;
:TRIG:BLOC:NOT 7, 1;
:TRIG:BLOC:SOUR:STAT 8, OFF;
INIT
*WAI
TRAC:DATA? 1,9,"defbuffer1", SOUR, READ, REL


In short, the logic of the code above is that when SMU #1 does a voltage sourcing and sense, it will simultaneously send a trigger to SMU#2 via the digit I/O line 1 and tell SMU#1 run a I-V sweep. After this sweep is complete, SMU#2 will send a trigger back from I/O line 2 to SMU#1 to notify the sweep is complete and then have SMU #1 moves to the next voltage sourcing point. I loaded these commands into LabVIEW platform and used a For loop from LabVIEW to repeat the synchronizing process until all the voltage sourcing points from the master SMU#1 are done. Now the situation is I can run the code once (i.e., SMU#1 can measure at one voltage point while synchronizing SMU#2 to run a full IV sweep). When starting running the voltage bias loop with SMU#1, a timeout error came out. Attached are the two pictures of the trigger model screens I took when the two SMUs encountered a timeout. Additionally, my Labview code with the loop function appears to work fine when running in the highlight execution mode, but when running in the normal mode, a timeout error showed up right away again. I wonder if there is a good way to handle this SCPI command timeout/racing issue. Any suggestions or feedback would be appreciated.

Thanks!
T


 
Posted Wed, 20 Mar 2024 20:13:01 GMT by Song, T
I solved my timeout issue by myself after adding an extra SCPI command ":AZER:OFF" to turn off the SMUs' Automatic reference measurements. Just check SMU 2460 ref manual page 4-43 for why this command matters for sequential testing. 
Posted Thu, 21 Mar 2024 14:45:03 GMT by Odhner, Bradley

Oh good! I had read through your post but hadn't looked at the code yet. Glad you figured it out! Autozero is a very common setting to trip people up when trying to do time dependent measurements.

We do recommend using the Autozero Once command (AZER:ONCE) immediately before your test and periodically or when you have gaps in your test for the best accuracy.

You must be signed in to post in this forum.