Tektronix Technical Forums are maintained by community involvement. Feel free to post questions or respond to questions by other members. Should you require a time-sensitive answer, please contact your local Tektronix support center here.

Resistance measurement during pulses

Post Reply
francesco.barbon
Posts: 4
Joined: May 8th, 2020, 8:17 am
Country: Germany

Resistance measurement during pulses

Post by francesco.barbon » May 8th, 2020, 9:13 am

Dear colleagues,

I have a setup with a 2461 SMU, and I have to characterize resistors (0.5-2 Ohm) during current pulses with amplitude 1-10 A and pulses width 1-5 ms.
The current software measures the voltage through the sense line and get the readout of the current sourced.
The IV values are then used by a PC to compute back the resistance.
So far I am happy, because I can sort the bad values (open) by monitoring the current/voltage values.

Question 1:
I am curious of the opportunity to use the :SENSe:FUNCtion "RES";
Are there any advantages (i.e. speed, accuracy) over the separate IV values acquisition?
Would be possible to define the maximum value (dummy value, i.e. 5 Ohm) provided if the

Question 2:
Due to the high current pulse and the inductive circuitry, the pulse (i.e. 2 ms) will reach the top value after a while (i.e. 0.2 ms)
Is the Measurement Delay synchronized for both current and voltage? Which are the instrument criteria?
I suppose that the delay is chosen based also on the NPLC value set...

Question 3:
related to the case above.
The pulse width is defined as time between rising 10% and falling 90%.
This means that could happens that the pulse pack will never reach the expected value, especially for short pulses.
(p.s. I do not understand why the width is not defined bewteen the rigind and falling 90%, by the way)
Is there a solution if the test needs to keep the amplitude (say 90% >) for a certain time?

Andrea C
Keithley Applications
Keithley Applications
Posts: 1436
Joined: October 15th, 2010, 10:35 am
Country: United States
Contact:

Re: Resistance measurement during pulses

Post by Andrea C » May 11th, 2020, 3:01 pm

There are some videos and sample code that might help:
viewtopic.php?f=263&t=142177#p288517

Using the measure R function is just a short hand. The reported R will still be dependent on the underlying I and V values. No accuracy improvements, etc.

The examples I point you to make use of the dual 1MHz digitizing A/D converters. With that you can capture the full pulse and validate that the pulse has a settled portion/flat top. The instrument makes no judgments about what is or is not settled.
Once you have confidence about well formed pulses, you can elect to measure just during the settled portion just before the pulse turns off.

With the timers and the trigger blocks, you can have a great deal of control over the duration of the pulses and when within the pulse the V and I are measured.

francesco.barbon
Posts: 4
Joined: May 8th, 2020, 8:17 am
Country: Germany

Re: Resistance measurement during pulses

Post by francesco.barbon » June 24th, 2020, 4:50 am

Hi Andrea,
thanks for the reply, I gave a look on your material.

Am I forced to use the digitalizer function for the pulses in the extended mode?
Because I would need at the end only a single point per pulse.
However, this could be the reason because I am struggling to get my code working for current >7A...
I am now programing is SCPI, and my script is the following:

*RST
:SOURce:FUNC CURRent;
:SENSe:FUNCtion "VOLTage";
:ROUTe:TERMinals REAR;
:SENSe:VOLTage:RANGe 20;
:SENSe:VOLTage:AZERo OFF;
:SENSe:VOLTage:RSENse ON;
:SENSe:VOLTage:NPLC 0.02;
:SOURce:CURRent:READ:BACK ON; <- Error
*OPC
:SOUR:PULS:TR:CURR 0.0000, 10.0000, 0.0010, 5, ON, "defbuffer1", 0.0000, 0.010000, 1.000000, 20.000000;
:SOURce:VOLTage:PROTection PROT20;
:SENSe:VOLTage:DELay:AUTO OFF;
:SENSe:VOLTage:DELay 0.0005;
*OPC

francesco.barbon
Posts: 4
Joined: May 8th, 2020, 8:17 am
Country: Germany

Re: Resistance measurement during pulses

Post by francesco.barbon » July 1st, 2020, 6:24 am

Andrea C wrote:
May 11th, 2020, 3:01 pm
There are some videos and sample code that might help:
viewtopic.php?f=263&t=142177#p288517

Using the measure R function is just a short hand. The reported R will still be dependent on the underlying I and V values. No accuracy improvements, etc.

The examples I point you to make use of the dual 1MHz digitizing A/D converters. With that you can capture the full pulse and validate that the pulse has a settled portion/flat top. The instrument makes no judgments about what is or is not settled.
Once you have confidence about well formed pulses, you can elect to measure just during the settled portion just before the pulse turns off.

With the timers and the trigger blocks, you can have a great deal of control over the duration of the pulses and when within the pulse the V and I are measured.
Do you have the equivalent code for SCPI?

Andrea C
Keithley Applications
Keithley Applications
Posts: 1436
Joined: October 15th, 2010, 10:35 am
Country: United States
Contact:

Re: Resistance measurement during pulses

Post by Andrea C » July 1st, 2020, 8:09 am

