ni.com is currently experiencing slowness/issues due to ongoing maintenance.
Support teams are actively working on the soonest resolution.
ni.com is currently experiencing slowness/issues due to ongoing maintenance.
Support teams are actively working on the soonest resolution.
05-19-2022 05:28 PM
I have a PXIe-4139 and I want to make a pulsed current measurement.
I will be creating a program to run this test and I will be using nidcpower to interface to the SMU (I have version 20.7)/
I found several documents describing how to configure the various parameters but I don't see how to initiate the pulse.
I want to do this under SW control not using a HW trigger.
05-19-2022 08:09 PM
In that case, just the Initiate should fire the pulse.
05-19-2022 08:12 PM
Cool, I will try that.
Thanks
06-02-2022 01:10 PM
06-06-2022 10:56 AM
I configured the SW pulse trigger and I am still not able to generate a pulst
06-06-2022 12:38 PM
Hello markshancock,
Have you tried using one of the examples installed with NI-DCPower?
C:\Users\Public\Documents\National Instruments\NI-DCPower\Examples\DotNET 4.5\Pulsing\Single point\Pulse Current\cs
our pulse current examples should have what you need to get started, if not, please do reach out again.
thanks,
06-16-2022 07:43 PM
The driver I am updating is older and uses the .c api. Is there an example for creating a pulse using the c api?
One big question I have is the difference between the two sets of methods (one with and one without "WithChannels")
Ex:
niDCPower_ConfigureSourceMode(ViSession vi,ViInt32 sourceMode);
niDCPower_ConfigureSourceModeWithChannels(ViSession vi,ViConstString channelName,ViInt32 sourceMode);
The 1.6 v did not have the WithChannels methods (except for InitializeWithChannels).
06-20-2022 12:59 PM
There is no C example, but the ADE bindings for all the other languages map very very well to C, you should be able to translate it.
> One big question I have is the difference between the two sets of methods (one with and one without "WithChannels")
NI-DCPower's overall operating model was changed recently. You opt-in by opening your session using niDCPower_InitializeWithIndependentChannels(). This is the default in LabVIEW and the preferred way of using NI-DCPower.
What does "Independent Channels" give you? The ability to control the state of the channels independently when in a multi-channel session. For example, instead of calling niDCPower_Initiate(vi) which acts on all the channels in the session, you can call niDCPower_InitiateWithChannels(vi, "0-3") to initiate that subset. It also allows multi-intrument sessions - that is, sessions that span channels across multiple SMUs.
I hope that explains the difference.
06-21-2022 11:13 AM - edited 06-21-2022 11:15 AM
@kirsch,
The SW example I used was C# PulseVoltage.
dcPowerSession.Source.Mode = DCPowerSourceMode.SinglePoint;
dcPowerSession.Outputs[FullyQualifiedChannelName].Source.Output.Function = DCPowerSourceOutputFunction.PulseVoltage;
dcPowerSession.Outputs[FullyQualifiedChannelName].Source.PulseVoltage.VoltageLevel = PulseVoltageLevel;
dcPowerSession.Outputs[FullyQualifiedChannelName].Source.PulseVoltage.VoltageLevelRange = PulseVoltageLevelRange;
dcPowerSession.Outputs[FullyQualifiedChannelName].Source.PulseVoltage.BiasCurrentLimit = BiasCurrentLimit;
dcPowerSession.Outputs[FullyQualifiedChannelName].Source.PulseVoltage.CurrentLimit = PulseCurrentLimit;
dcPowerSession.Outputs[FullyQualifiedChannelName].Source.PulseVoltage.CurrentLimitRange = PulseCurrentLimitRange;
dcPowerSession.Outputs[FullyQualifiedChannelName].Source.PulseVoltage.BiasVoltageLevel = BiasVoltageLevel;
dcPowerSession.Outputs[FullyQualifiedChannelName].Source.PulseOnTime = PulseOnTime;
dcPowerSession.Outputs[FullyQualifiedChannelName].Source.PulseOffTime = PulseOffTime;
dcPowerSession.Outputs[FullyQualifiedChannelName].Source.PulseBiasDelay = PulseBiasDelay;
dcPowerSession.Outputs[FullyQualifiedChannelName].Source.SourceDelay = SourceDelay;
dcPowerSession.Outputs[FullyQualifiedChannelName].Measurement.ConfigureApertureTime(ApertureTime, DCPowerMeasureApertureTimeUnits.Seconds);
//Initiate the device to start generation and acquisition.
dcPowerSession.Control.Initiate();
I added log statements to record the calls I am making to niDCPower_32.dll
16:50:01,837 Abort[0], Rtn=0
16:50:01,837 Set property[0,OutputFunction] to value=1049, Rtn=0
16:50:01,867 Get property[0,OutputFunction] returned value=1049, Rtn=0
16:50:01,887 ConfigPulseVoltageRange[0]=3.6, Rtn=0
16:50:01,897 ConfigPulseVoltage[0]=3, Rtn=0
16:50:01,917 ConfigPulseBiasCurrentLimit[0]=0.01, Rtn=0
16:50:01,937 ConfigPulseCurrentLimitRange[0]=0.1, Rtn=0
16:50:01,957 ConfigPulseCurrentLimit[0]=0.01, Rtn=0
16:50:01,977 ConfigPulseBiasVoltage[0]=0, Rtn=0
16:50:01,997 Set property[0,PulseOnTime] to value=0.1, Rtn=0
16:50:02,017 Set property[0,PulseOffTime] to value=0.1, Rtn=0
16:50:02,037 Set property[0,PulseBiasDelay] to value=0.0001, Rtn=0
16:50:02,057 ConfigSoftwarePulseTrigger[0], Rtn=0
16:50:04,088 Set property[0,OutputEnabled] to value=True, Rtn=0
16:50:04,088 Set property[0,OutputConnected] to value=True, Rtn=0
16:50:04,098 Initiate[0], Rtn=0
16:50:04,138 SendSoftwareTrigger=1053, Rtn=0
16:50:05,339 Abort[0], Rtn=0
The [0] indicates the call is made on channel '0' using a "...WithChannels" call. Ex:
public int Initiate(string Channel)
{
int pInvokeResult = PInvoke.InitiateWithChannels(this._handle, Channel);
log.DebugFormat("Initiate[{0}], Rtn={1}", Channel, pInvokeResult);
PInvoke.TestForError(this._handle, pInvokeResult);
return pInvokeResult;
}
I have the SMU attached to a PXIe-5160 and I am capturing the output waveform.
To confirm the setup, I generated a pulse in SW by running the SMU in VoltageMode and changing the output voltage.
That worked fine so I know the setup is correct.
Note: I setup the digitizer and start the acquisition in the gap around 16:50:03
When I run my pulse code, this is what I get. No pulse
I don't see much difference between the calls I make and my inference from the C# example
06-21-2022 12:30 PM
Note: I tried the code without the ConfigSoftwarePulseTrigger and SendSoftwareTrigger and I get the same result.