Short Answer: for my personal K2636A SMU, but because of Keithley's TSP Language most 26XX Models should work just fine. The Console Works for all TCP Connections btw (but probably an shell tool works better :/)
Ya, well .... ill got one for private reasons and no acess to a proper lab-bech power supply- thats the background of it. In order to use the SMU's as independent Voltage/Current Sources with graphical feedback for drawn current or voltage levels this tool was created.
There are many projects out there using some sort of VISA Library... and for me VISA is not an option. Dont get me wrong, ill respect the hard work and time it consumed to create pyvisa
or similar approaches, but for me the most reliable connection for data transfer appeard to be raw sockets.
(Also National Instruments is the devil :D)
-
Basic Lab Bench Powersupply Mode with graphical measurements of currents, voltages
-
Script Managment Helper to easily upload tsp-script and various data
Similar to the lua scripting concept of the interla tsp language, ill tried to stick to the coding scheme with the keithley-tool tibrary.
The Main Class used is K2636
with its multiple sub-classes
a) smua
b) smub
c) display
d) error_queue
e) tcpSock
these are the physical smu's inside the K2636 Housing. Each of them consists of an subclass measure
and source
with it's respective methods according to the reference manual (currently only a few a implemeted, but in the future maybe will be extended :) )
According to the reference manual, these subclass represents the display object and also ... only a few methods are implemented till now.
Ahh... Yes... Errors! Rather sophisticaed error handling is not what we are talking about. This class represents the error-queue on the K2636 device. The errors during operation are stored on it, can be gathered, thus automatically deleted on the K2636.
The core of the library. Just a basic tcp socket conneted to the raw
port of the keithley's tcp socket. Usually the communication is done via ascii-strings. therefore everything is built on top of this communication class. Till now i wasn't able to coop with the lack of acknowledgement by the K2636, therefore it tries to read, directly after you send something out to the K2636, till an timeout occures.
You can also use the library for script based applications as follows:
from modules.keithley_lib import K2636
k = K2636()
k.tcpConnect("192.168.0.56",5025)
k.display.setText("Hello World")
This should set the displayed text to hello woorld ... obviously!
from modules.keithley_lib import K2636,get_default_channel_config
k = K2636()
k.tcpConnect("192.168.0.56",5025)
k.applyVoltage("smua",1.25,ilim=1e-2)
k.setOutput('smua',True)
This applies 1.25 V with an comliance of 10 mA to SMUA. Because of electrical savety reasons, the output needs to be manually switched on. Dont worry, the interlock prevents voltages above 30V DC, if you didn't bridge the interlock on the K2636 manually.
results = k.measure('smua',['i','v'])
Measures the current and voltage on SMUA and returns a dictinary of the results requested by the parameter list provided.
I'll use PySide6 only for everything.
The widgets are pretranslated from *.ui / *.qrc by running
build_tasks.py
So no dynamic loading. Then just run the application with
python ./main.py
The used materials and icons are from FreePic sourced via flaticon
- Multicolor Sweeps, for each SMUA Sweep, another color needs to be used (sounds simple, but because of bad code, a few things need to be thrown around :/ )
- Some Settings that can be saved to disk and loaded again during startup of the application