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

pn diode measurement

parent a62c408c
No related branches found
No related tags found
No related merge requests found
...@@ -8,15 +8,15 @@ from help import * ...@@ -8,15 +8,15 @@ from help import *
sample = sample_information_interface() sample = sample_information_interface()
parameters_1 = parameters_interface(0,0.02,10,"First Measurement") parameters_1 = parameters_interface(0,0.02,10,"First Measurement")
parameters_2 = parameters_interface(0,0.5,100,"Second Measurement") parameters_2 = parameters_interface(0,-0.5,-100,"Second Measurement")
button = widgets.Button(description ='Start Measurement') button = widgets.Button(description ='Start Measurement')
output = widgets.Output() output = widgets.Output()
display(button,output) display(button,output)
all_widgets = [button] all_widgets = [button]
add_widgets_to_list(sample,all_widgets) add_widgets_to_list(sample,all_widgets)
add_widgets_to_list(measurements_1,all_widgets) add_widgets_to_list(parameters_1,all_widgets)
add_widgets_to_list(measurements_2,all_widgets) add_widgets_to_list(parameters_2,all_widgets)
device = hp4155a.HP4155a('GPIB0::17::INSTR') device = hp4155a.HP4155a('GPIB0::17::INSTR')
...@@ -29,11 +29,11 @@ def on_button_clicked(b): ...@@ -29,11 +29,11 @@ def on_button_clicked(b):
valid = check_values(parameters_1) and check_values(parameters_2) valid = check_values(parameters_1) and check_values(parameters_2)
if valid == True: if valid == True:
values = measure(parameters_1,parameters_2,area,device) df = measure(parameters_1,parameters_2,area,device)
plot_results(values['VS'],values['ABSNOR']) plot_results(df['VS'],df['ABSNOR'])
filename = f"DIODE_{sample['field'].value}.txt" filename = f"pn_diode_{sample['field'].value}.txt"
file = create_file(filename) file = create_file(filename)
save_to_file(values,sample,parameters_1,parameters_2,file) save_to_file(df,sample,parameters_1,parameters_2,file)
change_state(all_widgets) change_state(all_widgets)
......
%% Cell type:code id:1b607685-438c-466e-9671-140ae6c8d9f9 tags: %% Cell type:code id:1b607685-438c-466e-9671-140ae6c8d9f9 tags:
``` python ``` python
%run diode.py %run diode.py
``` ```
%% Output %% Output
%% Cell type:code id:5bc60dda-f423-4cdc-bc39-3404a8cfa1df tags: %% Cell type:code id:5bc60dda-f423-4cdc-bc39-3404a8cfa1df tags:
``` python ``` python
``` ```
......
import matplotlib.pyplot as plt import matplotlib.pyplot as plt
import matplotlib
matplotlib.use('TkAgg',force = True)
import numpy as np import numpy as np
import time import time
from datetime import datetime from datetime import datetime
...@@ -103,15 +106,16 @@ def setup(device): ...@@ -103,15 +106,16 @@ def setup(device):
device.setup_smu(3,smu3) device.setup_smu(3,smu3)
def measure(parameters_1,parameters_2,area,device):
#del all user functions
device.del_user_functions()
#define user functions #define user functions
device.user_function("AREA",'CM^2',str(area)) device.user_function("AREA",'CM^2',str(area))
device.user_function("INORM",'A/CM^2','IS/AREA') device.user_function("INORM",'A/CM^2','IS/AREA')
device.user_function("ABSNOR","A/CM^2","ABS(INORM)") device.user_function("ABSNOR","A/CM^2","ABS(INORM)")
device.user_function("ABSRAW",'A','ABS(IS)') device.user_function("ABSRAW",'A','ABS(IS)')
def measure(parameters_1,parameters_2,area,device):
var1 = device.var1_dict() var1 = device.var1_dict()
var1.update( var1.update(
mode = parameters_1['hyst'].value, mode = parameters_1['hyst'].value,
...@@ -169,7 +173,6 @@ def measure(parameters_1,parameters_2,area,device): ...@@ -169,7 +173,6 @@ def measure(parameters_1,parameters_2,area,device):
) )
device.setup_var1(var1) device.setup_var1(var1)
device.integration_time(parameters_2['integration'].value) device.integration_time(parameters_2['integration'].value)
if parameters_2['start'].value < parameters_2['stop'].value: if parameters_2['start'].value < parameters_2['stop'].value:
...@@ -187,10 +190,12 @@ def measure(parameters_1,parameters_2,area,device): ...@@ -187,10 +190,12 @@ def measure(parameters_1,parameters_2,area,device):
device.append_measurement() device.append_measurement()
while device.operation_completed() == False: while device.operation_completed() == False:
pass pass
device.autoscaling()
values = dict([(variable,device.return_values(variable)) for variable in variables_list]) values = dict([(variable,device.return_values(variable)) for variable in variables_list])
return values df = pd.DataFrame(values)
df = df.sort_values(by='VS')
return df
def plot_results(x,y): def plot_results(x,y):
fig, ax1 = plt.subplots() fig, ax1 = plt.subplots()
...@@ -208,10 +213,13 @@ def plot_results(x,y): ...@@ -208,10 +213,13 @@ def plot_results(x,y):
fig.suptitle('Diode Plot', fontweight ="bold") fig.suptitle('Diode Plot', fontweight ="bold")
fig.tight_layout() fig.tight_layout()
display(fig) wm = plt.get_current_fig_manager()
wm.window.state('zoomed')
plt.show(block = True)
#also for file #also for file
def save_to_file(values,sample,parameters_1,parameters_2,file): def save_to_file(df,sample,parameters_1,parameters_2,file):
if file != None: if file != None:
with open(file,'w') as f: with open(file,'w') as f:
date = str(datetime.today().replace(microsecond=0)) date = str(datetime.today().replace(microsecond=0))
...@@ -234,7 +242,6 @@ def save_to_file(values,sample,parameters_1,parameters_2,file): ...@@ -234,7 +242,6 @@ def save_to_file(values,sample,parameters_1,parameters_2,file):
f.write("\nResults\n") f.write("\nResults\n")
#create pandas dataframe #create pandas dataframe
df = pd.DataFrame(values)
#df =df.drop(columns=['ABSNOR']) #df =df.drop(columns=['ABSNOR'])
df =df.rename(columns={'VS':'VS/V','IS':'IRAW/A','ABSRAW':'ABSRAW/A','INORM':'INORM/A/CM^2','ABSNOR':'ABSNOR/A/CM^2'}) df =df.rename(columns={'VS':'VS/V','IS':'IRAW/A','ABSRAW':'ABSRAW/A','INORM':'INORM/A/CM^2','ABSNOR':'ABSNOR/A/CM^2'})
......
...@@ -29,7 +29,7 @@ def parameters_interface(start,step,stop,title): ...@@ -29,7 +29,7 @@ def parameters_interface(start,step,stop,title):
grid[3,2] =widgets.Label("Hysterisis",layout=Layout(height='auto', width='auto'))#mind the gap grid[3,2] =widgets.Label("Hysterisis",layout=Layout(height='auto', width='auto'))#mind the gap
#fourth line #fourth line
grid[4,0]=widgets.BoundedFloatText(value=0.10,min=-0.1,max=0.1,step=0.01,layout=Layout(height='auto', width='auto')) grid[4,0]=widgets.BoundedFloatText(value=0.01,min=-0.1,max=0.1,step=0.01,layout=Layout(height='auto', width='auto'))
grid[4,1]=widgets.Dropdown(options=["SHORt","MEDium","LONG"],value="MEDium",style =style,layout=Layout(height='auto', width='auto')) grid[4,1]=widgets.Dropdown(options=["SHORt","MEDium","LONG"],value="MEDium",style =style,layout=Layout(height='auto', width='auto'))
grid[4,2]=widgets.Dropdown(options=['SINGle','DOUBle'],value='SINGle',layout=Layout(height='auto', width='auto'))#mind the gap grid[4,2]=widgets.Dropdown(options=['SINGle','DOUBle'],value='SINGle',layout=Layout(height='auto', width='auto'))#mind the gap
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment