def goHome(self): con = pyAPT.MTS50(serial_number=self.X_AXIS_SN) con.home(velocity=40) con = pyAPT.MTS50(serial_number=self.Y_AXIS_SN) con.home(velocity=40) con = pyAPT.MTS50(serial_number=self.Z_AXIS_SN) con.home(velocity=40) self.moveAbsolute(0, 0, 0)
def _init_motors(): # initilizes x, y, z motors x = pyAPT.MTS50(serial_number=27001234) y = pyAPT.MTS50(serial_number=27001328) z = pyAPT.MTS50(serial_number=27001291) #motorlist = [x, y, z] ''' for each in motorlist: each.max_velocity = velocity = 0.23 each.max_acceleration = 0.45 ''' print x.position(), y.position(), z.position() return x, y, z #, motorlist
def main(args): if len(args) < 3: print(__doc__) return 1 else: serial = args[1] position = float(args[2]) try: with pyAPT.MTS50(serial_number=serial) as con: print('Found APT controller S/N', serial) print('\tMoving stage to %.2fmm...' % (position)) st = time.time() con.goto(position, wait=True) stat = con.status() while stat.moving: out = ' pos %3.2fmm vel %3.2fmm/s' % (stat.position, stat.velocity) sys.stdout.write(out) time.sleep(0.01) stat = con.status() l = len(out) sys.stdout.write('\b' * l) sys.stdout.write(' ' * l) sys.stdout.write('\b' * l) print('\tMove completed in %.2fs' % (time.time() - st)) print('\tNew position: %.2fmm' % (con.position())) print('\tStatus:', con.status()) return 0 except pylibftdi.FtdiError as ex: print('\tCould not find APT controller S/N of', serial) return 1
def status(serial): with pyAPT.MTS50(serial_number=serial) as con: status = con.status() print('\tController status:') print('\t\tPosition: %.3fmm (%d cnt)'%(status.position, status.position_apt)) print('\t\tVelocity: %.3fmm'%(status.velocity)) print('\t\tStatus:',status.flag_strings())
def main(args): print 'Looking for APT controllers' drv = pylibftdi.Driver() st = time.time() controllers = drv.list_devices() print '\tlist_devices:',time.time()-st if controllers: for con in controllers: print 'Found %s %s S/N: %s'%con st = time.time() with pyAPT.MTS50(serial_number=con[2]) as con: print '\topen:',time.time()-st st = time.time() status = con.status() print '\tstatus:',time.time()-st print '\tController status:' print '\t\tPosition: %.2fmm'%(status.position) print '\t\tVelocity: %.2fmm'%(status.velocity) print '\t\tStatus:',status.flag_strings() return 0 else: print '\tNo APT controllers found. Maybe you need to specify a PID' return 1
def Connect(self): if not self.connected: self.connected = True self.btnConnect.setStyleSheet('background-color: red') self.btnConnect.setText('Disconnect') self.SN = int(self.txtSN.text()) self.con = pyAPT.MTS50(serial_number=self.SN) self.btnUp.setEnabled(True) self.btnDown.setEnabled(True) self.btnHome.setEnabled(True) self.txtPos.setEnabled(True) self.btnMove.setEnabled(True) self.timer.start(100) else: self.timer.stop() self.connected = False self.con.close() self.btnConnect.setStyleSheet('') self.btnConnect.setText('Connect') self.btnUp.setEnabled(False) self.btnDown.setEnabled(False) self.btnHome.setEnabled(False) self.txtPos.setEnabled(False) self.btnMove.setEnabled(False)
def get_vel_params(serial): with pyAPT.MTS50(serial_number=serial) as con: min_vel, acc, max_vel = con.velocity_parameters() raw_min_vel, raw_acc, raw_max_vel = con.velocity_parameters(raw=True) print('\tController velocity parameters:') print('\t\tMin. Velocity: %.2fmm/s (%d)' % (min_vel, raw_min_vel)) print('\t\tAcceleration: %.2fmm/s/s (%d)' % (acc, raw_acc)) print('\t\tMax. Velocity: %.2fmm/s (%d)' % (max_vel, raw_max_vel))
def moveAbsoluteY(self, y): con = pyAPT.MTS50(serial_number = self.Y_AXIS_SN) con.goto(y, wait = False) stat = con.status() while stat.moving: time.sleep(0.01) stat = con.status() con.close()
def home(serial): with pyAPT.MTS50(serial_number=serial) as con: print('\tIdentifying controller') con.identify() print('\tHoming parameters:', con.request_home_params()) print('\tHoming stage...', end=' ') con.home(velocity=10) print('homed')
def moveAbsoluteX(self, x): x = float(self.MAX_DIST) - x con = pyAPT.MTS50(serial_number = self.X_AXIS_SN) con.goto(x, wait = False) stat = con.status() while stat.moving: time.sleep(0.01) stat = con.status() con.close()
def set_vel_params(serial, acc, max_vel): with pyAPT.MTS50(serial_number=serial) as con: print('\tSetting new velocity parameters',acc,max_vel) con.set_velocity_parameters(acc, max_vel) min_vel, acc, max_vel = con.velocity_parameters() print('\tNew velocity parameters:') print('\t\tMin. Velocity: %.2fmm'%(min_vel)) print('\t\tAcceleration: %.2fmm'%(acc)) print('\t\tMax. Velocity: %.2fmm'%(max_vel))
def moveAbsoluteZ(self, z): z = float(self.MAX_DIST) - z con = pyAPT.MTS50(serial_number = self.Z_AXIS_SN) con.goto(z, wait = False) stat = con.status() while stat.moving: time.sleep(0.01) stat = con.status() con.close()
def moveAbsoluteY(self, y): con = pyAPT.MTS50(serial_number=self.Y_AXIS_SN) con.goto(y, wait=False) stat = con.status() while stat.moving: out = ' pos %3.2fmm vel %3.2fmm/s' % (stat.position, stat.velocity) # sys.stdout.write(out) time.sleep(0.01) stat = con.status() l = len(out)
def __init__(self): drv = pylibftdi.Driver() controllers = drv.list_devices() if controllers: controllers = drv.list_devices() self.info = controllers[0] self.serial = self.info[2] self.controller = pyAPT.MTS50(serial_number=self.serial) else: print('No controllers found')
def moveAbsoluteZ(self, z): z = float(self.MAX_DIST) - z con = pyAPT.MTS50(serial_number=self.Z_AXIS_SN) con.goto(z, wait=False) stat = con.status() while stat.moving: out = ' pos %3.2fmm vel %3.2fmm/s' % (stat.position, stat.velocity) # sys.stdout.write(out) time.sleep(0.01) stat = con.status() l = len(out)
def getPos(self, axis = None): if (axis == 'X' or axis == 'x' or axis == None): with pyAPT.MTS50(serial_number = self.X_AXIS_SN) as con: status = con.status() posX = float(self.MAX_DIST_ENCODER - status.position_apt) / self.ENCODER_SCALE if (axis != None): return posX if (axis == 'Y' or axis == 'y' or axis == None): with pyAPT.MTS50(serial_number = self.Y_AXIS_SN) as con: status = con.status() posY = float(status.position_apt) / self.ENCODER_SCALE if (axis != None): return posY if (axis == 'Z' or axis == 'z' or axis == None): with pyAPT.MTS50(serial_number = self.Z_AXIS_SN) as con: status = con.status() posZ = float(self.MAX_DIST_ENCODER - status.position_apt) / self.ENCODER_SCALE if (axis != None): return posZ return [posX, posY, posZ]
def goHome(self): # Move to home position of the stage self.moveAbsolute(self.MAX_DIST, 0, self.MAX_DIST) # Verify X axis home position con = pyAPT.MTS50(serial_number = self.X_AXIS_SN) con.home() con.close() # Verify Y axis home position con = pyAPT.MTS50(serial_number = self.Y_AXIS_SN) con.home() con.close() # Verify Z axis home position con = pyAPT.MTS50(serial_number = self.Z_AXIS_SN) con.home() con.close() # Move to our reference frame home position self.moveAbsolute(0, 0, 0)
def main(args): if len(args) < 3: print __doc__ return 1 else: serial = args[1] dist = float(args[2]) try: with pyAPT.MTS50(serial_number=serial) as con: print 'Found APT controller S/N', serial print '\tMoving stage by %.2fmm...' % (dist), con.move(dist) print 'moved' print '\tNew position: %.2fmm' % (con.position()) return 0 except pylibftdi.FtdiError as ex: print '\tCould not find APT controller S/N of', serial return 1
def main(args): if len(args)<3: print(__doc__) return 1 else: serial = args[1] dist = float(args[2]) try: with pyAPT.MTS50(serial_number=serial) as con: print(con.velocity_parameters()); con.set_velocity_parameters() print(con.velocity_parameters()); print('Found APT controller S/N',serial) print('\tMoving stage by %.2fmm...'%(dist), end=' ') con.move(dist) print('moved') print('\tNew position: %.2fmm'%(con.position())) return 0 except pylibftdi.FtdiError as ex: print('\tCould not find APT controller S/N of',serial) return 1
def main(args): print 'Looking for APT controllers' drv = pylibftdi.Driver() controllers = drv.list_devices() if len(args)>1: serial = args[1] else: serial = None if serial: controllers = filter(lambda x:x[2] == serial, controllers) if controllers: for con in controllers: print 'Found %s %s S/N: %s'%con with pyAPT.MTS50(serial_number=con[2]) as con: print '\tPosition (mm) = %.2f [enc:%d]'%(con.position(), con.position(raw=True)) return 0 else: print '\tNo APT controllers found. Maybe you need to specify a PID' return 1
def activate(self, quiet=False): self.config['channel_names'] = [ 'position_rel', 'position_abs', 'velocity_set' ] self.config['scale'] = [1.] * len(self.config['channel_names']) self.config['offset'] = [0.] * len(self.config['channel_names']) self.params['n_channels'] = 3 self.config['Home'] = False self.config['MoveRel'] = 0. self.params['raw_units'] = ['mm', 'mm', 'mm/s'] self.config['eng_units'] = ['mm', 'mm', 'mm/s'] # Open socket to the pyAPT device. self.dev = pyAPT.MTS50(serial_number=self.serial_number) self.driverConnected = True # Make first query to get units, description, etc. self.query(reset=True) if not quiet: print('\t' + str(self.params['name'])) self.pprint() return
def homeStage(stage_serial, settle_time): with pyAPT.MTS50(serial_number=stage_serial) as con: con.home() time.sleep(settle_time) return con.position()
def getStagePos(stage_serial): with pyAPT.MTS50(serial_number=stage_serial) as con: return con.position()
def moveStageAbs(stage_serial, pos, settle_time): with pyAPT.MTS50(serial_number=stage_serial) as con: con.goto(pos) time.sleep(settle_time) return con.position()
def getInfoAxis(self, axis): con = pyAPT.MTS50(serial_number = axis) ret = con.info() con.close() return ret
def getPos(self, axis=None): if (axis == 'X' or axis == 'x' or axis == None): with pyAPT.MTS50(serial_number=self.X_AXIS_SN) as
''' def getPos(self, axis=None): if (axis == 'X' or axis == 'x' or axis == None): with pyAPT.MTS50(serial_number=self.X_AXIS_SN) as con: status = con.status() posX = float(self.MAX_DIST_ENCODER - status.position_apt) / self.ENCODER_SCALE if (axis != None): return posX if (axis == 'Y' or axis == 'y' or axis == None): with pyAPT.MTS50(serial_number=self.Y_AXIS_SN) as con: status = con.status() posY = float(status.position_apt) / self.ENCODER_SCALE if (axis != None): return posY if (axis == 'Z' or axis == 'z' or axis == None): with pyAPT.MTS50(serial_number=self.Z_AXIS_SN) as con: status = con.status() posZ = float(self.MAX_DIST_ENCODER - status.position_apt) / self.ENCODER_SCALE
def getInfoAxis(self, axis): con = pyAPT.MTS50(serial_number=axis) return con.info()
def moveStageRel(stage_serial, dist, settle_time): with pyAPT.MTS50(serial_number=stage_serial) as con: con.move(dist) time.sleep(settle_time) return con.position()
def getStatusAxis(self, axis): con = pyAPT.MTS50(serial_number = axis) ret = con.status() con.close() return ret