Exemplo n.º 1
0
 def scan(self):
     # scan one x line per loop
     for yNum in xrange(0, len(self.yArray)):
         # initialize APD thread
         readthread = APDIn.ReadAPD("Dev1/ctr0", 1 / self.dt,
                                    len(self.xArray) + 1)
         self.initPt = numpy.transpose(
             numpy.column_stack((self.xArray[0], self.yArray[yNum])))
         self.initPt = (numpy.repeat(self.initPt, 2, axis=1))
         # move galvo to first point in line
         pointthread = DaqOut.DaqOutputWave(self.initPt, 1 / self.dt,
                                            "Dev1/ao0:1")
         pointthread.run()
         pointthread.waitToFinish()
         pointthread.stop()
         writethread = DaqOut.DaqOutputWave(self.xArray, 1 / self.dt,
                                            "Dev1/ao0")
         # start counter and scanning sequence
         readthread.runCtr()
         writethread.run()
         writethread.waitToFinish()
         writethread.stop()
         self.xLineData = readthread.read()
         self.imageData[yNum] = numpy.diff(self.xLineData)
         # clean up APD tasks
         readthread.stopCtr()
         readthread.stopClk()
         if (not (self.canvas == None)):
             self.dispImageGui()
         #normalize to kCount/sec
         self.imageData = self.imageData / (.001 / self.dt)
     return self.imageData
Exemplo n.º 2
0
def setDaqPt(xVolt, yVolt):
    initPt = np.transpose(np.column_stack((xVolt, yVolt)))
    initPt = (np.repeat(initPt, 2, axis=1))
    # move galvo to first point in line
    pointthread = DaqOut.DaqOutputWave(initPt, 1 / .001, "Dev1/ao0:1")
    pointthread.run()
    pointthread.waitToFinish()
    pointthread.stop()
Exemplo n.º 3
0
 def setDaqPt(xVolt,yVolt):
     pt = numpy.transpose(numpy.column_stack((xVolt,yVolt)))
     pt = (numpy.repeat(pt, 2, axis=1))
     # prefacing string with b should do nothing in python 2, but otherwise this doesn't work
     pointthread = DaqOut.DaqOutputWave(pt, 1000.0, b"Dev1/ao0:1")
     pointthread.run()
     pointthread.waitToFinish()
     pointthread.stop()
Exemplo n.º 4
0
def move_to_pt((pt_x, pt_y)):
    if (abs(pt_x) > .5 or abs(pt_y) > .5):
        raise ValueError(
            "Invalid nv coordinate, galvo voltages must not exceed +- .5 V")
    initPt = np.transpose(np.column_stack((pt_x, pt_y)))
    initPt = (np.repeat(initPt, 2, axis=1))
    # move galvo to first point in line
    pointthread = DaqOut.DaqOutputWave(initPt, 1 / .001, "Dev1/ao0:1")
    pointthread.run()
    pointthread.waitToFinish()
    pointthread.stop()
Exemplo n.º 5
0
 def scan(self, queue=None):
     # scan one x line per loop
     for yNum in xrange(0, len(self.yArray)):
         if (not (queue is None) and not (queue.empty())
                 and (queue.get() == 'STOP')):
             break
         # initialize APD thread
         readthread = PDIn.ReadAI("Dev1/AI2", 1 / self.dt,
                                  len(self.xArray) + 1)
         self.initPt = numpy.transpose(
             numpy.column_stack((self.xArray[0], self.yArray[yNum])))
         self.initPt = (numpy.repeat(self.initPt, 2, axis=1))
         # move galvo to first point in line
         pointthread = DaqOut.DaqOutputWave(self.initPt, 1 / self.dt,
                                            "Dev1/ao0:1")
         pointthread.run()
         pointthread.waitToFinish()
         pointthread.stop()
         writethread = DaqOut.DaqOutputWave(self.xArray, 1 / self.dt,
                                            "Dev1/ao0")
         # start counter and scanning sequence
         readthread.run()
         writethread.run()
         writethread.waitToFinish()
         writethread.stop()
         self.xLineData = readthread.read()
         self.averagedData = numpy.zeros(
             len(self.xArray) / self.clockAdjust)
         for i in range(0, int((len(self.xArray) / self.clockAdjust))):
             self.averagedData[i] = numpy.mean(
                 self.xLineData[(i * self.clockAdjust +
                                 1):(i * self.clockAdjust +
                                     self.clockAdjust - 1)])
         self.imageData[yNum] = self.averagedData
         if (not (self.canvas == None)):
             self.dispImageGui()
     return self.imageData
