Commit 8f096b6f authored by Nicolas Nunez Barreto's avatar Nicolas Nunez Barreto

agrego nuevas meds

parent 8c90b2aa
......@@ -138,7 +138,7 @@ class MeltingExperiment(EnvExperiment):
print(f"Amp: {ampli}")
self.set_measurement_amplitude(ampli,self._channel)
conn.send(['rois'])
conn.send('rois True')
rta = conn.recv()
val = rta
......
......@@ -65,7 +65,7 @@ def convert_amp_to_data(amp):
class AD9910RAM_andor(EnvExperiment):
'''Amplitude Modulation SCAN (V2) - Reads fluo with andor camera'''
'''Amplitude Modulation SCAN - reads fluo with andor camera'''
def build(self): #this code runs on the host computer
self.setattr_device("core") #sets core device drivers as attributes
self.setattr_device("ccb")
......@@ -84,9 +84,9 @@ class AD9910RAM_andor(EnvExperiment):
self._channel_list = list( [ f'Ch{jj}' for jj in range(4) ] )
self.setattr_argument("channel",EnumerationValue(self._channel_list))
self.frequency = self.get_argument(f"frequency",NumberValue(100*MHz, unit='MHz', scale=MHz, min=1*MHz, max=400*MHz))
self.amplitude = self.get_argument(f"amplitude",NumberValue( 0.25, min=0.000, max=1.000))
self.depth = self.get_argument(f"AM Depth", NumberValue( 0.15, min=0.000, max=1.000))
#self.frequency = self.get_argument(f"frequency",NumberValue(100*MHz, unit='MHz', scale=MHz, min=1*MHz, max=400*MHz))
#self.amplitude = self.get_argument(f"amplitude",NumberValue( 0.25, min=0.000, max=1.000))
self.depth = self.get_argument(f"AM Floor", NumberValue( 0.15, min=0.000, max=1.000))
# self.am_freq = self.get_argument(f"AM frequency",NumberValue(700*kHz, unit='kHz', scale=kHz, min=100*kHz, max=2000*kHz))
self._channel = 0
......@@ -103,13 +103,39 @@ class AD9910RAM_andor(EnvExperiment):
)
)
self.setattr_argument(f"t_readout",
NumberValue(300*ms, unit='ms', scale=ms, min=0.001*ms),
"Experiment params")
# self.setattr_argument(f"t_readout",
# NumberValue(300*ms, unit='ms', scale=ms, min=0.001*ms),
# "Experiment params")
self.setattr_argument(f"t_trans",
NumberValue(10*us, unit='us', scale=us, min=1*us),
"Experiment params")
# Ch1 ********************
self.setattr_argument(f"IR1_freq",
NumberValue(229*MHz, unit='MHz', scale=MHz, min=1*MHz, max=400*MHz),
"Experiment params")
self.setattr_argument(f"IR1_amp",
NumberValue(0.25, min=0., max=0.8),
"Experiment params")
# Ch2 ********************
self.setattr_argument(f"UV_freq",
NumberValue(115*MHz, unit='MHz', scale=MHz, min=1*MHz, max=400*MHz),
"Experiment params")
self.setattr_argument(f"UV_amp",
NumberValue(0.12, min=0., max=0.3),
"Experiment params")
# Ch3 ********************
self.setattr_argument(f"IR2_freq",
NumberValue(85*MHz, unit='MHz', scale=MHz, min=1*MHz, max=400*MHz),
"Experiment params")
self.setattr_argument(f"IR2_amp",
NumberValue(0.25, min=0., max=0.8),
"Experiment params")
def run(self):
......@@ -117,6 +143,10 @@ class AD9910RAM_andor(EnvExperiment):
t0 = time()
self._channel = self._channel_list.index( self.channel )
address = ('localhost', PORT)
conn = Client(address, authkey=PASS)
sleep(0.1)
print("canal:", self._channel)
# assert self._channel==3
......@@ -128,9 +158,15 @@ class AD9910RAM_andor(EnvExperiment):
self.create_datasets()
self.create_applets()
t0 = time() #; jj=0
self.Set_Amplitudes()
print(f"Set_Amplitudes() time: {round(time()-t0,2)}")
for ind,am_freq in enumerate(sequence):
self.mutate_dataset("real_freq", ind, am_freq)
amplitudes = [0, self.IR1_amp, self.UV_amp, self.IR2_amp]
amplitude = amplitudes[self._channel]
for ind,am_freq in enumerate(sequence):
t0 = time() #; jj=0
......@@ -144,7 +180,7 @@ class AD9910RAM_andor(EnvExperiment):
modulation = get_urukul_array(frec, num_samples, n_harmonic)
#modulation = (array(modulation)/2 * self.depth ) + (self.amplitude-self.depth)
# print(f"2step time: {round(time()-t0,2)}")
modulation = self.amplitude*(1+0.5*(1-self.depth)*(array(modulation)-1))
modulation = amplitude*(1+0.5*(1-self.depth)*(array(modulation)-1))
data = convert_amp_to_data( modulation )
self.clock_step = clock_step
......@@ -184,17 +220,18 @@ class AD9910RAM_andor(EnvExperiment):
print(F"NO SE PUDO SINTETIZAR F_am={am_freq} Hz POR ERRORES DEL KERNEL")
self.mutate_dataset("error_freq", ind, 2 )
conn.send(['rois'])
conn.send('rois True')
rta = conn.recv()
val = rta
self.mutate_dataset("counts_roi1", ind, val[0] )
self.mutate_dataset("counts_roi2", ind, val[1] )
self.mutate_dataset("counts_roi2", ind, val[1] )
# print(f"6step time: {round(time()-t0,2)}")
sleep(self.scan_time_step)
print(f"step time: {round(time()-t0,2)}")
self.end_kernel()
self.Set_Amplitudes()
print("FFIIINNN")
......@@ -206,20 +243,62 @@ class AD9910RAM_andor(EnvExperiment):
self.set_dataset("real_freq", np.zeros( len(self.freqs.sequence) , dtype=float), broadcast=True, archive=True)
self.set_dataset("error_freq", np.zeros( len(self.freqs.sequence) , dtype=float), broadcast=True, archive=True)
self.set_dataset("channel" , self.channel, broadcast=False, archive=True)
self.set_dataset("freq_carrier" , str(self.frequency), broadcast=False, archive=True)
self.set_dataset("amplitude_carrier" , str(self.amplitude), broadcast=False, archive=True)
#self.set_dataset("freq_carrier" , str(self.frequency), broadcast=False, archive=True)
#self.set_dataset("amplitude_carrier" , str(self.amplitude), broadcast=False, archive=True)
self.set_dataset("AM_depth_mod" , str(self.depth), broadcast=False, archive=True)
self.set_dataset("counts_roi1" , np.zeros( len(self.freqs.sequence) , dtype=int ), broadcast=True, archive=True)
self.set_dataset("counts_roi2" , np.zeros( len(self.freqs.sequence) , dtype=int ), broadcast=True, archive=True)
self.set_dataset("UV_freq", self.UV_freq, broadcast=False, archive=True)
self.set_dataset("UV_amp", self.UV_amp, broadcast=False, archive=True)
self.set_dataset("IR1_freq", self.IR1_freq, broadcast=False, archive=True)
self.set_dataset("IR1_amp", self.IR1_amp, broadcast=False, archive=True)
self.set_dataset("IR2_freq", self.IR2_freq, broadcast=False, archive=True)
self.set_dataset("IR2_amp", self.IR2_amp, broadcast=False, archive=True)
@rpc(flags={"async"})
def create_applets(self):
self.ccb.issue("create_applet", "Motional_spectrum_AM",
self.ccb.issue("create_applet", "ROI1_Fluo_vs_modulation_andor",
"${python} -m pyLIAF.artiq.applets.plot_xy "
"counts "
"counts_roi1 "
"--x real_freq")
self.ccb.issue("create_applet", "ROI2_Fluo_vs_modulation_andor",
"${python} -m pyLIAF.artiq.applets.plot_xy "
"counts_roi2 "
"--x real_freq")
@kernel
def Set_Amplitudes(self):
self.core.break_realtime()
# self.core.reset()
# self.core.break_realtime()
for jj in range(1,4):
self.u[jj].cpld.init()
self.core.break_realtime()
self.u[jj].init()
self.core.break_realtime()
self.core.break_realtime()
delay(5*ms)
# self.u[1].set_frequency(self.IR1_freq)
# self.u[1].set_amplitude(self.IR1_amp)
self.u[1].set(self.IR1_freq, amplitude=self.IR1_amp)
delay(5*ms)
# self.u[2].set_frequency(self.UV_freq)
# self.u[2].set_amplitude(self.UV_amp)
self.u[2].set(self.UV_freq, amplitude=self.UV_amp)
delay(5*ms)
# self.u[3].set_frequency(self.IR2_freq)
# self.u[3].set_amplitude(self.IR2_amp)
self.u[3].set(self.IR2_freq, amplitude=self.IR2_amp)
self.core.break_realtime()
delay(5*ms)
#self.u[2].set_frequency(self.UV_freq, self.UV_amp)
#self.u[3].set_frequency(self.IR2_freq, self.IR2_amp)
@kernel
def readout(self) -> TInt64:
......@@ -232,6 +311,17 @@ class AD9910RAM_andor(EnvExperiment):
return self.pmt.count(here) # recupero las cuentas medidas
@kernel #this code runs on the FPGA
def end_kernel(self):
self.core.break_realtime()
self.u[self._channel].cpld.init()
self.core.break_realtime()
self.u[self._channel].init()
delay(1*ms)
self.core.break_realtime()
self.u[self._channel].set_cfr1(ram_enable=0)
self.u[self._channel].cpld.io_update.pulse_mu(8)
@kernel #this code runs on the FPGA
def run_kernel(self):
......@@ -291,7 +381,7 @@ class AD9910RAM_andor(EnvExperiment):
self.u[self._channel].sw.on()
#set urukuln parameters and turn channel on
self.u[self._channel].set_frequency(self.frequency)
#self.u[self._channel].set_frequency(self.frequency)
self.u[self._channel].cpld.io_update.pulse_mu(8)
# self.u.set_att(10*dB)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment