forked from M-Labs/artiq
examples: add pdq2_simple example
This commit is contained in:
parent
467268a06e
commit
b363cb1d66
|
@ -0,0 +1,43 @@
|
|||
import numpy as np
|
||||
|
||||
from artiq.experiment import *
|
||||
from artiq.wavesynth.coefficients import build_segment
|
||||
|
||||
|
||||
class PDQ2Simple(EnvExperiment):
|
||||
"""Set PDQ2 voltages."""
|
||||
def build(self):
|
||||
self.setattr_device("core")
|
||||
self.setattr_device("pmt")
|
||||
self.setattr_device("electrodes")
|
||||
|
||||
# 1 device, 3 board each, 3 dacs each
|
||||
self.u = np.arange(4*3)[None, :, None]*.1
|
||||
|
||||
def setup(self, offset):
|
||||
self.electrodes.disarm()
|
||||
self.load = self.electrodes.create_frame()
|
||||
segment = self.load.create_segment()
|
||||
for line in build_segment([100], self.u + offset):
|
||||
segment.add_line(**line)
|
||||
self.detect = self.electrodes.create_frame()
|
||||
segment = self.detect.create_segment()
|
||||
for line in build_segment([100], -self.u + offset):
|
||||
segment.add_line(**line)
|
||||
self.electrodes.arm()
|
||||
|
||||
@kernel
|
||||
def one(self):
|
||||
self.load.advance()
|
||||
delay(1*ms)
|
||||
self.detect.advance()
|
||||
delay(1*ms)
|
||||
self.pmt.gate_rising(100*us)
|
||||
return self.pmt.count()
|
||||
|
||||
def run(self):
|
||||
offsets = np.linspace(0, 10, 3)
|
||||
for o in offsets:
|
||||
self.setup(o)
|
||||
print(self.electrodes.get_program())
|
||||
self.one()
|
Loading…
Reference in New Issue