Example JFET characterisation - Alshain-Oy/Strix GitHub Wiki
JFET characterisation using 2 Strix units
IV curves
Connection diagram
Code
#!/usr/bin/env python3
# Filename: measure-jfet.py
import sys
import serial
import libStrix
import time
com = serial.Serial( sys.argv[1], 460800, timeout = 2.5 )
# Connect to both units
smu1 = libStrix.Strix( com, 1 )
smu2 = libStrix.Strix( com, 2 )
smu1.write( libStrix.PARAM_AVERAGES, 1 )
smu2.write( libStrix.PARAM_AVERAGES, 5 )
# Turning internal heater off for the duration of the measuremenet to minimise noise
smu2.write( libStrix.PARAM_THERMAL_MODE, libStrix.MODE_HEATER_OFF)
smu1.enable_output( True )
smu2.enable_output( True )
VGS = [-0.5, -0.4, -0.3, -0.2, -0.1, 0.0]
VDS = [j/50.0 for j in range( 0, 250 )] # 250 points, 0..5V
curves = {}
for Vgate in VGS:
curves[Vgate] = {"V": [], "I": [] }
smu1.set_drive_voltage( Vgate )
for vdrive in VDS:
smu2.set_drive_voltage( vdrive )
Imeas = smu2.measure_current()
Vmeas = smu2.measure_voltage()
print( "Vgate:", Vgate, "Vmeas:", Vmeas, "Imeas:", Imeas, file = sys.stderr )
curves[Vgate]["I"].append( Imeas )
curves[Vgate]["V"].append( Vmeas )
smu1.enable_output( False )
smu2.enable_output( False )
# Turn heater back on
smu2.write( libStrix.PARAM_THERMAL_MODE, libStrix.MODE_HEATER_AUTO )
# Print out results
N = len( VDS )
for i in range( N ):
row = [VDS[i]]
for Vgate in VGS:
row.append( curves[Vgate]["I"][i] )
print( " ".join(["%.9e" % r for r in row]))
# py measure-jfet.py COMx > jfet-curves.dat