Newer
Older
Nicolas Nunez Barreto
committed
import numpy as np
from time import sleep
from artiq.experiment import *
from pyLIAF.artiq.controllers import UrukulCh
from pyLIAF.RedPitaya import Read_analog as rp
from scipy import interpolate
class LaserPowerCalibration(EnvExperiment):
"""Testing UV Laser power calibration with photodiode and a red pitaya """
def build(self):
self.setattr_device("ccb")
self.setattr_device("scheduler")
self.setattr_device("core")
self.laserUV = UrukulCh(self, ch=2, freq=110.0, amp=0.3, name="UV") #corresponde a 0.7 Vpp
@rpc
def create_datasets(self):
self.Test_Experiment_freqs = self.get_dataset("Experiment_freqs")
self.Test_Experiment_amps = self.get_dataset("Experiment_amps")
Nicolas Nunez Barreto
committed
self.set_dataset("Test_Experiment_freqs", self.Test_Experiment_freqs, broadcast=True, archive=True)
self.set_dataset("Test_Experiment_amps", self.Test_Experiment_amps, broadcast=True, archive=True)
Nicolas Nunez Barreto
committed
self.set_dataset("Test_Measured_PD_UV_counts", list(np.zeros(len(self.Test_Experiment_freqs), dtype=int)), broadcast=True, archive=True)
Nicolas Nunez Barreto
committed
@rpc(flags={"async"})
def create_applets(self):
self.ccb.issue("create_applet", "verification_powercalibration",
"${python} -m pyLIAF.artiq.applets.plot_xy "
"Test_Measured_PD_UV_counts "
"--x Test_Experiment_freqs")
Nicolas Nunez Barreto
committed
@rpc(flags={"async"})
def measure_PD(self, i):
value = rp.ReadVoltage()
print(np.abs(value))
self.mutate_dataset("Test_Measured_PD_UV_counts", i, np.abs(value))
Nicolas Nunez Barreto
committed
@kernel
def init_kernel(self):
self.core.reset()
self.laserUV.initialize_channel()
delay(10*us)
self.laserUV.set_channel()
self.core.wait_until_mu(now_mu())
delay(1*ms)
self.laserUV.on()
@kernel
def change_frequency(self, freq, amp):
self.core.break_realtime()
delay(50*ms)
self.laserUV.set_frequency(freq, amp)
def run(self):
self.create_datasets()
self.create_applets()
self.init_kernel()
Nicolas Nunez Barreto
committed
i = 0
for amp, freq in zip(self.Test_Experiment_amps, self.Test_Experiment_freqs):
Nicolas Nunez Barreto
committed
print(amp, freq)
self.change_frequency(freq, amp)
self.measure_PD(i)
i = i + 1