File Exchange

image thumbnail


version (29.6 KB) by Eugen Zimmermann
Matlab program for J-V measurements with a Keithley 24XX sourcemeter


Updated 20 Aug 2018

From GitHub

View Version History

View license on GitHub

This project contains device drivers and a corresponding class object for controlling a Keithley 24XX sourcemeter in Matlab. The implemented methods include standard current-voltage measurements, time resolved current-voltage sweep measurements, time resolved current-density point measurements, cyclic current-voltage measurements (MPP->JSC->VOC->JSC), and steady state tracking measurements of maximum power point, VOC, and JSC.
The main function is classKeithley2400.m, which will create a Keithley2400 device object for the Keithley 24XX (SCPI) family. There are two optional input parameters (string connectionType, string/int port), which can be also set after creation.

All methods are implemented into classKeithley2400_testscript.m and can be tested seperately. An GPIB controller is required and the Keithley has to be set to SCPI! A serial connection does not work and all references will be removed in future updates.

I did not use intentionally the instrument control box, although it is installed, so I hope it does run without. All paths I make are relative, however in Windows style. Contribution for making it compatible to Linux and MacOS are welcome :)

Cite As

Eugen Zimmermann (2021). EugenZimmermann/matlab-keithley-jv (, GitHub. Retrieved .

Comments and Ratings (1)

Margaret Scheiner

When I try to run this (with a 2410 SourceMeter), I run into an error with measureSteadyState. It runs fine to find dataSteadyStateMPP, but gives errors on dataSteadyStateJSC and dataSteadyStateVOC (while just running your provided testscript). Specifically, it seems to stop communication with the source meter properly. It gives a GPIB error "operation has been canceled most likely due to a timeout" linked to the 'fprintf(device.connectionHandle,':ABORt'); line in goIdle(device). This is after checking and finding that the scan was not aborted by the user in the measureSteadyState function. This error means the Keithley's output remains on (since it never goes idle) and the device has to be disconnected, turned off, and then set up again for any future measurements.

Do you have any suggestions for overcoming this issue? Thank you!

MATLAB Release Compatibility
Created with R2014b
Compatible with R2014b and later releases
Platform Compatibility
Windows macOS Linux

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!