NI PXIe-4139 Setup¶
The NI PXIe-4139 is a ±60 V / 1 A four-quadrant Source Measure Unit (SMU). It uses the NI-DCPower driver — not VISA/SCPI — so it requires its own driver stack.
Prerequisites¶
1 — NI-DAQmx runtime¶
Download and install from: NI-DAQmx Downloads
This installs the NI instrument driver runtime that the nidcpower Python package calls into.
Windows only
The nidcpower package and NI-DAQmx runtime are only supported on Windows at this time. The REPL loads the NI PXIe-4139 driver conditionally — on Linux/macOS the instrument is silently skipped.
2 — nidcpower Python package¶
3 — Verify the DLL is found¶
After installing NI-DAQmx, the required DLL (nidcpower_64.dll or nidcpower.dll) should be in one of:
C:\Program Files\IVI Foundation\IVI\Bin\C:\Program Files (x86)\IVI Foundation\IVI\Bin\
If Python can't find the DLL, add the IVI Bin directory to your system PATH.
Hardware setup¶
- Seat the PXIe-4139 card in the PXIe chassis.
- Connect the chassis to the host PC via MXI-Express or Thunderbolt.
- Open NI MAX (Measurement & Automation Explorer) and verify the card appears under
My System > Devices and Interfaces. - Note the resource name shown in NI MAX (e.g.,
PXI1Slot2). This name is needed for manual Python scripts (see the example below). The REPL typically auto-discovers the card without requiring manual resource specification; the resource name is only needed as a fallback if auto-detection fails or you need to force a specific device.
REPL auto-detection¶
When nidcpower is installed and the card is present, the REPL assigns the SMU as smu1 automatically on startup (or on scan).
If the card is not found, run scan after the chassis is powered and the MXI link is established.
Minimal working example¶
# Verify nidcpower works outside the REPL
import nidcpower
with nidcpower.Session("PXI1Slot2") as session:
session.output_function = nidcpower.OutputFunction.DC_VOLTAGE
session.voltage_level = 5.0
session.current_limit = 0.01
session.output_enabled = True
session.initiate()
v = session.measure(nidcpower.MeasurementTypes.VOLTAGE)
i = session.measure(nidcpower.MeasurementTypes.CURRENT)
print(f"V = {v:.6f} V I = {i:.6f} A")
session.output_enabled = False
REPL usage¶
Once detected as smu1, use the standard SMU commands:
upper_limit smu voltage 6.0
upper_limit smu current 0.05
smu set 5.0 0.02
smu on
sleep 0.5
smu meas v
smu meas i
smu off
See Source Measure Unit (SMU) for the full command reference.
Troubleshooting¶
| Symptom | Likely cause | Fix |
|---|---|---|
ImportError: No module named 'nidcpower' |
Package not installed | pip install nidcpower |
nidcpower imports but smu1 not found |
Card not visible to driver | Check NI MAX; re-seat card; power-cycle chassis |
DLL load failed |
NI-DAQmx not installed or DLL not on PATH | Install NI-DAQmx runtime; add IVI Bin dir to PATH |
Resource not found |
Wrong resource name | Open NI MAX and confirm the resource name shown there |