Skip to content
UV_Scanning_Calibration.py 2.39 KiB
Newer Older
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):
Nicolas Nunez Barreto's avatar
Nicolas Nunez Barreto committed
        self.Test_Experiment_freqs = self.get_dataset("Experiment_freqs")
        self.Test_Experiment_amps = self.get_dataset("Experiment_amps")
Nicolas Nunez Barreto's avatar
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's avatar
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)

    @rpc(flags={"async"})
    def create_applets(self):

        self.ccb.issue("create_applet", "verification_powercalibration",
                        "${python} -m pyLIAF.artiq.applets.plot_xy "
Nicolas Nunez Barreto's avatar
Nicolas Nunez Barreto committed
                        "Test_Measured_PD_UV_counts "
                        "--x Test_Experiment_freqs")
        

    @rpc(flags={"async"})
    def measure_PD(self, i):
        value = rp.ReadVoltage()
Nicolas Nunez Barreto's avatar
Nicolas Nunez Barreto committed
        print(np.abs(value))
        self.mutate_dataset("Test_Measured_PD_UV_counts", i, np.abs(value))

    @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's avatar
Nicolas Nunez Barreto committed
        self.No_freqs = len(self.Test_Experiment_freqs)
Nicolas Nunez Barreto's avatar
Nicolas Nunez Barreto committed
        for amp, freq in zip(self.Test_Experiment_amps, self.Test_Experiment_freqs):
            print(amp, freq)
            self.change_frequency(freq, amp)
            self.measure_PD(i)
            i = i + 1