Source code for classes.E_Stage

# Electronic Probe Stage Class
# The E Stage is just a wrapper of the XYZ Stage for uniformity with the fibre stages

from xyzstage import XYZ_Stage
import math

[docs]class E_Stage(XYZ_Stage): def __init__(self, mtr_list,space=None,off_angle=None): ''' Constructor mtr_list (list): a list with serial objects corresponding to the x, y and z motors respectively ''' self.name = '' if space == None: self.space = (0.060,0.300) else: self.space = space if off_angle == None: self.off_angle = 0 else: self.off_angle = off_angle XYZ_Stage.__init__(self,mtr_list,self.off_angle) self.contactDist = self.z self.highZ = (self.x,self.y,self.z) self.lowZ = (self.x,self.y,self.z)
[docs] def set_whoAmI(self, name): self.name = name
[docs] def whoAmI(self): return self.name
[docs] def setHighZ(self): ''' Set the height at which the probe will be from the chip while disconnected ''' self.highZ = [self.x,self.y,self.z]
[docs] def setLowZ(self, dis_height=0.1): ''' Set the height at which the probe is touching the chip ''' self.lowZ = [self.x,self.y,self.z] self.highZ = [self.x,self.y,self.z - dis_height]
[docs] def connect(self): ''' Moves z position of probe to the Low Z value ''' z_extra = 0 if self.leveled(): x_d = (self.x-self.lowZ[0]) y_d = (self.y-self.lowZ[1]) z_extra += x_d * math.tan(math.radians(self.ang_x)) + y_d * math.tan(math.radians(self.ang_y)) if self.z is not self.highZ: self.set_coordinates([self.x,self.y,self.highZ[2]+z_extra]) self.set_coordinates([self.x,self.y,self.lowZ[2]+z_extra])
[docs] def disconnect(self): ''' Moves z position of probe to the High Z value. ''' z_extra = 0 if self.leveled(): x_d = (self.x-self.highZ[0]) y_d = (self.y-self.highZ[1]) z_extra += x_d * math.tan(math.radians(self.ang_x)) + y_d * math.tan(math.radians(self.ang_y)) self.set_coordinates([self.x,self.y,self.highZ[2]+z_extra])
[docs] def jumpDownToNext(self,pitch): ''' Experimental pitch: spacing of pads in mm ''' self.disconnect() self.set_coor_2d([self.x,self.y-pitch]) self.connect()
def __str__(self): return self.name
''' Copyright (C) 2017 Robert Polster This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. '''