Example JFET characterisation - Alshain-Oy/Strix GitHub Wiki

JFET characterisation using 2 Strix units

IV curves

Connection diagram

JFET 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