Skip to content

Stack motors

A Stackmotor consists in a pair of motors mounted on top of each other

  • one motor with a large stroke (fast but not very precise)
  • and one with a short stroke (slow but very precise)

A Stackmotor can be (de)activated with stack_on & stack_off.

  • when inactive only the large motor will move when moving the stack
  • when active, the small motor will make the move if it stays within its limits, otherwise the small motor is moved to its middle position and the large motor makes the move.

Example configuration

Here is the corresponding YAML configuration for a stack named mstack (= m1 + m2).

# stackmotor.yml

controller:
  - module: stackmotor
    class: StackMotor
    axes:
      # large stroke motor
      - name: $m1
        tags: real mls

      # small stroke motor
      - name: $m2
        tags: real mss
        # low and high limits
        low_limit: -1
        high_limit: 1
        # absolute limits:
        #   if False, limits are calculated from the current position when stack is enabled
        #   at startup stack is enabled
        absolute_limits: False

      - name: mstack
        tags: stack
        unit: mrad