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 R_cal = 2*V_bias/(I_cal_p-I_cal_n)
# 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
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) palette = plt.get_cmap('Set1') # create a color palette
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''' if save_data:
line = [i, Voltage, Resistance, Vg, I_leakage, T, current_time - last_time, I_leakage] stlab.writeline(myfile, line) myfile.write('\n') # stlab.metagen.fromarrays(myfile, iBiaslist, range(i+1), xtitle='Iset (A)',ytitle='Index_Voltage ()',colnames=colnames) time.sleep(time_sleep/5) plt.plot(Vglist,resistance_array, 'o', color=palette(count), linewidth=1, alpha=0.9, label='{:.1f}nA'.format(bias_current*1e9)) plt.legend() plt.title(prefix) plt.pause(0.1) plt.savefig(os.path.dirname(myfile.name)+'\\'+prefix) ivvi.RampVoltage(vgdac,0.,tt=1.) ivvi.RampAllZero(tt=1.) ivvi.close() zhinst.utils.disable_everything(daq, device) v_gateleakage.close() Keysight.RampVoltage(0.,tt=1.) Keysight.close() # saving suppelemntary plots title = 'Resistance' caption = '' stlab.autoplot(myfile,'Iset (A)','Resistance (k ohm)',title=title,caption=caption) title = 'Leakage Current' caption = '' stlab.autoplot(myfile,'Iset (A)','Leakage Current (A)',title=title,caption=caption)
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) if Vglist.size == 0: