''' Initializing the devices '''

# initial configuration of the Lock-in
apilevel_example = 6  # The API level supported by this example.
(daq, device, props) = zhinst.utils.create_api_session(device_id, apilevel_example, required_devtype='.*LI|.*IA|.*IS')
zhinst.utils.api_server_version_check(daq)
zhinst.utils.disable_everything(daq, device)
out_mixer_channel = zhinst.utils.default_output_mixer_channel(props)


## Temperature readout
mytriton = TritonWrapper()


# resetting the IVVI
dev = IVVI_DAC('COM5') # IVVI
dev.RampAllZero()

# initializing the Keithley for gate current measurement
vmeasure = stlab.adi('TCPIP::192.168.1.161::INSTR',read_termination='\n') # with Keithley DMM6500
# vmeasure=stlab.adi("ASRL1::INSTR") #with Keithley 2000

vmeasure.write('SENS:VOLT:DC:RANG:AUTO 0')
vmeasure.write('SENS:VOLT:DC:RANGE 2')
vmeasure.write(':INIT:CONT 0')
vmeasure.write('VOLT:NPLC 1')
vmeasure.write('TRIG:SOUR IMM')
vmeasure.write(":SYST:AZER:STAT OFF")
vmeasure.write(":TRIG:COUN 1")
gate_leakage_v_I_conversion = 1e-6 # conversion factor of the measured voltage on S1h 'Current monitor' to leakage current
Esempio n. 2
0
idstring = '_at{:.2f}mK'.format(T).replace('.','p')
colnames = ['Vmeas (V)', 'Iset (A)', 'Rmeas (Ohm)', 'Vgate (V)', 'T (mK)', 'Time (s)', 'Ileakage (nA)']
myfile = stlab.newfile(prefix, idstring, colnames, autoindex=True)


Vglist = np.linspace(Vgmax, Vgmin, (Vgmax-Vgmin)/deltaVg+1)
Vg_ini = Vglist[0]
END = False
total_count = Vglist.shape[0]
resistance_array = np.array([])
applied_gate_array = np.array([])
I_leakage_array = np.array([])


##Inititalizing the devices
ivvi = IVVI_DAC(addr='COM5', verb=True)
ivvi.RampAllZero(tt=2.)

vmeas = stlab.adi(addr='TCPIP::192.168.1.105::INSTR') #for measuring the voltage accross the sample
v_gateleakage = stlab.adi(addr='TCPIP::192.168.1.162::INSTR') #for measuring the leakage current

## Estimating for the internal resistances
print ('#### Calibration for the internal resistances ####')
input ('Short the S3b_output and M1b_input (pin #4), Press Enter to continue...')

ivvi.RampVoltage(S3b_dac,V_bias/S3b_range*1e3,tt=0.5, steps = 5) ##ramping this voltage in 20seconds
I_cal_p = float(vmeas.query('READ?')) / M1b_total_gain

ivvi.RampVoltage(S3b_dac,-V_bias/S3b_range*1e3,tt=1, steps = 5) ##ramping this voltage in 20seconds
I_cal_n = float(vmeas.query('READ?')) / M1b_total_gain
Esempio n. 3
0
M1b_mode = 'Low-Noise'  # 'Low-Noise' or 'Low-Rin'

S1h_gain = 45.  #V/V gain for the applied gate, set on S1h
S3b_range = 100e-6  #Full range of the applied current, set on S4c

M1b_total_gain = M1b_gain * M1b_postgain_switch
prefix = prefix + str(V_bias) + 'uV'
V_bias *= 1e-6

initial_calibration = True

##########################################################
''' Initializing the devices '''

##Inititalizing the IVVI
ivvi = IVVI_DAC(addr='COM4', verb=True)
ivvi.RampAllZero(tt=2., steps=10)

## Temperature readout
tempdev = He7Temperature(addr='145.94.39.138', verb=False)

vmeas = stlab.adi(addr='TCPIP::192.168.1.105::INSTR'
                  )  #for measuring the voltage accross the sample

# IO settings
pygame.init()
pygame.display.set_mode((100, 100))

#############################################################
''' MEASUREMENT'''
Esempio n. 4
0
idstring = '_at{:.2f}mK'.format(T).replace('.','p')
colnames = ['Vset (V)', 'Imeas (A)', 'Vgate (V)', 'T (mK)', 'Time (s)', 'Ileakage (nA)']
myfile = stlab.newfile(prefix, idstring, colnames, autoindex=True)


Vglist = np.linspace(Vgmax, Vgmin, (Vgmax-Vgmin)/deltaVg+1)

if Vgmax ==Vgmin == 0:
    gate_it =False
else: 
    gate_it =True


if gate_it: 
    ##Inititalizing the devices
    ivvi = IVVI_DAC(addr='COM5', verb=True)
    ivvi.RampAllZero(tt=2., steps = 20)
    v_gateleakage = stlab.adi(addr='TCPIP::192.168.1.162::INSTR') #for measuring the leakage current


Vg_ini = Vglist[0]

V_bias_list = np.linspace(V_bias_max, V_bias_min, (V_bias_max-V_bias_min)/delta_V_bias+1)

END = False

plt.rcParams["figure.figsize"] = [16,9] 
plt.title(prefix)
plt.ylabel('current [nA]')
plt.xlabel('bias Voltage [$\mu$V]')
plt.xlim(V_bias_min*1e6,V_bias_max*1e6)
    int((V_bias_max - V_bias_min) / delta_V_bias) + 1) + V_bias_ofset

END = False

