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

double gate devices part 6 (more interface)

parent ca478c99
No related branches found
No related tags found
No related merge requests found
......@@ -8,39 +8,37 @@ from help import *
from measurements import *
import configparser
# Create the grids
#create the information grid
style = {'description_width': 'initial'}
sample = information_box_new()
###end of sampling information#######################################
# move checkboxes outside of the tabs
transfer_check,integration_transfer = header('Transfer Curve')
output_check,integration_output = header('Output Curve')
gatediode_check,integration_gatediode=header('Gatediode')
transfer_check,integration_transfer,transfer_gates = header('Transfer Curve',"MEDium")
output_check,integration_output,output_gates = header('Output Curve',"SHORt")
gatediode_check,integration_gatediode,_=header('Gatediode',"MEDium")
checkboxes = widgets.HBox([transfer_check,output_check,gatediode_check])
display(checkboxes)
print()
#details of smus
details= details()
#transfer
Vds_transfer_widgets,Vds_transfer = secondary('VDS',1,0,1,0.1)
Vtg_transfer_widgets,Vtg_transfer = primary('VTG',-7,0.1,7,0.01)
Vbg_transfer_widgets,Vbg_transfer = synchronous('VBG',-50,50,0.01)
transfer_box = widgets.VBox([integration_transfer,Vds_transfer_widgets,Vtg_transfer_widgets,Vbg_transfer_widgets])
Vds_transfer_widgets,Vds_transfer = secondary('VDS',0.05,0.95,1,1e-2)
Vtg_transfer_widgets,Vtg_transfer = primary('VTG',-5,0.01,5,1e-3)
Vbg_transfer_widgets,Vbg_transfer = synchronous('VBG',-15,0.1,15,1e-3)
transfer_box = widgets.VBox([integration_transfer,transfer_gates,Vds_transfer_widgets,Vtg_transfer_widgets,Vbg_transfer_widgets])
#output
Vds_output_widgets,Vds_output = primary('VDS',0,0.01,5,0.1)
Vtg_output_widgets,Vtg_output = secondary('VTG',1,1,5,0.01)
Vbg_output_widgets,Vbg_output = additional_secondary('VBG',10,10,20,0.01)
Vds_output_widgets,Vds_output = primary('VDS',0,0.01,5,1e-2)
Vtg_output_widgets,Vtg_output = secondary('VTG',-5,2,5,1e-3)
Vbg_output_widgets,Vbg_output = additional_secondary('VBG',-15,5,15,1e-3)
output_box = widgets.VBox([integration_output,Vds_output_widgets,Vtg_output_widgets,Vbg_output_widgets])
output_box = widgets.VBox([integration_output,output_gates,Vds_output_widgets,Vtg_output_widgets,Vbg_output_widgets])
#GateDiodde
terminal = widgets.Dropdown(
......@@ -49,12 +47,12 @@ terminal = widgets.Dropdown(
value ='VTG',
style= {'description_width': 'initial'}
)
Vgs_gatediode_widgets,Vgs_gatediode=primary('VG',-8,0.05,2,0.02)
Vgs_gatediode_widgets,Vgs_gatediode=primary('VG',-5,0.05,5,1e-3)
gatediode_box = widgets.VBox([integration_gatediode,terminal,Vgs_gatediode_widgets])
#the tab widget
children = [details,transfer_box,output_box,gatediode_box]
titles = ["SMU Configuration","Transfer","Output","Gatediode"]
children = [transfer_box,output_box,gatediode_box]
titles = ["Transfer","Output","Gatediode"]
tab = widgets.Tab()
tab.children = children
tab.titles = titles
......@@ -63,6 +61,7 @@ display(tab)
print()
# the button
button = widgets.Button(description ='Start Measurement')
output = widgets.Output()
......@@ -70,7 +69,7 @@ output = widgets.Output()
export_ini_button = widgets.Button(description = 'Export as ini')
import_ini_button = widgets.Button(description='Import from ini')
all_widgets =[button,transfer_check,integration_transfer,output_check,integration_output,gatediode_check,integration_gatediode,terminal,export_ini_button,import_ini_button]
all_widgets =[transfer_gates,output_gates,button,transfer_check,integration_transfer,output_check,integration_output,gatediode_check,integration_gatediode,terminal,export_ini_button,import_ini_button]
add_widgets_to_list(sample,all_widgets)
add_widgets_to_list(Vds_transfer,all_widgets)
......
......@@ -8,14 +8,33 @@ width = "50%"
height = 'auto'
style = {'description_width': 'initial'}
floatbox_width = "80%"
def header(name):
def header(name,integration):
style = {'description_width': 'initial'}
options_integration=["SHORt","MEDium","LONG"]
check=widgets.Checkbox(description = name,value = True,indent = False)
integration= widgets.Dropdown(options=options_integration,value="MEDium",description='Integration Time',style =style,layout=Layout(height='auto', width="30%"))#integration time
check=widgets.Checkbox(
description = name,
value = True,
indent = False
)
integration= widgets.Dropdown(
options=options_integration,
value=integration,description='Integration Time',
style =style,
layout=Layout(height='auto', width="30%")
)
return check, integration
select = widgets.SelectMultiple(
options = ["VTG","VBG"],
value = ["VTG","VBG"],
description = "Sweeping Gates (press ctrl and click):",
style =style,
layout=Layout(height='auto', width="30%"),
rows = 2
)
return check, integration ,select
def primary(name,start,step,stop,comp):
......@@ -55,8 +74,6 @@ def primary(name,start,step,stop,comp):
}
return primary_grid,parameters
def secondary(name,start,step,stop,comp):
secondary_grid = GridspecLayout(4,4)
secondary_grid[:,3]=widgets.Label(name,layout=Layout(height='auto', width='auto'))
......@@ -93,7 +110,7 @@ def secondary(name,start,step,stop,comp):
def information_box_new():
width = '50%'
width = '90%'
sample_information=widgets.Label("Sample Information",layout=Layout(height=height, width='50%'))
sample_information.style.font_weight='bold'
information_grid=GridspecLayout(3,2)
......@@ -125,7 +142,19 @@ def information_box_new():
information_grid[i,j].style = style
display(widgets.VBox([sample_information,information_grid]))
config = widgets.Label("SMU Configuration",layout=Layout(height='auto', width='auto'))
smu1 = widgets.Label("SMU1:Top Gate",layout=Layout(height='auto', width='auto'))
smu2 = widgets.Label("SMU2:Drain",layout=Layout(height='auto', width='auto'))
smu3 = widgets.Label("SMU3:Back Gate",layout=Layout(height='auto', width='auto'))
smu4 = widgets.Label("SMU4:Source(Ground)",layout=Layout(height='auto', width='auto'))
config.style.font_weight='bold'
vbox2 = widgets.VBox([config,smu1,smu2,smu3,smu4])
vbox1=widgets.VBox([sample_information,information_grid])
display(widgets.HBox([vbox1,vbox2]))
print()
information = {
......@@ -138,7 +167,7 @@ def information_box_new():
return information
def synchronous(name,start,stop,comp):
def synchronous(name,start,step,stop,comp):
synchronous_grid = GridspecLayout(4,4)
synchronous_grid[:,3]=widgets.Label(name,layout=Layout(height='auto', width='auto'))
synchronous_grid[:,3].style.font_weight = 'bold'
......@@ -146,30 +175,32 @@ def synchronous(name,start,stop,comp):
#first line
synchronous_grid[0,0]=widgets.Label("Start(V)",layout=Layout(height='auto', width='auto'))
#primary_grid[0,1]=widgets.Label("Step(V)",layout=Layout(height='auto', width='auto'))
synchronous_grid[0,1]=widgets.Label("Step(V)(Only 1 Gate)",layout=Layout(height='auto', width='auto'),style = style)
synchronous_grid[0,2]=widgets.Label("Stop(V)",layout=Layout(height='auto', width='auto'))
#second line
synchronous_grid[1,0]=widgets.BoundedFloatText(value=start,min=-100,max=100,step=1,layout=Layout(height='auto', width=floatbox_width))
#primary_grid[1,1]=widgets.BoundedFloatText(value=step,min=-200,max=200,step=1,layout=Layout(height='auto', width=floatbox_width))
synchronous_grid[1,1]=widgets.BoundedFloatText(value=step,min=-200,max=200,step=1,layout=Layout(height='auto', width=floatbox_width))
synchronous_grid[1,2]=widgets.BoundedFloatText(value=stop,min=-100,max=100,step=1,layout=Layout(height='auto', width=floatbox_width))
#third line
synchronous_grid[2,0]=widgets.Label("Compliance(A)",layout=Layout(height='auto', width='auto'))
synchronous_grid[2,2] =widgets.Label("Power Compliance(W) (0=OFF)",layout=Layout(height='auto', width='auto'))#mind the gap
#primary_grid[2,2] =widgets.Label("Hysterisis",layout=Layout(height='auto', width='auto'))#mind the gap
synchronous_grid[2,1] =widgets.Label("Power Compliance(W)(0=OFF)(Only 1 Gate)",layout=Layout(height='auto', width='auto'),style = style)#mind the gap
synchronous_grid[2,2] =widgets.Label("Hysterisis(Only 1 gate)",layout=Layout(height='auto', width='auto'),style = style)#mind the gap
#fourth line
synchronous_grid[3,0]=widgets.BoundedFloatText(value=comp,min=-0.1,max=0.1,step=0.01,layout=Layout(height='auto', width=floatbox_width))
synchronous_grid[3,2]=widgets.BoundedFloatText(value=0,min=0,max=2,step=0.1,layout=Layout(height='auto', width=floatbox_width))#mind the gap
#primary_grid[3,2]=widgets.Dropdown(options=['SINGle','DOUBle'],value='SINGle',layout=Layout(height='auto', width=floatbox_width))#mind the gap
synchronous_grid[3,1]=widgets.BoundedFloatText(value=0,min=0,max=2,step=0.1,layout=Layout(height='auto', width=floatbox_width))#mind the gap
synchronous_grid[3,2]=widgets.Dropdown(options=['SINGle','DOUBle'],value='SINGle',layout=Layout(height='auto', width=floatbox_width))#mind the gap
parameters = {
'start': synchronous_grid[1,0],
'stop': synchronous_grid[1,2],
'comp': synchronous_grid[3,0],
'pcomp':synchronous_grid[3,2]
'pcomp':synchronous_grid[3,2],
'step': synchronous_grid[1,1],
'hyst': synchronous_grid[3,2]
}
return synchronous_grid,parameters
......@@ -190,11 +221,11 @@ def additional_secondary(name,start,step,stop,comp):
#third line
secondary_grid[2,0]=widgets.Label("Compliance(A)",layout=Layout(height='auto', width='auto'))
#secondary_grid[2,2] =widgets.Label("Power Compliance(W) (0=OFF)",layout=Layout(height='auto', width='auto'))#mind the gap
secondary_grid[2,2] =widgets.Label("Power Compliance(W)(0=OFF)(Only 1 Gate)",layout=Layout(height='auto', width='auto'),style = style)#mind the gap
#fourth line
secondary_grid[3,0]=widgets.BoundedFloatText(value=comp,min=-0.1,max=0.1,step=0.01,layout=Layout(height='auto', width=floatbox_width))
#secondary_grid[3,2]=widgets.BoundedFloatText(value=0,min=0,max=2,step=0.1,layout=Layout(height='auto', width=floatbox_width))#mind the gap
secondary_grid[3,2]=widgets.BoundedFloatText(value=0,min=0,max=2,step=0.1,layout=Layout(height='auto', width=floatbox_width))#mind the gap
parameters = {
'start': secondary_grid[1,0],
......@@ -202,22 +233,4 @@ def additional_secondary(name,start,step,stop,comp):
'stop':secondary_grid[1,2],
'comp':secondary_grid[3,0]
}
return secondary_grid,parameters
\ No newline at end of file
# How to place smus
def details():
smu1 = widgets.Label("SMU1:Top Gate",layout=Layout(height='auto', width='auto'))
smu2 = widgets.Label("SMU2:Drain",layout=Layout(height='auto', width='auto'))
smu3 = widgets.Label("SMU3:Back Gate",layout=Layout(height='auto', width='auto'))
smu4 = widgets.Label("SMU4:Source(Ground)",layout=Layout(height='auto', width='auto'))
smu1.style.font_weight='bold'
smu2.style.font_weight='bold'
smu3.style.font_weight='bold'
smu4.style.font_weight='bold'
vbox = widgets.VBox([smu1,smu2,smu3,smu4])
return vbox
\ No newline at end of file
%% Cell type:code id:81f37cac-ea14-4540-8bc9-78bee248dfbb tags:
``` python
import sys
sys.path.insert(0, './lib')
sys.path.insert(0, '..') #append parent directory
from interface import *
```
%% Cell type:code id:731635ba-6f97-4a65-ad78-ae90b277544b tags:
``` python
# Create the grids
#create the information grid
style = {'description_width': 'initial'}
sample = information_box_new()
###end of sampling information#######################################
# move checkboxes outside of the tabs
transfer_check,integration_transfer = header('Transfer Curve')
output_check,integration_output = header('Output Curve')
gatediode_check,integration_gatediode=header('Gatediode')
transfer_check,integration_transfer,transfer_gates = header('Transfer Curve',"MEDium")
output_check,integration_output,output_gates = header('Output Curve',"SHORt")
gatediode_check,integration_gatediode,_=header('Gatediode',"MEDium")
checkboxes = widgets.HBox([transfer_check,output_check,gatediode_check])
display(checkboxes)
print()
#detais
details= details()
#transfer
Vds_transfer_widgets,Vds_transfer = secondary('VDS',1,0,1,0.1)
Vtg_transfer_widgets,Vtg_transfer = primary('VTG',-7,0.1,7,0.01)
Vbg_transfer_widgets,Vbg_transfer = synchronous('VBG',-50,50,0.01)
transfer_box = widgets.VBox([integration_transfer,Vds_transfer_widgets,Vtg_transfer_widgets,Vbg_transfer_widgets])
Vds_transfer_widgets,Vds_transfer = secondary('VDS',0.05,0.95,1,1e-2)
Vtg_transfer_widgets,Vtg_transfer = primary('VTG',-5,0.01,5,1e-3)
Vbg_transfer_widgets,Vbg_transfer = synchronous('VBG',-15,0.1,15,1e-3)
transfer_box = widgets.VBox([integration_transfer,transfer_gates,Vds_transfer_widgets,Vtg_transfer_widgets,Vbg_transfer_widgets])
#output
Vds_output_widgets,Vds_output = primary('VDS',0,0.01,5,0.1)
Vtg_output_widgets,Vtg_output = secondary('VTG',1,1,5,0.01)
Vbg_output_widgets,Vbg_output = additional_secondary('VBG',10,10,20,0.01)
Vds_output_widgets,Vds_output = primary('VDS',0,0.01,5,1e-2)
Vtg_output_widgets,Vtg_output = secondary('VTG',-5,2,5,1e-3)
Vbg_output_widgets,Vbg_output = additional_secondary('VBG',-15,5,15,1e-3)
output_box = widgets.VBox([integration_output,Vds_output_widgets,Vtg_output_widgets,Vbg_output_widgets])
output_box = widgets.VBox([integration_output,output_gates,Vds_output_widgets,Vtg_output_widgets,Vbg_output_widgets])
#GateDiodde
terminal = widgets.Dropdown(
options = ['VTG','VBG'],
description = 'Selected Gate:',
value ='VTG',
style= {'description_width': 'initial'}
)
Vgs_gatediode_widgets,Vgs_gatediode=primary('VG',-8,0.05,2,0.02)
Vgs_gatediode_widgets,Vgs_gatediode=primary('VG',-5,0.05,5,1e-3)
gatediode_box = widgets.VBox([integration_gatediode,terminal,Vgs_gatediode_widgets])
#the tab widget
children = [details,transfer_box,output_box,gatediode_box]
titles = ["SMU Configuration","Transfer","Output","Gatediode"]
children = [transfer_box,output_box,gatediode_box]
titles = ["Transfer","Output","Gatediode"]
tab = widgets.Tab()
tab.children = children
tab.titles = titles
display(tab)
print()
```
%% Output
%% Cell type:code id:df6835fd-e02c-49cb-aa4e-42fddef69b86 tags:
%% Cell type:code id:686c8934-9c7f-4485-a817-1daa1ffe0168 tags:
``` python
```
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment