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

CV programm flow test (calibration fails)

parent bd5fa929
No related branches found
No related tags found
No related merge requests found
...@@ -4,6 +4,7 @@ import matplotlib.pyplot as plt ...@@ -4,6 +4,7 @@ import matplotlib.pyplot as plt
from help import * from help import *
import time import time
from IPython.display import clear_output from IPython.display import clear_output
import numpy as np
#connect to device #connect to device
...@@ -21,12 +22,12 @@ out = widgets.Output() ...@@ -21,12 +22,12 @@ out = widgets.Output()
hbox1 = widgets.HBox([sample,control_panel]) hbox1 = widgets.HBox([sample,control_panel])
display(hbox1) display(hbox1)
hbox2=widgets.HBox([messparameter,sweep_parameter]) hbox2=widgets.HBox([messparameter,sweep_parameter])
display(hbox2) display(hbox2,out)
display(out)
#add widgets to a list for disabling them #add widgets to a list for disabling them
all_widgets = [measure,calibrate,clear_graphs] all_widgets = [measure,clear_graphs]
add_widgets_to_list(view,all_widgets) add_widgets_to_list(view,all_widgets)
add_widgets_to_list(sweep_parameter_dict,all_widgets) add_widgets_to_list(sweep_parameter_dict,all_widgets)
add_widgets_to_list(messparameter_dict,all_widgets) add_widgets_to_list(messparameter_dict,all_widgets)
...@@ -37,12 +38,9 @@ def on_measure_clicked(b): ...@@ -37,12 +38,9 @@ def on_measure_clicked(b):
clear_output() clear_output()
change_state(all_widgets) change_state(all_widgets)
if check_values(messparameter_dict,sweep_parameter_dict) == False: if check_values(messparameter_dict,sweep_parameter_dict) == False:
information('Invalid Voltage Settings or Observation of non-existent data points!') information_box('Invalid Voltage Settings or Observation of non-existent data points!')
change_state(all_widgets) change_state(all_widgets)
device.write('reset') return
# perform an open calibration
device.inst.write("RQS255")
device.write('imp_G_B') device.write('imp_G_B')
device.write('bias_off') device.write('bias_off')
...@@ -52,11 +50,11 @@ def on_measure_clicked(b): ...@@ -52,11 +50,11 @@ def on_measure_clicked(b):
device.set_parameter('set_stop',sweep_parameter_dict['stop'].value) device.set_parameter('set_stop',sweep_parameter_dict['stop'].value)
device.set_parameter('set_nop',sweep_parameter_dict['nop'].value) device.set_parameter('set_nop',sweep_parameter_dict['nop'].value)
if sweep_parameter['type']=='Linear': if sweep_parameter_dict['type'].value=='Linear':
device.write('sweep_lin') device.write('sweep_lin')
else:# log else:# log
device.write('sweep_log') device.write('sweep_log')
if sweep_parameter['direction']=='Up': if sweep_parameter_dict['direction'].value=='Up':
device.write('sweep_up') device.write('sweep_up')
else: else:
device.write('sweep_down') device.write('sweep_down')
...@@ -71,10 +69,14 @@ def on_measure_clicked(b): ...@@ -71,10 +69,14 @@ def on_measure_clicked(b):
# Now that we have set the frequency values ask user for calibration # Now that we have set the frequency values ask user for calibration
answer = ask_for_calibration() answer = ask_for_calibration()
if answer == True : #perform an open calibration if answer == True : #perform an open calibration
device.write('open_cal_on') #data saved in registers OG and OB
device.write('start_open_cal') device.write('start_open_cal')
device.wait() device.wait()
device.write('open_cal_on') #data saved in registers OG and OB
print(device.read_register('reg_open_offset_G'))
print(device.read_register('reg_open_offset_B'))
print(device.read_register('reg_open_offset_G'))
print(device.read_register('reg_open_offset_B'))
# open the file dialog # open the file dialog
default_filename = f"{sample_dict['wafer'].value}_{sample_dict['sample'].value}_{sample_dict['field'].value}_CV.txt" default_filename = f"{sample_dict['wafer'].value}_{sample_dict['sample'].value}_{sample_dict['field'].value}_CV.txt"
file = save_file(default_filename) file = save_file(default_filename)
...@@ -89,7 +91,7 @@ def on_measure_clicked(b): ...@@ -89,7 +91,7 @@ def on_measure_clicked(b):
G = [] G = []
B = [] B = []
num_of_points = abs(messparameter_dict["stop"].value-messparameter_dict["start"].value)/abs(messparameter_dict["step"].value) + 1 num_of_points =int(abs(messparameter_dict["stop"].value-messparameter_dict["start"].value)/abs(messparameter_dict["step"].value) + 1)
biases = np.linspace(messparameter_dict["start"].value,messparameter_dict["stop"].value,num_of_points,endpoint = True) biases = np.linspace(messparameter_dict["start"].value,messparameter_dict["stop"].value,num_of_points,endpoint = True)
...@@ -125,7 +127,7 @@ def on_measure_clicked(b): ...@@ -125,7 +127,7 @@ def on_measure_clicked(b):
fig.tight_layout() fig.tight_layout()
display(fig) display(fig)
if messparameter_dict["hysteris"].value == True: if messparameter_dict["hysterisis"].value == True:
reversed_biases = reversed_array(biases) reversed_biases = reversed_array(biases)
for bias in reversed_biases: for bias in reversed_biases:
device.set_parameter('set_bias', bias) #set the bias device.set_parameter('set_bias', bias) #set the bias
...@@ -159,8 +161,9 @@ def on_measure_clicked(b): ...@@ -159,8 +161,9 @@ def on_measure_clicked(b):
fig.tight_layout() fig.tight_layout()
display(fig) display(fig)
device.write('bias_off')
information_box("measurement finished")
change_state(all_widgets) change_state(all_widgets)
measure.on_click(on_measure_clicked) measure.on_click(on_measure_clicked)
\ No newline at end of file
%% Cell type:code id:912606ea-a3b6-43e8-94c5-8f1fe5281375 tags:
``` python
%run cv.py
```
%% Output
%% Cell type:code id:af882f36-6cbc-40bd-80f5-c8bedba0b73d tags:
``` python
```
...@@ -2,6 +2,7 @@ import ipywidgets as widgets ...@@ -2,6 +2,7 @@ import ipywidgets as widgets
import tkinter as tk import tkinter as tk
from tkinter import filedialog from tkinter import filedialog
import tkinter.messagebox import tkinter.messagebox
import numpy as np
def add_widgets_to_list(source_dictionary,target_list): def add_widgets_to_list(source_dictionary,target_list):
...@@ -55,7 +56,7 @@ def information_box(information): ...@@ -55,7 +56,7 @@ def information_box(information):
def check_values(voltage:dict,freq:dict): def check_values(voltage:dict,freq:dict):
if abs(voltage["step"].value) > abs(voltage["stop"].value-voltage["start"].value) or voltage["step"].value == 0: if abs(voltage["step"].value) > abs(voltage["stop"].value-voltage["start"].value) or abs(voltage["step"].value)<0.01:
return False return False
#Invert Polarity if nesaccary #Invert Polarity if nesaccary
...@@ -74,7 +75,7 @@ def check_values(voltage:dict,freq:dict): ...@@ -74,7 +75,7 @@ def check_values(voltage:dict,freq:dict):
if voltage["v_point"].value > voltage_points and voltage["hysterisis"].value == False: if voltage["v_point"].value > voltage_points and voltage["hysterisis"].value == False:
return False return False
elif voltage["v_point"].value > 2*voltage_points and voltage["hysterisis"].value == True: elif voltage["v_point"].value > 2*voltage_points and voltage["hysterisis"].value == True:
return False: return False
# prove that we check a valld frequency point # prove that we check a valld frequency point
if voltage["f_point"].value > freq['nop'].value: if voltage["f_point"].value > freq['nop'].value:
...@@ -83,6 +84,7 @@ def check_values(voltage:dict,freq:dict): ...@@ -83,6 +84,7 @@ def check_values(voltage:dict,freq:dict):
# create array for hysteris and remove the last element # create array for hysteris and remove the last element
def reversed_array(arr): def reversed_array(arr):
arr = arr[np.arange(arr.size - 1)] arr = list(arr)
reversed_arr = arr[::-1] arr.pop()
return reversed_array arr.reverse()
\ No newline at end of file return np.array(arr)
\ No newline at end of file
...@@ -43,7 +43,7 @@ def messparameter(): ...@@ -43,7 +43,7 @@ def messparameter():
messparameter[2,0] = widgets.Label('V_stop (V)',layout=Layout(height='auto', width = width)) messparameter[2,0] = widgets.Label('V_stop (V)',layout=Layout(height='auto', width = width))
messparameter[3,0] = widgets.BoundedFloatText(value = -3,min =-40 ,max = 40,step = 1,layout=Layout(height='auto', width = width)) #stop value messparameter[3,0] = widgets.BoundedFloatText(value = -3,min =-40 ,max = 40,step = 1,layout=Layout(height='auto', width = width)) #stop value
messparameter[4,0] = widgets.Label('V_step (V)',layout=Layout(height='auto', width = width)) messparameter[4,0] = widgets.Label('V_step (V)',layout=Layout(height='auto', width = width))
messparameter[5,0] = widgets.BoundedFloatText(value = 0.05,min =0.01 ,max = 80,step = 0.01,layout=Layout(height='auto', width = width)) #step value messparameter[5,0] = widgets.BoundedFloatText(value = 0.1,min = -80 ,max = 80,step = 0.01,layout=Layout(height='auto', width = width)) #step value
messparameter[6,0] = widgets.Label('Wait in Voltage Point (s)',layout=Layout(height='auto', width = width)) messparameter[6,0] = widgets.Label('Wait in Voltage Point (s)',layout=Layout(height='auto', width = width))
messparameter[7,0] = widgets.BoundedFloatText(value = 0,min = 0 ,max = sys.float_info.max,step = 1,layout=Layout(height='auto', width = width)) #sleep value messparameter[7,0] = widgets.BoundedFloatText(value = 0,min = 0 ,max = sys.float_info.max,step = 1,layout=Layout(height='auto', width = width)) #sleep value
messparameter[8,0] = widgets.Label('Radius of The Test Stucture(um)',layout=Layout(height='auto', width = width)) messparameter[8,0] = widgets.Label('Radius of The Test Stucture(um)',layout=Layout(height='auto', width = width))
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment