if hasattr(self.temperature, 'get_temperature'):
return self.temperature.get_temperature()
- def move_just_onto_surface(self, depth=-50e-9, setpoint=2, far=200):
+ def move_just_onto_surface(self, depth=-50e-9, setpoint=2,
+ min_slope_ratio=10, far=200):
"""Position the AFM tip close to the surface.
Uses `.piezo.get_surface_position()` to pinpoint the position
_LOG.debug("see if we're starting near the surface")
try:
pos = self.piezo.get_surface_position(
- axis_name=self.axis_name, max_deflection=target_def)
+ axis_name=self.axis_name, max_deflection=target_def,
+ min_slope_ratio=min_slope_ratio)
except _FlatFit, e:
_LOG.info(e)
pos = self._stepper_approach_again(
- target_deflection=target_def, far=far)
+ target_deflection=target_def, min_slope_ratio=min_slope_ratio,
+ far=far)
except _SurfaceError, e:
_LOG.info(e)
pos = self._stepper_approach_again(
- target_deflection=target_def, far=far)
+ target_deflection=target_def, min_slope_ratio=min_slope_ratio,
+ far=far)
pos_m = _convert_bits_to_meters(axis.config, pos)
_LOG.debug('located surface at stepper %d, piezo %d (%g m)'
self.stepper.step_relative(-1, backlash_safe=True)
try:
pos = self.piezo.get_surface_position(
- axis_name=self.axis_name, max_deflection=target_def)
+ axis_name=self.axis_name, max_deflection=target_def,
+ min_slope_ratio=min_slope_ratio)
except _FlatFit, e:
_LOG.debug(e)
continue
self.stepper.step_relative(1)
try:
pos = self.piezo.get_surface_position(
- axis_name=self.axis_name, max_deflection=target_def)
+ axis_name=self.axis_name, max_deflection=target_def,
+ min_slope_ratio=min_slope_ratio)
except _FlatFit, e:
_LOG.debug(e)
continue
% (depth, self.stepper.position, target, target_m))
- def _stepper_approach_again(self, target_deflection, far):
+ def _stepper_approach_again(self, target_deflection, min_slope_ratio, far):
_LOG.info('back off %d half steps and approach until deflection > %g'
% (far, target_deflection))
-
# back away
self.stepper.step_relative(-far, backlash_safe=True)
-
- cd = self.piezo.read_deflection() # cd = current deflection in bits
- _LOG.debug('single stepping approach')
- while cd < target_deflection:
- _LOG.debug('deflection %g < setpoint %g. step closer'
- % (cd, target_deflection))
- self.stepper.single_step(1) # step in
- cd = self.piezo.read_deflection()
-
+ self.stepper_approach(target_deflection=target_deflection)
for i in range(2*max(1, self.stepper.backlash)):
_LOG.debug(
'additional surface location attempt (stepping backwards)')
try:
pos = self.piezo.get_surface_position(
- axis_name=self.axis_name, max_deflection=target_deflection)
+ axis_name=self.axis_name, max_deflection=target_deflection,
+ min_slope_ratio=min_slope_ratio)
return pos
except _SurfaceError, e:
_LOG.info(e)
_LOG.debug('giving up on finding the surface')
_LOG.warn(e)
raise e
+
+ def stepper_approach(self, target_deflection):
+ _LOG.info('approach with stepper until deflection > {}'.format(
+ target_deflection))
+ cd = self.piezo.read_deflection() # cd = current deflection in bits
+ _LOG.debug('single stepping approach')
+ while cd < target_deflection:
+ _LOG.debug('deflection {} < setpoint {}. step closer'.format(
+ cd, target_deflection))
+ self.stepper.single_step(1) # step in
+ cd = self.piezo.read_deflection()