Sorry, I do not have the same in SCPI. Do you have a constraint that prevents using TSP command set?
TSP can do 100% of what SCPI can; TSP can do a lot more too. Use of SCPI when TSP is avail is a rare choice for me.

As for the other question about 'are you forced to use digitizer': I would say no. But keep in mind that use of integrating A/D during pulses forces you to use small values of NPLC so that measurement completes during the active part of pulse. Additionally if you allow for any settling time before measuring, then even smaller NPLC value is used. The reduction in NPLC reduces measure accuracy and increases standard deviation. It depends on your error budget and the the timing specifics (pulse widths, cabling and required settling times, repeatability goals, etc.).
Also consider the pulse mode measurements using integrator usually cannot make use of source readback to use a measured value for the sourced current which can further improve the accuracy and repeatability of the resistance measurement. With the dual digitizers, both I and V are measured in sync.

francesco.barbon
Posts: 4
Joined: May 8th, 2020, 8:17 am
Country: Germany

Re: Resistance measurement during pulses

Post by francesco.barbon » July 2nd, 2020, 8:45 am

Thanks Andrea,
I am aware about the integrating topic.
This is the rule :|

I will try to convert everything to TSP soon, if I not get out of the topic.
By the way, I got this code working:

*RST
:SOURce:FUNC CURRent;
:SENSe:DIGitize:FUNCtion "VOLTage";
:ROUTe:TERMinals REAR;
:SENSe:DIGitize:VOLTage:RANGe 7.000000;
:SENSe:DIGitize:VOLTage:RSENse ON;
:SENSe:DIGitize:VOLTage:SRATE 20000;
:SOURce:CURRent:READ:BACK ON;
:SOURce:CURRent:VLIMit 7.000000;
:TRAC:CLE "defbuffer1";
:SOURce:PULSe:TRain:CURRent 0.000000, 10.000000, 0.001000, 3, ON, "defbuffer1", 0.000000, 0.010000, 1.000000, 7.000000, OFF;

I can measure the pulses correctly.
Now I was wondering to modify the trigger model to catch only the samples during the pulse...
The original triggering model generate by the code above is the following:
1) BUFFER_CLEAR BUFFER: defbuffer1
2) CONFIG_RECALL CONFIG_LIST: MeasCurrPulseTrainList and CurrPulseTrainList INDEX: 1 and 1
3) SOURCE_OUTPUT OUTPUT: ON
4) DIGITIZE BUFFER: defbuffer1 COUNT: INFINITE
5) DELAY_CONSTANT DELAY: 0.000000000
6) SOURCE_PULSE_OUTPUT PULSE OUTPUT: ON
7) DELAY_CONSTANT DELAY: 0.000920000
8) SOURCE_PULSE_OUTPUT PULSE OUTPUT: OFF
9) DELAY_CONSTANT DELAY: 0.010000000
10) DIGITIZE BUFFER: defbuffer1 COUNT: STOP
11) BRANCH_COUNTER VALUE: 3 BRANCH_BLOCK: 4
12) SOURCE_OUTPUT OUTPUT: OFF
13) BRANCH_ALWAYS BRANCH_BLOCK: 0

Thus I go to modify the sequence:
:TRIG:LOAD "EMPTY";
:TRIG:BLOC:BUFF:CLE 1, "defbuffer1";
:TRIGger:BLOCk:CONFig:RECall 2,"MeasCurrPulseTrainList", 1,"CurrPulseTrainList ",1;
:TRIGger:BLOCk:SOURce:STATe 3,ON;
:TRIGger:BLOCk:SOURce:PULSe:STATe 4,ON;
:TRIGger:BLOCk:DIGitize 5,"defbuffer1",20;
:TRIGger:BLOCk:DELay:CONStant 6,0.00092;
:TRIGger:BLOCk:SOURce:STATe 7,OFF;
:TRIGger:BLOCk:DELay:CONStant 8,0.009;
:TRIGger:BLOCk:BRANch:COUNter 9,3,4;
:TRIGger:BLOCk:SOURce:STATe 10, OFF;
:TRIGger:BLOCk:BRANch:ALWays 11,0;

I get then:
1) BUFFER_CLEAR BUFFER: defbuffer1
2) CONFIG_RECALL CONFIG_LIST: MeasCurrPulseTrainList and CurrPulseTrainList INDEX: 1 and 1
3) SOURCE_OUTPUT OUTPUT: ON
4) SOURCE_PULSE_OUTPUT PULSE OUTPUT: ON
5) DIGITIZE BUFFER: defbuffer1 COUNT: 20
6) DELAY_CONSTANT DELAY: 0.000920000
7) SOURCE_OUTPUT OUTPUT: OFF
8) DELAY_CONSTANT DELAY: 0.009000000
9) BRANCH_COUNTER VALUE: 3 BRANCH_BLOCK: 4
10) SOURCE_OUTPUT OUTPUT: OFF
11) BRANCH_ALWAYS BRANCH_BLOCK: 0

As soon I trigger, I get the following error:
Instrument reports: 2722,"Block number 2 contains 'CurrPulseTrainList ', an invalid configuration list;

I verified that CurrPulseTrainList is the same :|

Post Reply

Return to “Resistivity Measurements”

Who is online

Users browsing this forum: No registered users and 3 guests