def __init__(self, deviceName, aoChannel, aoRange): aoChannel = daq.AoChannel('%s/%s' % (deviceName, aoChannel), aoRange.min, aoRange.max) aoTask = daq.AoTask('AO auxilliary') aoTask.addChannel(aoChannel) self.channel = aoChannel self.auxAoTask = aoTask self.rampStepSize = 0.01 self.auxAoVoltage = 0
def tuneStage2OutputToZero(pfl, aiChannel): pfl.lockStage2() task = daq.AiTask('TuneStage2OffsetCurrent') task.addChannel(aiChannel) fbCoupling = 6E-6 Is = fbCoupling * np.linspace(0.5, 2.5, 10) Im = np.mean(Is) pfl.setStage2OffsetCurrent(Im) # Start in the middle of the range time.sleep(0.05) pfl.resetPfl() Vs = [] for I in Is: pfl.setStage2OffsetCurrent(I) time.sleep(0.05) V = np.mean(task.readData(100)[0, 10:]) Vs.append(V) fit = np.polyfit(Vs, Is, 1) I0 = np.polyval(fit, 0) if I0 < 0: pass #logger.warn('Cannot achieve 0 output') else: pfl.setStage2OffsetCurrent(I0) V = np.mean(task.readData(100)[0, 10:]) return V
def updateDaqChannelsAo(self): dev = str(self.aoDeviceCombo.currentText()) self.aoChannelCombo.clear() if len(dev): device = daq.Device(dev) aoChannels = device.findAoChannels() for channel in aoChannels: self.aoChannelCombo.addItem(channel)
def killAcBias(): # Would like to ensure there's no output from modulation terminal aoTask = daq.AoTask('acBiasReturnToZero') aoTask.addChannel(acBiasChannel) aoTask.writeData([0], autoStart=True) aoTask.stop() aoTask.clear() del aoTask