if S3b_range >= 1e-3:
    coeff = 1e3
    unit = 'm'
else:
    coeff = 1e6
    unit = '$\mu$'

plt.rcParams["figure.figsize"] = [16, 9]
palette = plt.get_cmap('Set1')  # create a color palette

##Inititalizing the devices
ivvi = IVVI_DAC(addr='COM3', verb=True)
ivvi.RampAllZero(tt=2., steps=20)

Imeas = stlab.adi(
    addr='TCPIP::192.168.1.105::INSTR'
)  #for measuring the current converted to Voltage at M0 output

if Vgmax != 0 and measure_gate_leakage:
    v_gateleakage = stlab.adi(
        addr='TCPIP::192.168.1.106::INSTR')  #for measuring the leakage current
else:
    I_leakage = -1
''' Start the measurement '''

## Calibration for internal resistors
overshoot = False
Esempio n. 6
0
## Temperature readout
mytriton = TritonWrapper()
T = mytriton.GetTemperature(8)

print('### Measure T 10 times ###')

try:
	T = mytriton.GetTemperature(8)
except:
	T = -1

Tini = T*1000.

## IVVI
ivvi = IVVI_DAC(addr='COM5', verb=True)
# ivvi.RampAllZero(tt=10.)

## Keithley
v_gateleakage = stlab.adi(addr='TCPIP::192.168.1.162::INSTR') #for measuring the leakage current

## HF2LI
measure_amplitude = i_oss*R_bias #measurement amplitude [V]
measure_output_channnel = 1
measure_input_channnel = 1
measure_frequency = 77 #[Hz]
demodulation_time_constant = 0.01
deamodulation_duration = 0.3

apilevel_example = 6  # The API level supported by this example.
(daq, device, props) = zhinst.utils.create_api_session('dev352', apilevel_example, required_devtype='.*LI|.*IA|.*IS')
pygame.init()
pygame.display.set_mode((100,100))

##########################################################
''' Initializing the devices '''

# initial configuration of the Lock-in
apilevel_example = 6  # The API level supported by this example.
(daq, device, props) = zhinst.utils.create_api_session('dev352', apilevel_example, required_devtype='.*LI|.*IA|.*IS')
zhinst.utils.api_server_version_check(daq)
zhinst.utils.disable_everything(daq, device)
out_mixer_channel = zhinst.utils.default_output_mixer_channel(props)

# resetting the IVVI
dev = IVVI_DAC('COM4') # IVVI
dev.RampAllZero()

ramp_time = np.abs(np.floor(shift_voltage/ramp_speed))
dev.RampVoltage(DAC,1000*shift_voltage/s1h_gain,tt=ramp_time, steps = 20) # the factor 1000 is applied as the unit reads in mV.


# initializing the Keithley for gate current measurement
vmeasure = stlab.adi('TCPIP::192.168.1.105::INSTR',read_termination='\n') # with Keithley DMM6500
vmeasure.write('SENS:VOLT:DC:RANG:AUTO 0')
vmeasure.write('SENS:VOLT:DC:RANGE 2')
vmeasure.write(':INIT:CONT 0')
vmeasure.write('VOLT:NPLC 1')
vmeasure.write('TRIG:SOUR IMM')
vmeasure.write(":SYST:AZER:STAT OFF")
vmeasure.write(":TRIG:COUN 1")
Esempio n. 8
0
    'color': 'darkred',
    'weight': 'normal',
    'size': 16,
}

measure_frequency = np.linspace(start_freq, stop_freq, freq_points)

##########################################################
''' Initializing the devices '''

# IVVI settings
s1h_gain = 45 * (
    1 / 101
)  # [V/V] manual gain set on S1h module, the second term (101/1) is made externally using a voltage devider
DAC = 1  # DAC linked to the S1h
dev = IVVI_DAC('COM5')  # IVVI
dev.RampAllZero()

# initializing the Keithley for gate current measurement
vmeasure = stlab.adi('TCPIP::192.168.1.105::INSTR')  # with Keithley DMM6500

vmeasure.write('SENS:VOLT:DC:RANG:AUTO 0')
vmeasure.write('SENS:VOLT:DC:RANGE 10')
vmeasure.write(':INIT:CONT 0')
vmeasure.write('VOLT:NPLC 1')
vmeasure.write('TRIG:SOUR IMM')
vmeasure.write(":SYST:AZER:STAT OFF")
vmeasure.write(":TRIG:COUN 1")
gate_leakage_v_I_conversion = 1e-6

#Triton
print('### Measure T 10 times ###')
try:
    T0 = mytriton.GetTemperature(8)
except:
    T0 = -1
time.sleep(1)
for x in range(9):
    try:
        T = mytriton.GetTemperature(8)
    except:
        T = -1
    T0 += T
Tini = T0 / 10. * 1000.

##Communicate with devices
ivvi = IVVI_DAC(addr='COM5', verb=True)
ivvi.RampAllZero(tt=10.)

vmeas = stlab.adi(addr='TCPIP::192.168.1.105::INSTR')

islist1 = np.arange(0, ismax, deltaI)
islist = np.concatenate(
    [islist1[:-1], islist1[::-1], -islist1[1:-1], -islist1[::-1]])

idstring = '_at{:.2f}mK'.format(Tini).replace('.', 'p')
colnames = [
    'Iset (A)', 'Vmeas (V)', 'Rmeas (Ohm)', 'Vgate (V)', 'T (mK)', 'Time (s)'
]
last_time = time.time()

Vglist = np.linspace(Vgmax, Vgmin, (Vgmax - Vgmin) / deltaVg + 1)