Exemplo n.º 6
0
 def scan(self,queue = None):
     # scan one x line per loop
     for yNum in xrange(0, len(self.yArray)):
         if (not (queue is None) and not (queue.empty()) and (queue.get() == 'STOP')):
             break
         # initialize APD thread
         readthread = APDIn.ReadAPD("Dev1/ctr0", 1 / self.dt,
                                    len(self.xArray) + 1)
         self.initPt = numpy.transpose(numpy.column_stack((self.xArray[0],
                                       self.yArray[yNum])))
         self.initPt = (numpy.repeat(self.initPt, 2, axis=1))
         # move galvo to first point in line
         pointthread = DaqOut.DaqOutputWave(self.initPt, 1 / self.dt, "Dev1/ao0:1")
         pointthread.run()
         pointthread.waitToFinish()
         pointthread.stop()
         writethread = DaqOut.DaqOutputWave(self.xArray, 1 / self.dt,
                                            "Dev1/ao0")
         # start counter and scanning sequence
         readthread.runCtr()
         writethread.run()
         writethread.waitToFinish()
         writethread.stop()
         self.xLineData,_ = readthread.read()
         self.diffData = numpy.diff(self.xLineData)
         self.summedData = numpy.zeros(len(self.xArray)/self.clockAdjust)
         for i in range(0,int((len(self.xArray)/self.clockAdjust))):
             self.summedData[i] = numpy.sum(self.diffData[(i*self.clockAdjust+1):(i*self.clockAdjust+self.clockAdjust-1)])
         #also normalizing to kcounts/sec
         self.imageData[yNum] = self.summedData*(.001/self.timePerPt)
         # clean up APD tasks
         readthread.stopCtr()
         readthread.stopClk()
         if(not(self.canvas == None)):
             self.dispImageGui()
     return self.imageData
Exemplo n.º 7
0
 def sweepscan(self, amplitude, offset, freqStart, freqEnd, sampleNum,
               samplesPerPt, name):
     self.sweeper = ZI.ZIHF2(amplitude, offset, 500000, ACCoupling=1)
     pointnum = 1
     for point in self.xypairs:
         self.initPt = numpy.transpose(
             numpy.column_stack((point[0], point[1])))
         self.initPt = (numpy.repeat(self.initPt, 2, axis=1))
         # move galvo to first point in line
         pointthread = DaqOut.DaqOutputWave(self.initPt, 1 / self.dt,
                                            "Dev1/ao0:1")
         pointthread.run()
         pointthread.waitToFinish()
         pointthread.stop()
         self.sweepData = self.sweeper.sweep(freqStart, freqEnd, sampleNum,
                                             samplesPerPt)
         self.filepath = 'C:\Users\Experiment\Desktop\Sweeptest\sweep' + name + str(
             pointnum) + '.txt'
         self.writeArray(self.sweepData, self.filepath,
                         ['Frequency', 'Response'])
         pointnum += 1
Exemplo n.º 8
0
 def resonancescan(self, amplitude, offset, freq):
     self.scanner = ZI.ZIHF2(amplitude, offset, freq, ACCoupling=1)
     x = []
     y = []
     R = []
     for point in self.xypairs:
         self.initPt = numpy.transpose(
             numpy.column_stack((point[0], point[1])))
         self.initPt = (numpy.repeat(self.initPt, 2, axis=1))
         # move galvo to first point in line
         pointthread = DaqOut.DaqOutputWave(self.initPt, 1 / self.dt,
                                            "Dev1/ao0:1")
         pointthread.run()
         pointthread.waitToFinish()
         pointthread.stop()
         x = numpy.append(x, point[0])
         y = numpy.append(y, point[1])
         R = numpy.append(R, self.scanner.poll())
     #self.filepath = 'C:\Users\Experiment\Desktop\Sweeptest\scan.txt'
     #self.writeArray(R, self.filepath, ['Frequency', 'Response'])
     plt.scatter(x, y, c=R, s=20, cmap=mpl.cm.pink)
     plt.show()
Exemplo n.º 9
0
            # make freq. array for current section
            freq_section_array = freq_array[np.where(
                np.logical_and(freq_array >= sec_min, freq_array < sec_max))]
            # if section is empty skip
            if len(freq_section_array) == 0:
                continue
            center_freq = (sec_max + sec_min) / 2.0
            freq_voltage_array = (
                (freq_section_array - sec_min) /
                RANGE_STEP) * 2 - 1  #normalize voltages to +-1 range

            mwgen.setFreq(center_freq)

            readthread = APDIn.ReadAPD("Dev1/ctr0", 1 / dt,
                                       len(freq_voltage_array) + 1, 100000)
            writethread = DaqOut.DaqOutputWave(freq_voltage_array, 1 / dt,
                                               "Dev1/ao2")
            # start counter and scanning sequence
            readthread.runCtr()
            writethread.run()
            writethread.waitToFinish()
            writethread.stop()

            raw_data = readthread.read()

            #raw_data = sweep_mw_and_count_APD(freq_voltage_array, dt)
            # counter counts continiously so we take the difference to get the counts per time interval
            diff_data = np.diff(raw_data)
            summed_data = np.zeros(len(freq_voltage_array) / clock_adjust)
            for i in range(0, int((len(freq_voltage_array) / clock_adjust))):
                summed_data[i] = np.sum(diff_data[(i * clock_adjust +
                                                   1):(i * clock_adjust +