diff --git a/hp4155/pn_Diode/diode.py b/hp4155/pn_Diode/diode.py index 5fa800438af6f19b7b5fb0c02eb360dc276fc50f..3e0bb3801d52ce943381f950be76710e36150d0b 100644 --- a/hp4155/pn_Diode/diode.py +++ b/hp4155/pn_Diode/diode.py @@ -8,15 +8,15 @@ from help import * sample = sample_information_interface() 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') output = widgets.Output() display(button,output) all_widgets = [button] add_widgets_to_list(sample,all_widgets) -add_widgets_to_list(measurements_1,all_widgets) -add_widgets_to_list(measurements_2,all_widgets) +add_widgets_to_list(parameters_1,all_widgets) +add_widgets_to_list(parameters_2,all_widgets) device = hp4155a.HP4155a('GPIB0::17::INSTR') @@ -29,11 +29,11 @@ def on_button_clicked(b): valid = check_values(parameters_1) and check_values(parameters_2) if valid == True: - values = measure(parameters_1,parameters_2,area,device) - plot_results(values['VS'],values['ABSNOR']) - filename = f"DIODE_{sample['field'].value}.txt" + df = measure(parameters_1,parameters_2,area,device) + plot_results(df['VS'],df['ABSNOR']) + filename = f"pn_diode_{sample['field'].value}.txt" 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) diff --git a/hp4155/pn_Diode/diode_interface.ipynb b/hp4155/pn_Diode/diode_interface.ipynb index 36b70e047b189b878d62bc8207edf72c41aeefc4..68a389fba486d5c13ec925efac7af9f2d4ce2ea9 100644 --- a/hp4155/pn_Diode/diode_interface.ipynb +++ b/hp4155/pn_Diode/diode_interface.ipynb @@ -9,12 +9,12 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "399e5292f4d947f5b42b6090af57b70d", + "model_id": "0560c5f898da48b5a9865867f6d759be", "version_major": 2, "version_minor": 0 }, "text/plain": [ - "HBox(children=(VBox(children=(Label(value='Sample Information', layout=Layout(height='auto', width='50%'), sty…" + "HBox(children=(VBox(children=(Label(value='Sample Information', layout=Layout(height='auto', width='auto'), st…" ] }, "metadata": {}, @@ -23,12 +23,12 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "7eb1e9d92b4b4801b28229fe7fafc543", + "model_id": "5e698a443fc74b1c8e6abb0aa87200c3", "version_major": 2, "version_minor": 0 }, "text/plain": [ - "GridspecLayout(children=(Label(value='V (SMU3)', layout=Layout(grid_area='widget001', height='auto', width='au…" + "GridspecLayout(children=(Label(value='First Measurement', layout=Layout(grid_area='widget001', height='auto', …" ] }, "metadata": {}, @@ -37,7 +37,21 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "68855659a4894faf99c50de161203cef", + "model_id": "1ec1a195abd94a8191553ab782e2d2af", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "GridspecLayout(children=(Label(value='Second Measurement', layout=Layout(grid_area='widget001', height='auto',…" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "1692c4ee58ed4f658f5b38cd2b4035d4", "version_major": 2, "version_minor": 0 }, @@ -51,7 +65,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "072519b84c6e4ff399c113b531f0e368", + "model_id": "72063b77dec54b4980a4a8d946f78b98", "version_major": 2, "version_minor": 0 }, diff --git a/hp4155/pn_Diode/lib/help.py b/hp4155/pn_Diode/lib/help.py index 238433dfad1cb02af0c41a0805b63398005d4436..7a669abeaf4f09d7d9948456fc8dc97ac7bab7c8 100644 --- a/hp4155/pn_Diode/lib/help.py +++ b/hp4155/pn_Diode/lib/help.py @@ -1,4 +1,7 @@ import matplotlib.pyplot as plt +import matplotlib +matplotlib.use('TkAgg',force = True) + import numpy as np import time from datetime import datetime @@ -103,15 +106,16 @@ def setup(device): device.setup_smu(3,smu3) +def measure(parameters_1,parameters_2,area,device): + #del all user functions + device.del_user_functions() + #define user functions device.user_function("AREA",'CM^2',str(area)) device.user_function("INORM",'A/CM^2','IS/AREA') device.user_function("ABSNOR","A/CM^2","ABS(INORM)") device.user_function("ABSRAW",'A','ABS(IS)') - -def measure(parameters_1,parameters_2,area,device): - var1 = device.var1_dict() var1.update( mode = parameters_1['hyst'].value, @@ -169,7 +173,6 @@ def measure(parameters_1,parameters_2,area,device): ) device.setup_var1(var1) - device.integration_time(parameters_2['integration'].value) if parameters_2['start'].value < parameters_2['stop'].value: @@ -187,10 +190,12 @@ def measure(parameters_1,parameters_2,area,device): device.append_measurement() while device.operation_completed() == False: pass - + device.autoscaling() 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): fig, ax1 = plt.subplots() @@ -208,10 +213,13 @@ def plot_results(x,y): fig.suptitle('Diode Plot', fontweight ="bold") fig.tight_layout() - display(fig) + wm = plt.get_current_fig_manager() + wm.window.state('zoomed') + plt.show(block = True) + #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: with open(file,'w') as f: date = str(datetime.today().replace(microsecond=0)) @@ -234,7 +242,6 @@ def save_to_file(values,sample,parameters_1,parameters_2,file): f.write("\nResults\n") #create pandas dataframe - df = pd.DataFrame(values) #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'}) diff --git a/hp4155/pn_Diode/lib/interface.py b/hp4155/pn_Diode/lib/interface.py index 6105b0de8394e2d42b201f881f8365f45ce553db..2253b9edb5b4282fc419329217c5ea0c8187fdf0 100644 --- a/hp4155/pn_Diode/lib/interface.py +++ b/hp4155/pn_Diode/lib/interface.py @@ -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 #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,2]=widgets.Dropdown(options=['SINGle','DOUBle'],value='SINGle',layout=Layout(height='auto', width='auto'))#mind the gap