Keithley 2400
2400
200V, 1A, 20W SourceMeter SMU
The Keithley 2400 SourceMeter is a 4-quadrant source-measure unit capable of simultaneously sourcing and measuring both voltage and current. Maximum output is 200V at 1A (20W total). Widely used for semiconductor characterization, solar cell testing, LED testing, and production test. Now manufactured by Tektronix. GPIB interface is standard. The output-off mode (OUTP:SMOD) is important for DUT protection -- HIMP opens the output relay, while NORM/ZERO keep it closed.
Status Byte
Section titled “Status Byte”| Bit 7 | Bit 6 | Bit 5 | Bit 4 | Bit 3 | Bit 2 | Bit 1 | Bit 0 |
|---|---|---|---|---|---|---|---|
| Operation | RQS/MSS | ESB | MAV | Questionable Data | Error Queue | Unused | Measurement Event |
| Operation summary bit | Requesting service / Master summary status | Event status byte summary bit | Message available in output buffer | Questionable data summary bit | One or more errors in error queue | Not used | Measurement event summary bit |
Use *STB? to read status byte, *SRE to set service request enable register
Commands
Section titled “Commands”IEEE 488.2 Common Commands
Section titled “IEEE 488.2 Common Commands”Standard IEEE 488.2 commands supported by all compliant instruments
| Command | Type | Description |
|---|---|---|
*IDN? | query | Identification query -- returns manufacturer, model, serial, firmware |
Details Returns (string) — Comma-separated identification
Example: KEITHLEY INSTRUMENTS INC.,MODEL 2400,1234567,C30 Mar 17 2006 09:29:29/A02 /K/J | ||
*RST | command | Reset to factory default state (output off, voltage source, 21V range) |
*CLS | command | Clear status registers and error queue |
*ESE {mask} | command | Set event status enable register |
Details Parameters
| ||
*ESE? | query | Query event status enable register |
Details Returns (numeric)
Example: 0 | ||
*ESR? | query | Read and clear event status register |
Details Returns (numeric)
Example: 0 | ||
*OPC | command | Set operation complete bit in ESR when all pending operations finish |
*OPC? | query | Returns 1 when all pending operations complete |
Details Returns (numeric)
Example: 1 | ||
*SRE {mask} | command | Set service request enable register |
Details Parameters
| ||
*SRE? | query | Query service request enable register |
Details Returns (numeric)
Example: 0 | ||
*STB? | query | Read status byte register |
Details Returns (numeric) — Status byte value
Example: 0 | ||
*TST? | query | Self-test; returns 0 for pass, 1 for fail |
Details Returns (numeric)
Example: 0 Note: Takes several seconds to complete | ||
*TRG | command | Trigger measurement from bus (requires trigger source BUS) |
*SAV {location} | command | Save current instrument setup to non-volatile memory |
Details Parameters
| ||
*RCL {location} | command | Recall instrument setup from non-volatile memory |
Details Parameters
| ||
Source Configuration
Section titled “Source Configuration”Configure the source (output) function, level, and range
| Command | Type | Description |
|---|---|---|
SOUR:FUNC {function} | command | Select source function (voltage or current) |
Details Parameters
| ||
SOUR:FUNC? | query | Query current source function |
Details Returns (string)
Example: VOLT | ||
SOUR:VOLT:MODE {mode} | command | Set voltage source mode |
Details Parameters
| ||
SOUR:VOLT {value} | command | Set source voltage level |
Details Parameters
Example SOUR:VOLT 5.0 | ||
SOUR:VOLT? | query | |
Details Returns (numeric)
Example: +5.00000000E+00 | ||
SOUR:VOLT:RANG {range} | command | Set voltage source range |
Details Parameters
| ||
SOUR:VOLT:RANG? | query | |
Details Returns (numeric)
Example: +2.00000000E+01 | ||
SOUR:VOLT:RANG:AUTO {state} | command | Enable/disable voltage source autoranging |
Details Parameters
| ||
SOUR:CURR:MODE {mode} | command | Set current source mode |
Details Parameters
| ||
SOUR:CURR {value} | command | Set source current level |
Details Parameters
Example SOUR:CURR 0.001 | ||
SOUR:CURR? | query | |
Details Returns (numeric)
Example: +1.00000000E-03 | ||
SOUR:CURR:RANG {range} | command | Set current source range |
Details Parameters
| ||
SOUR:CURR:RANG? | query | |
Details Returns (numeric)
Example: +1.00000000E-03 | ||
SOUR:CURR:RANG:AUTO {state} | command | Enable/disable current source autoranging |
Details Parameters
| ||
SOUR:DEL {seconds} | command | Set source delay (settling time before measurement) |
Details Parameters
Note: Allows DUT to settle after source changes before measurement is taken | ||
SOUR:DEL? | query | |
Details Returns (numeric)
Example: +1.00000000E-03 | ||
SOUR:DEL:AUTO {state} | command | Enable/disable automatic source delay |
Details Parameters
| ||
Sense (Measure) Configuration
Section titled “Sense (Measure) Configuration”Configure which parameters to measure and their ranges, compliance limits, and integration time
| Command | Type | Description |
|---|---|---|
SENS:FUNC {function_list} | command | Select measurement function(s) |
Details Parameters
Example SENS:FUNC 'VOLT','CURR' | ||
SENS:FUNC? | query | |
Details Returns (string)
Example: "VOLT:DC" | ||
SENS:VOLT:PROT {value} | command | Set voltage compliance limit (when sourcing current) |
Details Parameters
Example SENS:VOLT:PROT 10 Note: Acts as a voltage clamp to protect the DUT when the instrument is sourcing current | ||
SENS:VOLT:PROT? | query | |
Details Returns (numeric)
Example: +1.00000000E+01 | ||
SENS:VOLT:PROT:TRIP? | query | Query whether voltage compliance limit has been reached |
Details Returns (numeric) — 0=not tripped, 1=in compliance
Example: 0 | ||
SENS:CURR:PROT {value} | command | Set current compliance limit (when sourcing voltage) |
Details Parameters
Example SENS:CURR:PROT 0.1 Note: Acts as a current clamp to protect the DUT when the instrument is sourcing voltage | ||
SENS:CURR:PROT? | query | |
Details Returns (numeric)
Example: +1.00000000E-01 | ||
SENS:CURR:PROT:TRIP? | query | Query whether current compliance limit has been reached |
Details Returns (numeric) — 0=not tripped, 1=in compliance
Example: 0 | ||
SENS:VOLT:RANG {range} | command | Set voltage measurement range |
Details Parameters
| ||
SENS:VOLT:RANG? | query | |
Details Returns (numeric)
Example: +2.00000000E+01 | ||
SENS:VOLT:RANG:AUTO {state} | command | Enable/disable voltage measurement autoranging |
Details Parameters
| ||
SENS:CURR:RANG {range} | command | Set current measurement range |
Details Parameters
| ||
SENS:CURR:RANG? | query | |
Details Returns (numeric)
Example: +1.00000000E-01 | ||
SENS:CURR:RANG:AUTO {state} | command | Enable/disable current measurement autoranging |
Details Parameters
| ||
SENS:VOLT:NPLC {nplc} | command | Set voltage measurement integration time in power line cycles |
Details Parameters
Note: Higher NPLC = better resolution but slower. 10 NPLC = 6.5 digits. | ||
SENS:VOLT:NPLC? | query | |
Details Returns (numeric)
Example: +1.00000000E+00 | ||
SENS:CURR:NPLC {nplc} | command | Set current measurement integration time in power line cycles |
Details Parameters
| ||
SENS:CURR:NPLC? | query | |
Details Returns (numeric)
Example: +1.00000000E+00 | ||
SENS:AVER:STAT {state} | command | Enable/disable measurement averaging (digital filter) |
Details Parameters
| ||
SENS:AVER:COUN {count} | command | Set number of readings to average |
Details Parameters
| ||
SENS:AVER:TCON {type} | command | Set averaging filter type |
Details Parameters
| ||
Output Control
Section titled “Output Control”Enable/disable the source output and configure output-off behavior
| Command | Type | Description |
|---|---|---|
OUTP {state} | command | Turn source output on/off |
Details Parameters
Note: CAUTION: Turning output ON applies voltage/current to DUT. Verify compliance limits before enabling. | ||
OUTP? | query | Query output state |
Details Returns (numeric) — 0=OFF, 1=ON
Example: 0 | ||
OUTP:SMOD {mode} | command | Set output-off mode (behavior when output is turned off) |
Details Parameters
Note: HIMP physically disconnects the output. NORM/ZERO keep the output relay closed. | ||
OUTP:SMOD? | query | |
Details Returns (string)
Example: HIMP | ||
Measurement Execution
Section titled “Measurement Execution”Trigger and read measurements
| Command | Type | Description |
|---|---|---|
MEAS:VOLT? | query | Configure sense for voltage, trigger one reading, and return result |
Details Returns (numeric) — Depends on FORM:ELEM setting; default returns voltage, current, resistance, timestamp, status
Example: +5.00000000E+00,+1.23456789E-03,+4.05000000E+03,+1.00000000E+00,+0.00000000E+00 | ||
MEAS:CURR? | query | Configure sense for current, trigger one reading, and return result |
Details Returns (numeric)
Example: +5.00000000E+00,+1.23456789E-03,+4.05000000E+03,+1.00000000E+00,+0.00000000E+00 | ||
MEAS:RES? | query | Configure sense for resistance, trigger one reading, and return result |
Details Returns (numeric)
Example: +5.00000000E+00,+1.23456789E-03,+4.05000000E+03,+1.00000000E+00,+0.00000000E+00 | ||
READ? | query | Enable output if needed, trigger one measurement, return reading, disable output |
Details Returns (numeric) — Comma-separated values per FORM:ELEM
Example: +5.00000000E+00,+1.23456789E-03,+4.05000000E+03,+1.00000000E+00,+0.00000000E+00 Note: READ? is a high-level command that manages the output state automatically | ||
INIT | command | Initiate trigger model and place in wait-for-trigger state |
FETCH? | query | Return stored readings from buffer (no new trigger) |
Details Returns (numeric) — Comma-separated readings per FORM:ELEM | ||
Trigger
Section titled “Trigger”Trigger model configuration (arm layer and trigger layer)
| Command | Type | Description |
|---|---|---|
TRIG:SOUR {source} | command | Set trigger source |
Details Parameters
| ||
TRIG:SOUR? | query | |
Details Returns (string)
Example: IMM | ||
TRIG:DEL {seconds} | command | Set trigger delay |
Details Parameters
| ||
TRIG:DEL? | query | |
Details Returns (numeric)
Example: +0.00000000E+00 | ||
TRIG:COUN {count} | command | Set number of triggers to accept (measurements per arm event) |
Details Parameters
| ||
TRIG:COUN? | query | |
Details Returns (numeric)
Example: +1 | ||
SAMP:COUN {count} | command | Set number of readings per trigger |
Details Parameters
| ||
SAMP:COUN? | query | |
Details Returns (numeric)
Example: +1 | ||
ARM:SOUR {source} | command | Set arm layer event source |
Details Parameters
| ||
ARM:SOUR? | query | |
Details Returns (string)
Example: IMM | ||
ARM:COUN {count} | command | Set arm count (number of arm events before returning to idle) |
Details Parameters
| ||
ARM:COUN? | query | |
Details Returns (numeric)
Example: +1 | ||
Sweep Configuration
Section titled “Sweep Configuration”Configure voltage or current sweep parameters for IV curves and characterization
| Command | Type | Description |
|---|---|---|
SOUR:VOLT:STAR {value} | command | Set voltage sweep start value |
Details Parameters
Example SOUR:VOLT:STAR 0 | ||
SOUR:VOLT:STOP {value} | command | Set voltage sweep stop value |
Details Parameters
Example SOUR:VOLT:STOP 5 | ||
SOUR:VOLT:STEP {value} | command | Set voltage sweep step size |
Details Parameters
Example SOUR:VOLT:STEP 0.1 | ||
SOUR:CURR:STAR {value} | command | Set current sweep start value |
Details Parameters
| ||
SOUR:CURR:STOP {value} | command | Set current sweep stop value |
Details Parameters
| ||
SOUR:CURR:STEP {value} | command | Set current sweep step size |
Details Parameters
| ||
SOUR:SWE:RANG {mode} | command | Set sweep ranging mode |
Details Parameters
| ||
SOUR:SWE:POIN {count} | command | Set number of sweep points (overrides step if both set) |
Details Parameters
| ||
SOUR:SWE:POIN? | query | |
Details Returns (numeric)
Example: 51 | ||
SOUR:SWE:SPAC {spacing} | command | Set sweep spacing |
Details Parameters
| ||
SOUR:SWE:DIR {direction} | command | Set sweep direction |
Details Parameters
| ||
Data Format
Section titled “Data Format”Control which data elements are returned and their format
| Command | Type | Description |
|---|---|---|
FORM:ELEM {elements} | command | Select data elements included in output readings |
Details Parameters
Example FORM:ELEM VOLT,CURR Note: Default is all five elements. Reducing elements speeds up data transfer. | ||
FORM:ELEM? | query | |
Details Returns (string)
Example: VOLT,CURR,RES,TIME,STAT | ||
FORM:DATA {format} | command | Set data transfer format |
Details Parameters
Note: Binary formats are faster for bulk sweep data but require binary parsing | ||
FORM:DATA? | query | |
Details Returns (string)
Example: ASC | ||
Buffer / Data Store
Section titled “Buffer / Data Store”Internal data buffer for storing sweep and measurement readings
| Command | Type | Description |
|---|---|---|
TRAC:CLE | command | Clear all readings from buffer |
TRAC:POIN {size} | command | Set buffer size (number of readings to store) |
Details Parameters
| ||
TRAC:POIN? | query | Query buffer size |
Details Returns (numeric)
Example: 2500 | ||
TRAC:POIN:ACT? | query | Query number of readings currently stored in buffer |
Details Returns (numeric)
Example: 0 | ||
TRAC:FEED {source} | command | Select data source for buffer |
Details Parameters
| ||
TRAC:FEED:CONT {control} | command | Set buffer control mode |
Details Parameters
| ||
TRAC:DATA? | query | Return all readings from buffer |
Details Returns (numeric) — Comma-separated values per FORM:ELEM for each reading
Example: +0.00000E+00,+1.23456E-09,+0.00000E+00,+0.00000E+00,+0.00000E+00,... | ||
Status
Section titled “Status”Status register queries for event detection and service requests
| Command | Type | Description |
|---|---|---|
STAT:MEAS? | query | Read and clear measurement event register |
Details Returns (numeric) — Measurement event register value
Example: 0 | ||
STAT:MEAS:ENAB {mask} | command | Set measurement event enable register |
Details Parameters
| ||
STAT:OPER? | query | Read and clear operation event register |
Details Returns (numeric)
Example: 0 | ||
STAT:OPER:ENAB {mask} | command | Set operation event enable register |
Details Parameters
| ||
STAT:QUES? | query | Read and clear questionable data event register |
Details Returns (numeric)
Example: 0 | ||
STAT:QUES:ENAB {mask} | command | Set questionable data event enable register |
Details Parameters
| ||
STAT:PRES | command | Preset all enable registers to 0 |
System
Section titled “System”System configuration and queries
| Command | Type | Description |
|---|---|---|
SYST:ERR? | query | Read and remove one error from error queue |
Details Returns (string) — Error code and message
Example: +0,"No error" | ||
SYST:VERS? | query | Query SCPI version |
Details Returns (string)
Example: 1995.0 | ||
SYST:BEEP {frequency},{duration} | command | Issue a beep at specified frequency and duration |
Details Parameters
Example SYST:BEEP 440,0.5 | ||
SYST:BEEP:STAT {state} | command | Enable/disable beeper |
Details Parameters
| ||
SYST:RSEN {state} | command | Enable/disable 4-wire remote sensing |
Details Parameters
Note: ON=4-wire (Kelvin) sensing for accurate measurements. Requires sense leads connected to DUT. | ||
SYST:RSEN? | query | |
Details Returns (numeric) — 0=2-wire, 1=4-wire
Example: 0 | ||
SYST:AZER:STAT {state} | command | Enable/disable autozero for measurements |
Details Parameters
Note: Disabling autozero doubles measurement speed at the cost of some accuracy | ||
DISP:ENAB {state} | command | Enable/disable the front panel display |
Details Parameters
Note: Disabling the display improves measurement throughput. Same effect as DISP ON/OFF. | ||
DISP:ENAB? | query | Query front panel display enable state |
Details Returns (numeric) — 0=disabled, 1=enabled
Example: 1 | ||
DISP {state} | command | Turn front panel display on/off |
Details Parameters
Note: Turning display off improves measurement speed | ||
DISP:TEXT "{message}" | command | Display custom text on front panel (up to 32 chars) |
Details Parameters
Example DISP:TEXT "IV SWEEP" | ||
DISP:TEXT:CLE | command | Clear custom display text and return to normal display |
SYST:PRES | command | Return to factory default settings |
Common Workflows
Section titled “Common Workflows”IV Curve
Section titled “IV Curve”Sweep voltage from 0V to 5V and measure current at each step — standard diode or resistor characterization
Reset to known state
*RST Clear status registers
*CLS Select voltage source function
SOUR:FUNC VOLT Set to sweep mode
SOUR:VOLT:MODE SWE Set sweep start voltage
SOUR:VOLT:STAR 0 Set sweep stop voltage
SOUR:VOLT:STOP 5 Set sweep step size
SOUR:VOLT:STEP 0.1 Set linear sweep spacing
SOUR:SWE:SPAC LIN Set current compliance to 100mA
SENS:CURR:PROT 0.1 Configure sense to measure voltage and current
SENS:FUNC 'VOLT','CURR' Return only voltage and current data
FORM:ELEM VOLT,CURR Set trigger count to match sweep points
TRIG:COUN 51 Enable output
OUTP ON Initiate sweep
INIT Wait for completion
*OPC? 1 Fetch all sweep data
TRAC:DATA? Comma-separated V,I pairs Disable output
OUTP OFF Constant Current Source
Section titled “Constant Current Source”Source a precise current and measure the resulting voltage across the DUT
Reset to known state
*RST Clear status registers
*CLS Select current source function
SOUR:FUNC CURR Set fixed source mode
SOUR:CURR:MODE FIX Set source current to 1mA
SOUR:CURR 0.001 Set voltage compliance to 10V
SENS:VOLT:PROT 10 Measure voltage
SENS:FUNC 'VOLT' Return voltage only
FORM:ELEM VOLT Enable output
OUTP ON Trigger and read voltage
READ? +X.XXXXXXXXE+XX Check if in compliance (voltage limit hit)
SENS:VOLT:PROT:TRIP? 0 Disable output when done
OUTP OFF Resistance Measurement
Section titled “Resistance Measurement”Source a known current, measure voltage, and read computed resistance using 4-wire sensing
Reset to known state
*RST Clear status registers
*CLS Enable 4-wire remote sensing
SYST:RSEN ON Select current source function
SOUR:FUNC CURR Set fixed source mode
SOUR:CURR:MODE FIX Set test current to 1mA
SOUR:CURR 0.001 Set voltage compliance
SENS:VOLT:PROT 20 Measure resistance
SENS:FUNC 'RES' Return resistance only
FORM:ELEM RES Set NPLC for good resolution
SENS:VOLT:NPLC 10 Enable output
OUTP ON Trigger and read resistance
READ? +X.XXXXXXXXE+XX Disable output when done
OUTP OFF Source Voltage / Measure Current
Section titled “Source Voltage / Measure Current”Apply a fixed voltage to a DUT and measure the resulting current — standard LED or semiconductor forward bias test
Reset to known state
*RST Clear status registers
*CLS Select voltage source function
SOUR:FUNC VOLT Set fixed source mode
SOUR:VOLT:MODE FIX Set source voltage to 3.3V
SOUR:VOLT 3.3 Set voltage source range
SOUR:VOLT:RANG 20 Set current compliance to 20mA
SENS:CURR:PROT 0.02 Measure current
SENS:FUNC 'CURR' Set current measurement range
SENS:CURR:RANG 0.1 Return current only
FORM:ELEM CURR Set NPLC for good accuracy
SENS:CURR:NPLC 1 Enable output
OUTP ON Trigger and read current
READ? +X.XXXXXXXXE-XX Check if in compliance (current limit hit)
SENS:CURR:PROT:TRIP? 0 Disable output when done
OUTP OFF