forked from johnrollinson/iv_characterization
-
Notifications
You must be signed in to change notification settings - Fork 0
/
main_ivsweep.py
73 lines (60 loc) · 2.38 KB
/
main_ivsweep.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
import logging
log = logging.getLogger(__name__)
log.addHandler(logging.NullHandler())
import sys
import os
from time import sleep, strftime
from procedures import IVSweepProcedure
from pymeasure.experiment import Results, Worker
from pymeasure.display.Qt import QtGui
from pymeasure.display.windows import ManagedWindow
from pymeasure.experiment.results import unique_filename
class MainWindow(ManagedWindow):
def __init__(self):
super(MainWindow, self).__init__(
procedure_class=IVSweepProcedure,
inputs=['dev_num', 'pd_type', 'pd_size', 'start', 'stop', 'step', 'delay', 'polarity'],
displays=['test_num', 'start', 'stop', 'step', 'delay', 'polarity'],
x_axis='Reverse Voltage',
y_axis='Reverse Current',
sequencer=True,
sequencer_inputs=['test_num'],
directory_input=True,
)
self.setWindowTitle('Reverse Bias IV Sweep')
def queue(self, *, procedure=None):
directory = os.getcwd() + '/' + self.directory
if procedure is None:
procedure = self.make_procedure()
prefix = 'DUT{:s}_{:s}_{:s}'.format(
str(procedure.dev_num),
procedure.pd_type,
procedure.pd_size
)
# suffix = strftime("%Y%m%d_%H%M%S")
filename = unique_filename(
directory,
# prefix=prefix,
# suffix=suffix,
datetimeformat="%Y%m%d_%H%M%S"
)
results = Results(procedure, filename)
experiment = self.new_experiment(results)
self.manager.queue(experiment)
def setup_plot(self, plot):
# use logarithmic x-axis (e.g. for frequency sweeps)
plot.setLogMode(y=True)
plot.showGrid(x=True, y=True)
if __name__ == "__main__":
# Test setup parameters ###################################################################
device_name = 'DUT7' # A unique device identifier
pd_type = 'APD' # Either APD or PIN
pd_len = '10um' # 10um, 100um, or 500um
cover = 'nocover' # Either M1cover or nocover
special = 'test1' # Any other comments
current_compliance = 1e-6 # Max current limit
###########################################################################################
app = QtGui.QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())