-
Notifications
You must be signed in to change notification settings - Fork 0
/
measurement_config.yaml
373 lines (351 loc) · 11.2 KB
/
measurement_config.yaml
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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
# configuration settings not settable in gui
#
# Can make use of an !include tag with a file path to load additional config settings
# from other yaml files. If using the tag, load this file with PyYAML as follows:
#
# import yaml
#
# def yaml_include(loader, node):
# with file(node.value) as f:
# return yaml.load(f)
#
# yaml.add_constructor("!include", yaml_include)
#
# with open("example_config.yaml", "r") as f:
# config = yaml.load(f, Loader=yaml.FullLoader)
# controls automatic gui configuration saving every time the run button is pressed
config_autosave:
enabled: true
# relative paths are relative to the user's home dir
path: runconfigs
# default start-up values for the plot inversion switches
plots:
invert_voltage: true
invert_current: true
mppt:
presets:
- "gd://0.2:0.00005:10" # gd://alpha:min_step:NPLC --> alpha is the learning rate, min_step is the smallest possible voltage step, larger NPLC means slower, more accurate measurements
- "gd://" # gradient descent algorithm with default parameters
- "basic://" # basic tracking algorithm (alternating periods of exploration and dwell at vmpp) with default parameters
- "basic://7:10" # basic://degrees:dwell_time --> larger degrees means wider exploration, larger dwell_time means longer dwell periods
network:
MQTTHOST: "127.0.0.1"
live_data_uris:
- "http://127.0.0.1:8051/" # V vs T plot
- "http://127.0.0.1:8052/" # J vs V plot
- "http://127.0.0.1:8053/" # MPPT plots
- "http://127.0.0.1:8054/" # J vs T plot
- "http://127.0.0.1:8055/" # EQE plot
- "https://duckduckgo.com/" # custom webview tab
visa:
visa_lib: "@py"
# stage and mux controller
controller:
address: "192.168.1.232"
# source-measure unit(s)
# set FLOW CONTROL to XON-XOFF
smu:
enabled: true
address: ASRL/dev/ttyUSB1::INSTR
baud: 57600
# \r\n = <CR+LF>
terminator: "\r"
# if front terminals is false, use rear terminals
front_terminals: false
# if 2 wire is false, use 4 wire
two_wire: false
# system-wide current limit (for protection)
global_current_limit: 0.1
solarsim:
enabled: true
uri: wavelabs://0.0.0.0:3334
recipes: ["tandemrecipe", "AM1.5G_60min", "AM1.5G"]
# spectral_calibration: !include example_solarsim_cal.yaml
# lock-in amplifier
lia:
enabled: true
address: ASRL/dev/ttyUSB0::INSTR
terminator: "\r"
baud: 9600
output_interface: 0
auto_gain_method: instr # user or instr
ratio: true # true to use AUX1 input signal to account for lamp output drift
monochromator:
enabled: true
address: ASRL/dev/ttyUSB2::INSTR
terminator: "\r"
baud: 9600
grating_change_wls: [1200]
filter_change_wls: [370, 640, 715, 765]
# LED power supply unit (Rigol DP832)
psu:
enabled: true
address: TCPIP0::192.168.1.235::INSTR
#address: null
terminator: "\r"
baud: 9600
ch1_voltage: 3.9 # 505nm LED (30V channel limit)
ch2_voltage: 1.0 # nothing connected (30V channel limit)
ch3_voltage: 1.9 # 870 nm LED (5V channel limit)
ch1_ocp : 0.7 # 505nm LED (3A channel limit)
ch2_ocp : 0.1 # nothing connected (3A channel limit)
ch3_ocp : 0.7 # 870 nm LED (3A channel limit)
stage:
enabled: true
# stage connection URI
# tells the system how to talk to the stage.
# format = controller-type://list,of,expected,travel,lengths,in,mm/steps_per_mm/list of lists of keepout zones per axis/extra_info
# typical travel lengths might be X = 1000mm (stage length) - 125 (gantry width) = 875 and Y = 500mm (stage length) - 125 (gantry width) = 375
# typical steps per mm might be 256[uSteps/step] (microstepping driver property) * 200[steps/rev] (motor property) / 8[mm/rev] (leadscrew property) = 6400 [uSteps/mm]
# the keepout zone list is a list (with of length matching the expected travel lengths), each item in the list is a list of length two specifying the regions along an axis that are not allowed
# for example: [[],[62.5,Infinity]] means all values in X are okay, but anyplace beyond 62.5mm in Y is invalid
# [[],[]] means no limits for either axis
# the final field contains extra info for controlling the stage, for example "otter" tells the system to use a special homing procedure specific to one hardware setup
uri: us://875,375/6400/[[],[0,62]]/otter
# approx mm/s (used for timing calculations only, does not actually set speed)
speed: 29
# defines the center positions of the substrate array for the acutal measurement routines (used in calculating the position to move to for each pixel)
experiment_positions:
solarsim: [628, 176]
eqe: [145.325, 127.25]
# list of locations the gui should show, just to make it easier to go to some predefined locations (experiment_positions will automatically be shown in the list)
custom_positions:
post-home: [550, 337.644]
load/unload: [100, 350]
EQE Cal PD: [264.0, 195.0]
# controls for how "smart mode" works
smart_mode:
enabled: false
# when using smart mode, start scan 1 and end scan 2 this many percent higher than Voc
# bigger numbers here give better fitting for series resistance at an incresed danger of pushing too much current through the device
percent_beyond_voc: 25
# when using smart mode, end scan 1 and start scan 2 this much into reverse bias
# bigger numbers here give better fitting for shunt resistance at an incresed danger of pulling too much current from the device
# this is an absolute number whose sign is set depending on the sign of Voc
voltage_beyond_isc: 0.1
substrates:
# list of number of substrates along each available axis e.g. x direction, y direction
number: [4, 5]
# spacing in mm between substrate centers along each available axis
spacing: [-35, 29]
# this section contains info that describes the device layouts that may be used in the system
# the first one listed here is taken to be the default
layouts:
# otter's default device layout definition
6px_1in:
# enabled means the layout is something that can be selected in the GUI
enabled: true
# which of the the (changeable) PCB adapter boards are in use for this layout
pcb_name: 6px_1in_pcb
# list of pixel numbers that should be enabled for this layout
pixels: [1, 2, 3, 4, 5, 6]
# List of position vectors of each pixel in use on each substrate.
# Positions are given in mm relative to the substrate center.
# If the positions are multi-axis, the positions of each pixel in the list are given as
# vectors, e.g. for an x,y stage the list would be formatted as:
# [[pixel1_x, pixel1_y], [pixel2_x, pixel2_y], ...]
# There should be a pixel position vector for every force pin on the adpater pcb, even
# for pixels that are unused. Unused pixels can be set to [0, ...].
positions: [[-2.925, -5.97], [-2.925, 0], [-2.925, 5.97], [2.925, -5.97], [2.925, 0], [2.925, 5.97]]
# list of areas in cm^2 of each pixel on a substrate
areas: [0.09, 0.09, 0.09, 0.09, 0.09, 0.09]
# PCB populated with 6x Vishay BPW34 Silicon PIN Photodiodes
PD PCB:
enabled: true
pcb_name: 6px_1in_pcb
pixels: [1, 2, 3, 4, 5, 6]
positions: [[-2.925, -5.97], [-2.925, 0], [-2.925, 5.97], [2.925, -5.97], [2.925, 0], [2.925, 5.97]]
areas: [0.075, 0.075, 0.075, 0.075, 0.075, 0.075]
# PCB populated with 1x PT1000 RTD (temperature sensor)
RTD PCB:
enabled: true
pcb_name: 6px_1in_pcb
pixels: [2]
positions: [[0, 0]]
areas: [0.0]
largearea:
enabled: true
pcb_name: 6px_1in_pcb
pixels: [1]
positions: [[0,0]]
areas: [0.95]
Si:
enabled: true
pcb_name: 6px_1in_pcb
pixels: [1]
positions: [[0,0]]
areas: [1.0]
Empty:
enabled: true
pcb_name: 6px_1in_pcb
pixels: []
positions: []
areas: []
# this section describes the (changeable) PCB that holds the gold spring loaded contact pins
adapters:
6px_1in_pcb:
# number of available pixels per pcb
pcb_contact_pads: 6 # TODO: get rid of this
# pcb adapter board idn resistor in Ohms
pcb_resistor: 0
# miscellaneous reference data
reference:
# device calibration data
calibration:
eqe:
eqe:
- 0.168253071
- 0.160128333
- 0.154457432
- 0.167393684
- 0.194001635
- 0.22611225
- 0.25908064
- 0.290479107
- 0.320706105
- 0.347300284
- 0.3727125
- 0.394319022
- 0.415006117
- 0.43483125
- 0.453847194
- 0.4721025
- 0.489641912
- 0.506506731
- 0.522735142
- 0.5383625
- 0.551162727
- 0.56572433
- 0.579775
- 0.59548319
- 0.608553178
- 0.6211875
- 0.635444262
- 0.649241129
- 0.6626
- 0.675541406
- 0.688084615
- 0.702130114
- 0.713902052
- 0.725327757
- 0.738222826
- 0.748974643
- 0.761173415
- 0.771307813
- 0.781164555
- 0.790754899
- 0.8000895
- 0.80754375
- 0.816417857
- 0.825064423
- 0.831919462
- 0.838603125
- 0.845121759
- 0.851481402
- 0.857687801
- 0.862267411
- 0.866739265
- 0.871107122
- 0.875374569
- 0.878133239
- 0.880829916
- 0.883466667
- 0.886045467
- 0.887217799
- 0.888364919
- 0.888165957
- 0.886663421
- 0.885192188
- 0.881189691
- 0.876001148
- 0.865897727
- 0.848542125
- 0.825379827
- 0.7868375
- 0.732156917
- 0.660609014
- 0.570309286
- 0.467648703
- 0.380840187
- 0.312894444
- 0.254173968
- 0.202168295
wls:
- 350.0
- 360.0
- 370.0
- 380.0
- 390.0
- 400.0
- 410.0
- 420.0
- 430.0
- 440.0
- 450.0
- 460.0
- 470.0
- 480.0
- 490.0
- 500.0
- 510.0
- 520.0
- 530.0
- 540.0
- 550.0
- 560.0
- 570.0
- 580.0
- 590.0
- 600.0
- 610.0
- 620.0
- 630.0
- 640.0
- 650.0
- 660.0
- 670.0
- 680.0
- 690.0
- 700.0
- 710.0
- 720.0
- 730.0
- 740.0
- 750.0
- 760.0
- 770.0
- 780.0
- 790.0
- 800.0
- 810.0
- 820.0
- 830.0
- 840.0
- 850.0
- 860.0
- 870.0
- 880.0
- 890.0
- 900.0
- 910.0
- 920.0
- 930.0
- 940.0
- 950.0
- 960.0
- 970.0
- 980.0
- 990.0
- 1000.0
- 1010.0
- 1020.0
- 1030.0
- 1040.0
- 1050.0
- 1060.0
- 1070.0
- 1080.0
- 1090.0
- 1100.0
# spectral irradiance data
spectra: null