# These were once in prsctrl_interactive but are not needed right now
[docs]
def measure_InP():
lockin_params = {
"time_constant_s": 3,
"filter_slope": 12,
"sensitivity_volt": 2e-3,
# "frequency_Hz": 333,
}
measurement_params = {
# "wavelengths_nm": np.arange(840, 1040.1, 0.1)
"wavelengths_nm": list(range(550, 1100, 1))
# "wavelengths_nm": list(range(410, 800, 3)) + list(range(800, 1030, 1)) + list(range(1030, 1100, 2)),
}
measurement_params["wavelengths_nm"].reverse()
print(f"Using wavelengths: {measurement_params['wavelengths_nm']}")
time_est = 1.15 * get_time_estimate(lockin_params=lockin_params, measurement_params=measurement_params, offset_with_laser_only=True, extra_wait_time_s=10)
print(f"Estimated time: {duration_to_string(time_est)}")
laser.on()
laser.set_power_mW(70)
measure_spectrum(lockin_params=lockin_params, measurement_params=measurement_params, name=f"InP")
[docs]
def sweep_ref():
wavelenghts = [500, 535, 565, 580, 700]
frequencies = [451] + list(range(501, 1502, 40)) + list(range(1551, 5002, 160))
print(frequencies)
lockin_params = {
"time_constant_s": 10,
}
measurement_params = {
"wavelengths_nm": wavelenghts,
}
time_est = 1.15 * len(frequencies) * get_time_estimate(lockin_params=lockin_params, measurement_params=measurement_params, offset_with_laser_only=True, extra_wait_time_s=10)
print(f"Estimated time: {duration_to_string(time_est)}")
t_start = time.time()
for f in frequencies:
dirname = f"2025-05-12_f-scan_f={f}_Hz"
lockin_params["frequency_Hz"] = f
measure_spectrum(lockin_params=lockin_params, measurement_params=measurement_params, dirname=dirname, name=f"Frequency scan $f = {f}$ Hz")
plt.close('all')
duration = time.time() - t_start
print(f"Measurement took {duration_to_string(duration)} (estimate was {duration_to_string(time_est)})")
[docs]
def sweep_filter():
wavelenghts = [500, 535, 565, 580, 700]
filters = [6, 12, 18, 24]
lockin_params = {
"time_constant_s": 10,
"frequency_Hz": 333,
}
measurement_params = {
"wavelengths_nm": wavelenghts,
}
time_est = 1.15 * len(filters) * get_time_estimate(lockin_params=lockin_params, measurement_params=measurement_params, offset_with_laser_only=True, extra_wait_time_s=10)
print(f"Estimated time: {duration_to_string(time_est)}")
t_start = time.time()
for f in filters:
dirname = f"2025-05-09_filter-scan_slope={f}_dB_Oct"
lockin_params["filter_slope"] = f
measure_spectrum(lockin_params=lockin_params, measurement_params=measurement_params, dirname=dirname, name=f"Filter scan $f = {f}$ dB/Oct")
plt.close('all')
duration = time.time() - t_start
print(f"Measurement took {duration_to_string(duration)} (estimate was {duration_to_string(time_est)})")
[docs]
def sweep_time_constant():
wavelenghts = [500, 535, 565, 580, 700]
time_constants = [100e-3, 300e-3, 1, 3, 10]
print(time_constants)
lockin_settings = {
"frequency_Hz": 333
}
measurement_params = {
"wavelengths_nm": wavelenghts,
# "energies_eV": wavelenghts,
}
all_lockin_settings = []
time_est = 0
for t in time_constants:
all_lockin_settings.append(lockin_settings | {"time_constant_s": t})
time_est += get_time_estimate(lockin_settings=all_lockin_settings[-1], measurement_params=measurement_params, offset_with_laser_only=True, extra_wait_time_s=10)
time_est *= 1.15
print(f"Estimated time: {duration_to_string(time_est)}")
t_start = time.time()
for i, lp in enumerate(all_lockin_settings):
t = lp["time_constant_s"]
dirname = f"2025-05-13_t-scan_t={t}_s"
measure_spectrum(ref_lockin_settings=lp, measurement_settings=measurement_params, dirname=dirname, name=f"Time constant scan $t = {t}$ s", extra_wait_time_s=10)
plt.close('all')
duration = time.time() - t_start
log.info(f"Measurement took {duration_to_string(duration)} (estimate was {duration_to_string(time_est)})")
[docs]
def sweep_power():
target_laser_power_densities = np.array([0.5, 1, 4, 7, 10])
set_laser_powers = np.round(target_power_mWcm2_to_laser_power_mW(target_laser_power_densities), 2)
set_led_currents = np.array([0.036, 0.053, 0.150, 0.247, 0.355])
print("Target laser powers (mW/cm^2):", [f"{v:.3f}" for v in target_laser_power_densities])
print("Setting laser powers (mW): ", [f"{v:.3f}" for v in set_laser_powers])
print("Setting LED currents (A): ", [f"{v:.3f}" for v in set_led_currents])
measurement_params = {
"wavelengths_nm": list(range(410, 721, 2)),
"amplifier_gain": 7,
"monochromator_bandwidth_nm": 1.0,
}
lockin_settings = {
"time_constant_s": 3,
"filter_slope": 12,
"sensitivity_volt": 500e-6,
}
etime = 5
time_est = 2 * len(target_laser_power_densities) * get_time_estimate(lockin_settings=lockin_settings, measurement_params=measurement_params, offset_with_laser_only=True, extra_wait_time_s=etime)
print(f"Estimated time: {duration_to_string(time_est)}")
if lockin is None:
print("Not starting measurement since lock-in is None")
return
t_start = time.time()
led.off()
laser.on()
lockin_settings["sensitivity_volt"] = 2e-3
for i, p_set in enumerate(set_laser_powers):
dirname = f"2025-05-23_O-Ta3N5_Laser_P={target_laser_power_densities[i]}_mW_cm2"
metadata = {
"pump_power_density_sample_mW_cm2": target_laser_power_densities[i],
"pump_power_laser_mW": set_laser_powers[i],
}
laser.set_power_mW(p_set)
measure_spectrum(metadata=metadata, ref_lockin_settings=lockin_settings, measurement_settings=measurement_params, dirname=dirname, name=f"Pump Power Scan Laser $P = {target_laser_power_densities[i]}$ mW/cm$^2$", extra_wait_time_s=etime)
plt.close('all')
laser.off()
led.set_mode("TTL")
led.on()
for i, p_set in enumerate(set_led_currents):
dirname = f"2025-05-23_O-Ta3N5_LED_P={target_laser_power_densities[i]}_mW_cm2"
metadata = {
"pump_power_density_sample_mW_cm2": target_laser_power_densities[i],
"pump_power_led_current_A": set_led_currents[i],
}
led.set_ttl(p_set)
measure_spectrum(metadata=metadata, ref_lockin_settings=lockin_settings, measurement_settings=measurement_params, dirname=dirname, name=f"Pump Power Scan LED $P = {target_laser_power_densities[i]}$ mW/cm$^2$", extra_wait_time_s=etime)
plt.close('all')
duration = time.time() - t_start
log.info(f"Measurement took {duration_to_string(duration)} (estimate was {duration_to_string(time_est)})")
[docs]
def measure_TaN_led():
# single measurement version 0.5
lockin_settings = {
# "time_constant_s": 2 if "7260" in str(lockin) else 3,
"time_constant_s": 1,
"filter_slope": 12,
"sensitivity_volt": 500e-6,
}
measurement_params = {
"wavelengths_nm": list(range(410, 721, 1)),
# "wavelengths_nm": list(range(500, 550, 1)),
"amplifier_gain": 7,
"monochromator_bandwidth_nm": 1.0,
"pump_source": "led",
"pump_power_mW/cm^2": 5.00,
}
measurement_params["led_current_A"] = target_probe_power_mWcm2_to_led_current_A(measurement_params["pump_power_mW/cm^2"])
print(f"Using wavelengths: {get_wavelengths_from_measurement_settings(measurement_params)}")
do_offset = True
etime = 5
time_est = get_time_estimate(lockin_settings=lockin_settings, measurement_params=measurement_params, offset_with_laser_only=do_offset, extra_wait_time_s=etime)
print(f"Estimated time: {duration_to_string(time_est)}")
if ref_lockin is None:
print("Not starting measurement since lock-in is None")
return
t_start = time.time()
laser.off()
led.set_mode("TTL")
led_current_A = 0.165
led.set_ttl(led_current_A)
metadata = {"led": led.get_led_name(), "led_current_A": led_current_A}
aux = "Aux In 4"
try: # import may fail
if isinstance(ref_lockin, mod_lock_in.impl.model7260.Model7260):
aux = "Aux In 1"
except: pass
measure_spectrum(ref_lockin_settings=lockin_settings, common_measurement_settings=measurement_params, name=f"O-Ta3O5-Transmission-LED", metadata=metadata, offset_with_laser_only=do_offset, extra_wait_time_s=etime)
led.off()
duration = time.time() - t_start
log.info(f"Measurement took {duration_to_string(duration)} (estimate was {duration_to_string(time_est)})")