device.set_parameter('set_bias',bias)#set the bias
device.write('start_sweep')#start the measurement
device.wait()#wait for completition
# read the registers
freq=device.read_register('reg_sweep')
G=device.read_register('reg_A')
B=device.read_register('reg_B')
time.sleep(messparameter_dict["sleep"].value)
freq=np.array(device.read_register('reg_sweep'))
f_values.extend(freq)
G=np.array(device.read_register('reg_A'))
G_values.extend(G)
B_vlaues.extend(B)
B=np.array(device.read_register('reg_B'))
B_values.extend(B)
time.sleep(messparameter_dict["sleep"].value)
#do the calculations
foriinrange(len(freq)):
log_f.append(np.log10(freq[i]))
omega.append(2*np.pi*freq[i])
log_omega.append(np.log10(omega))
polar=cmath.polar(1/complex(G[i],B[i]))
Z.append(polar[0])
phi.append(180/np.pi*polar[1])#in deg
D.append(G[i]/B[i])
Cp.append(B[i]/omega)
Cs.append(Cp*(1+D**(2)))
Cp_area.append(Cp/area)
Cs_area.append(Cs/area)
Z_complex=cmath.rect(polar[0],polar[1])
ReZ.append(Z_complex.real)
ImZ.append(Z_complex.imag)
G_f_omega.append(G_p/area/omega)
# Do A test plot
fig,ax1=plt.subplots()
color='b'
ax1.set_xlabel('Frequency (Hz)')
ax1.set_ylabel('G (S)',color=color)
ax1.plot(freq,G,color=color)
ax1.tick_params(axis='y',labelcolor=color)
ax2=ax1.twinx()
color='y'
ax2.set_ylabel('B (S)',color=color)# we already handled the x-label with ax1
ax2.plot(freq,B,color=color)
ax2.tick_params(axis='y',labelcolor=color)
fig.suptitle(f"Results for Bias = {bias}V")
fig.tight_layout()
display(fig)
log_f=np.log10(freq)
log_f_values.extend(log_f)
omega=2*np.pi*freq
omega_values.extend(omega)
log_omega=np.log10(omega)
log_omega_values.extend(omega)
Y_complex=G+1j*B
Z_complex=1/Y_complex
Z=np.absolute(Z_complex)
Z_values.extend(Z)
phi=np.angle(Z_complex,deg=True)
phi_values.extend(phi)
D=G/B
D_values.extend(D)
Cp=B/omega
Cp_values.extend(Cp)
Cs=Cp*(1+D**(2))
Cs_values.extend(Cs)
Cp_area=Cp/area
Cp_area_values.extend(Cp_area)
Cs_area=Cs/area
Cs_area_values.extend(Cs_area)
ReZ=np.real(Z_complex)
ImZ=np.imag(Z_complex)
ReZ_values.extend(Rez)
ImZ_values.extend(ImZ)
G_area_omega=G_p/area/omega
G_area_omega_values.extend(G_area_omega)
device.write('bias_off')
# save to file
withopen(file,'w')asf:
dt=datetime.now().replace(second=0,microsecond=0)
f.write(f'# Measurement started at {dt}'+"\n")
f.write(f"# Wafer {sample_dict['wafer'].value} Sample {sample_dict['sample'].value} Comment {sample_dict['comment'].value} Temperature {sample_dict['temperature'].value}"+"\n")
f.write(f"# V_start {messparameter_dict['start'].value} V V_stop {messparameter_dict['stop'].value} V V_step {messparameter_dict['step'].value} V"+"\n")