ANC350 Attocube Instrument

This is the instrument level of the position ANC350 from Attocube (in the Montana)

class hyperion.instrument.position.anc_instrument.Anc350Instrument(settings)

Anc 350 instrument class.

capacitance(axis)

Measures the capacitance of the stepper or scanner; no idea why you would want to do that.

Parameters:axis (string) – scanner axis to be set, XPiezoScanner, YPiezoScanner, XPiezoStepper, etc.
check_if_moving(axis, position)
work in progress!
Checks whether the piezo is actually moving.
It checks if you are not out of range, or putting a too low voltage.
If that’s okay, it keeps checking whether you are actually moving.
However, the status of the piezo is not always correct, and the movement is not linear, so this method is not finished yet.
It also keeps checking whether self.stop is True, and asking the position. This can be used in higher levels with threads and timers.
Parameters:
  • axis (pint quantity) – scanner axis to be set, XPiezoStepper, YPiezoStepper or ZPiezoStepper
  • position – absolute position that you want to go to; needs to be an integer, no float!
Returns:

The end position, so the moving method can compare that with the start position

configure_scanner(axis)
  • Does the necessary configuration of the Scanner:
  • you need to set the mode to INT, not DC-IN
Parameters:axis (string) – scanner axis to be set, XPiezoScanner, YPiezoScanner or ZPiezoScanner
configure_stepper(axis, amplitude, frequency, amplitudeControl)
  • Does the necessary configuration of the Stepper:
  • the Stepper seem to perform best when put in Amplitude Control mode, nr. 1; you can change that however
  • loads the actor file, files are in controller folder, their names hardcoded in controller init
  • sets the amplitude and frequency
  • the amplitude influences the step width, the frequency influences the speed
  • also stores the current position of the axis in self.current_positions
Parameters:
  • axis (pint quantity) – stepper axis to be set, XPiezoStepper, YPiezoStepper or ZPiezoStepper
  • amplitude – amplitude voltage; at room temperature you need 30V-40V, at low temperatures 40V-50V, max 60V; high amplitude is large stepwidth
  • frequency – frequency to be set; higher means more noise but faster; between 1Hz and 2kHz
finalize()

This is to close connection to the device.

get_position(axis)

Asks the position from the controller level. This method is useful in higher levels where you want to display the position.

Parameters:axis (string) – stepper axis, XPiezoStepper, YPiezoStepper, or XPiezoScanner, etc.
given_step(axis, direction, amount)
Moves by a number of steps that theoretically should be determined by the set amplitude and frequency; in practice it’s different.
You have to give it a lot of time, things break if you ask too much whether it is finished yet.
Parameters:
  • axis (string) – stepper axis to be set, XPiezoStepper, YPiezoStepper or ZPiezoStepper
  • direction (integer) – direction to move: forward = 0, backward = 1
  • amount (integer) – amount of steps that you want to take
initialize()
Starts the connection to the device by initializing the controller.
Loads the axis names from the yml file.
Runs set_temperature_limits.
move_continuous(axis, direction)

Keeps moving the stepper axis until you manage to stop it (for which you need threading).

Parameters:
  • axis (string) – stepper axis to be set, XPiezoStepper, YPiezoStepper or ZPiezoStepper
  • direction (integer) – direction to move: forward = 0, backward = 1
move_relative(axis, step)
Moves the Stepper by an amount to be given by the user.
Pay attention: does not indicate if you take a position outside of the boundary, but you will keep hearing the noise of the piezo.
Parameters:
  • axis (string) – stepper axis to be set, XPiezoStepper, YPiezoStepper or ZPiezoStepper
  • step (pint quantity) – amount to move, can be both positive and negative; needs to be an integer, no float!
move_scanner(axis, voltage)
Moves the Scanner by applying a certain voltage.
Pay attention: the maximum voltage depends on the temperature in the cryostat.
There is no calibration, so you don’t know how far; but the range is specified for 50um with a voltage of 0-140V.
Parameters:
  • axis (string) – scanner axis to be set, XPiezoScanner, YPiezoScanner or ZPiezoScanner
  • voltage (pint quantity) – voltage to move the scanner; from 0-140V
move_to(axis, position)
Moves to an absolute position with the Stepper and tells when it arrived.
Pay attention: does not indicate if you take a position outside of the boundary, but you will keep hearing the noise of the piezo.
Parameters:
  • axis (pint quantity) – stepper axis to be set, XPiezoStepper, YPiezoStepper or ZPiezoStepper
  • position – absolute position that you want to go to; needs to be an integer, no float!
set_temperature_limits()

The maximum voltage to put on the piezo scanners depends on the temperature in the cryostat. The user has to give that. The maximum ranges from 60V at room temperature to 140V at 4K, and everything in between is linearly interpolated.

stop_moving(axis)

Stops moving to target/relative/reference position.

Parameters:axis (string) – scanner or stepper axis to be set, XPiezoStepper, XPiezoScanner, YPiezoScanner etc
update_all_positions()

Uses self.get_position to ask the position on all axes. This method is useful in higher levels where you want to display the position.

zero_scanners()

Puts 0V on all three Piezo Scanners.