Skip to content
Snippets Groups Projects
Commit ad819d11 authored by Alexandros Asonitis's avatar Alexandros Asonitis
Browse files

GateDiode with results!

parent 9a81e2e9
Branches
No related tags found
No related merge requests found
%% Cell type:code id:6defdb49-06c2-469d-beb5-bc2e147e3f79 tags:
``` python
%run ADU.py
```
%% Output
%% Cell type:code id:3da7c505-85a3-45e9-853e-86a9c9e30569 tags:
``` python
print(device.error())
```
%% Output
+0,"No error"
%% Cell type:code id:ed84d07f-5703-455f-b2ff-32bf82dd910c tags:
``` python
```
......
......@@ -71,7 +71,6 @@ def on_start_clicked(b):
#check the values
vgs_ok = check_values(Vgs_transfer['start'],Vgs_transfer['step'],Vgs_transfer['stop'],'primary')
vds_ok=check_values(Vds_transfer['start'],Vds_transfer['step'],Vds_transfer['stop'],'secondary')
print(vgs_ok,vds_ok)
if vgs_ok == True and vds_ok == True:
#calculate number of points for var2(VDS)
......@@ -184,6 +183,49 @@ def on_start_clicked(b):
file = create_file(filename)
save_to_file('Output Curve',file,df,sample,integration_output,Vgs_output,Vds_output)
if gatediode_check.value == True:
#check the values
vgs_ok = check_values(Vgs_gatediode['start'],Vgs_gatediode['step'],Vgs_gatediode['stop'],'primary')
if vgs_ok == True:
#configure smus
smu1 = device.smu_dict()
smu1.update(vname ='VS1',iname = 'IS1',mode = 'COMM',func='CONS')
smu3 = device.smu_dict()
smu3.update(vname='VGS',iname ='IG',mode='V',func='VAR1')
smu4 = device.smu_dict()
smu4.update(vname ='VS2',iname = 'IS2',mode = 'COMM',func='CONS')
var1=device.var1_dict()
var1.update(
mode=Vgs_gatediode['hyst'].value,
start=Vgs_gatediode['start'].value,
stop=Vgs_gatediode['stop'].value,
step=Vgs_gatediode['step'].value,
comp =Vgs_gatediode['comp'].value,
pcomp=Vgs_gatediode['pcomp'].value
)
smu3.update(VAR1=var1)
#execute measurement
Vgs,Igmm,abs_Igmm=Gatediode(smu1,smu3,smu4,integration_gatediode.value,device)
clear_output()
plot_gatediode(Vgs,Igmm)
#save results
header=['VGS(V)','IGmm(mA/mm)',"ABS(IGmm(mA/mm))"]
data = {header[0]:Vgs,header[1]:Igmm,header[2]:abs_Igmm}
df = pd.DataFrame(data)
filename =f"{sample['sample'].value}_{sample['field'].value}_{sample['device'].value}D.txt"
file = create_file(filename)
save_to_file('Gatediode',file,df,sample,integration_gatediode,Vgs_gatediode)
information_box("Measurement finished!")
enable_widgets(all_widgets)
button.on_click(on_start_clicked)
......
......@@ -196,7 +196,9 @@ def save_to_file(measurement,file,df,sample,integration,Vgs,Vds=None):
f.write(f"Device Width(µm):{sample['width'].value}"+"\n\n")
f.write('Parameters\n')
f.write(f'Integration time:{integration.value}'+"\n")
f.write(f"VGS from {Vgs['start'].value}V to {Vgs['stop'].value}V with step {Vgs['step'].value}V"+"\n")
if Vds!=None:
f.write(f"VDS from {Vds['start'].value}V to {Vds['stop'].value}V with step {Vds['step'].value}V"+"\n")
#calculate the values
Vgs_comp=Vgs["comp"].value
......@@ -212,6 +214,8 @@ def save_to_file(measurement,file,df,sample,integration,Vgs,Vds=None):
f.write(f"Drain Current Compliance(A):{Vds_comp}"+"\n")
else:
f.write(f"Drain Power Compliance(A):{Vds_pcomp}"+"\n")
f.write(f'Integration time:{integration.value}'+"\n")
f.write("\nResults\n")
f.write(df.to_string())
......
......@@ -64,7 +64,7 @@ def Test(device):
device.autoscaling()
def Transfer(smu1,smu2,smu3,smu4,integration,device):
device.del_user_functions()
#set all the smus
device.setup_smu(1,smu1)
device.setup_smu(2,smu2)
......@@ -75,7 +75,7 @@ def Transfer(smu1,smu2,smu3,smu4,integration,device):
device.setup_var2(smu2['VAR2'])
device.integration_time(integration)
device.del_user_functions()
device.user_function('Gm','mS/mm','1E4*DIFF(ID,VGS)')
device.user_function('IDmm','mA/mm','1E4*ID')
......@@ -102,7 +102,7 @@ def Transfer(smu1,smu2,smu3,smu4,integration,device):
def Output(smu1,smu2,smu3,smu4,integration,device):
device.del_user_functions()
#setup all smus
device.setup_smu(1,smu1)
device.setup_smu(2,smu2)
......@@ -113,7 +113,7 @@ def Output(smu1,smu2,smu3,smu4,integration,device):
device.setup_var1(smu2['VAR1'])
device.integration_time(integration)
device.del_user_functions()
device.user_function('IDmm','mA/mm','1E4*ID')
device.user_function('IGmm','mA/mm','1E4*IG')
......@@ -135,7 +135,8 @@ def Output(smu1,smu2,smu3,smu4,integration,device):
return Vgs,Vds,Idmm,Igmm
def Gatediode(smu1,smu3,sm4,integration,device):
def Gatediode(smu1,smu3,smu4,integration,device):
device.del_user_functions()
#setup all smus
device.setup_smu(1,smu1)
......@@ -146,15 +147,14 @@ def Gatediode(smu1,smu3,sm4,integration,device):
device.setup_var1(smu3['VAR1'])
device.integration_time(integration)
device.del_user_functions()
#define user functions
device.user_function('IGmm','mA/mm','1E4*IG')
device.user_function('ABSIGm','mA/mm','ABS(IGmm)')
#display
device.display_variable('X','VDS')
device.display_variable('Y1','IDmm')
device.display_variable('Y2','IGmm')
device.display_variable('X','VGS')
device.display_variable('Y1','IGmm')
device.display_variable('Y2','ABSIGm')
device.single_measurement()
while device.operation_completed()==False:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment