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

agrego nuevas meds

parent 8c90b2aa
...@@ -138,7 +138,7 @@ class MeltingExperiment(EnvExperiment): ...@@ -138,7 +138,7 @@ class MeltingExperiment(EnvExperiment):
print(f"Amp: {ampli}") print(f"Amp: {ampli}")
self.set_measurement_amplitude(ampli,self._channel) self.set_measurement_amplitude(ampli,self._channel)
conn.send(['rois']) conn.send('rois True')
rta = conn.recv() rta = conn.recv()
val = rta val = rta
......
...@@ -65,7 +65,7 @@ def convert_amp_to_data(amp): ...@@ -65,7 +65,7 @@ def convert_amp_to_data(amp):
class AD9910RAM_andor(EnvExperiment): 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 def build(self): #this code runs on the host computer
self.setattr_device("core") #sets core device drivers as attributes self.setattr_device("core") #sets core device drivers as attributes
self.setattr_device("ccb") self.setattr_device("ccb")
...@@ -84,9 +84,9 @@ class AD9910RAM_andor(EnvExperiment): ...@@ -84,9 +84,9 @@ class AD9910RAM_andor(EnvExperiment):
self._channel_list = list( [ f'Ch{jj}' for jj in range(4) ] ) self._channel_list = list( [ f'Ch{jj}' for jj in range(4) ] )
self.setattr_argument("channel",EnumerationValue(self._channel_list)) 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.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.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.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.am_freq = self.get_argument(f"AM frequency",NumberValue(700*kHz, unit='kHz', scale=kHz, min=100*kHz, max=2000*kHz))
self._channel = 0 self._channel = 0
...@@ -103,13 +103,39 @@ class AD9910RAM_andor(EnvExperiment): ...@@ -103,13 +103,39 @@ class AD9910RAM_andor(EnvExperiment):
) )
) )
self.setattr_argument(f"t_readout", # self.setattr_argument(f"t_readout",
NumberValue(300*ms, unit='ms', scale=ms, min=0.001*ms), # NumberValue(300*ms, unit='ms', scale=ms, min=0.001*ms),
"Experiment params") # "Experiment params")
self.setattr_argument(f"t_trans", self.setattr_argument(f"t_trans",
NumberValue(10*us, unit='us', scale=us, min=1*us), NumberValue(10*us, unit='us', scale=us, min=1*us),
"Experiment params") "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): def run(self):
...@@ -117,6 +143,10 @@ class AD9910RAM_andor(EnvExperiment): ...@@ -117,6 +143,10 @@ class AD9910RAM_andor(EnvExperiment):
t0 = time() t0 = time()
self._channel = self._channel_list.index( self.channel ) self._channel = self._channel_list.index( self.channel )
address = ('localhost', PORT)
conn = Client(address, authkey=PASS)
sleep(0.1)
print("canal:", self._channel) print("canal:", self._channel)
# assert self._channel==3 # assert self._channel==3
...@@ -128,9 +158,15 @@ class AD9910RAM_andor(EnvExperiment): ...@@ -128,9 +158,15 @@ class AD9910RAM_andor(EnvExperiment):
self.create_datasets() self.create_datasets()
self.create_applets() 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): for ind,am_freq in enumerate(sequence):
self.mutate_dataset("real_freq", ind, am_freq) 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): for ind,am_freq in enumerate(sequence):
t0 = time() #; jj=0 t0 = time() #; jj=0
...@@ -144,7 +180,7 @@ class AD9910RAM_andor(EnvExperiment): ...@@ -144,7 +180,7 @@ class AD9910RAM_andor(EnvExperiment):
modulation = get_urukul_array(frec, num_samples, n_harmonic) modulation = get_urukul_array(frec, num_samples, n_harmonic)
#modulation = (array(modulation)/2 * self.depth ) + (self.amplitude-self.depth) #modulation = (array(modulation)/2 * self.depth ) + (self.amplitude-self.depth)
# print(f"2step time: {round(time()-t0,2)}") # 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 ) data = convert_amp_to_data( modulation )
self.clock_step = clock_step self.clock_step = clock_step
...@@ -184,17 +220,18 @@ class AD9910RAM_andor(EnvExperiment): ...@@ -184,17 +220,18 @@ class AD9910RAM_andor(EnvExperiment):
print(F"NO SE PUDO SINTETIZAR F_am={am_freq} Hz POR ERRORES DEL KERNEL") print(F"NO SE PUDO SINTETIZAR F_am={am_freq} Hz POR ERRORES DEL KERNEL")
self.mutate_dataset("error_freq", ind, 2 ) self.mutate_dataset("error_freq", ind, 2 )
conn.send(['rois']) conn.send('rois True')
rta = conn.recv() rta = conn.recv()
val = rta val = rta
self.mutate_dataset("counts_roi1", ind, val[0] ) 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)}") # print(f"6step time: {round(time()-t0,2)}")
sleep(self.scan_time_step) sleep(self.scan_time_step)
print(f"step time: {round(time()-t0,2)}") print(f"step time: {round(time()-t0,2)}")
self.end_kernel()
self.Set_Amplitudes()
print("FFIIINNN") print("FFIIINNN")
...@@ -206,20 +243,62 @@ class AD9910RAM_andor(EnvExperiment): ...@@ -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("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("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("channel" , self.channel, broadcast=False, archive=True)
self.set_dataset("freq_carrier" , str(self.frequency), 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("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("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_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("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"}) @rpc(flags={"async"})
def create_applets(self): 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 " "${python} -m pyLIAF.artiq.applets.plot_xy "
"counts " "counts_roi1 "
"--x real_freq") "--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 @kernel
def readout(self) -> TInt64: def readout(self) -> TInt64:
...@@ -232,6 +311,17 @@ class AD9910RAM_andor(EnvExperiment): ...@@ -232,6 +311,17 @@ class AD9910RAM_andor(EnvExperiment):
return self.pmt.count(here) # recupero las cuentas medidas 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 @kernel #this code runs on the FPGA
def run_kernel(self): def run_kernel(self):
...@@ -291,7 +381,7 @@ class AD9910RAM_andor(EnvExperiment): ...@@ -291,7 +381,7 @@ class AD9910RAM_andor(EnvExperiment):
self.u[self._channel].sw.on() self.u[self._channel].sw.on()
#set urukuln parameters and turn channel 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[self._channel].cpld.io_update.pulse_mu(8)
# self.u.set_att(10*dB) # 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