# DP-Series Step Motor Controller

The DPSeriesMotorController class implements a base driver class for Anaheim-Automation DP Series stepper motor controllers. There are many controllers sold in this series, all of which implement the same core command set. Some controllers, like the DPY50601, implement additional functionality that is not included in this driver. If these additional features are desired, they should be implemented in a subclass.

class pymeasure.instruments.anaheimautomation.DPSeriesMotorController(adapter, name='Anaheim Automation Stepper Motor Controller', address=0, encoder_enabled=False, **kwargs)

  Bases: `Instrument`

  Base class to interface with Anaheim Automation DP series stepper motor controllers.

  This driver has been tested with the DPY50601 and DPE25601 motor controllers.

  property absolute_position

    Float property representing the value of the motor position measured in absolute units. Note that in DP series motor controller instrument manuals, ‘absolute position’ refers to the `step_position` property rather than this property. Also note that use of this property relies on `steps_to_absolute()` and `absolute_to_steps()` being implemented in a subclass. In this way, the user can define the conversion from a motor step position into any desired absolute unit. Absolute units could be the position in meters of a linear stage or the angular position of a gimbal mount, etc. This property can be set.

  absolute_to_steps(pos)

    Convert an absolute position to a number of steps to move. This must be implemented in subclasses.

    Parameters:

      pos – Absolute position in the units determined by the subclassed `absolute_to_steps()` method.

  property address

    Integer property representing the address that the motor controller uses for serial communications.

  property basespeed

    Integer property that represents the motor controller’s starting/homing speed. This property can be set.

  property busy

    Query to see if the controller is currently moving a motor.

  check_errors()

    Method to read the error codes register and log when an error is detected.

    Return error_code:

      one byte with the error codes register contents

  property direction

    A string property that represents the direction in which the stepper motor will rotate upon subsequent step commands. This property can be set. ‘CW’ corresponds to clockwise rotation and ‘CCW’ corresponds to counter-clockwise rotation.

  property encoder_autocorrect

    A boolean property to enable or disable the encoder auto correct function. This property can be set.

  property encoder_delay

    An integer property that represents the wait time in ms. after a move is finished before the encoder is read for a potential encoder auto-correct action to take place. This property can be set.

  property encoder_enabled

    A boolean property to represent whether an external encoder is connected and should be used to set the `step_position` property.

  property encoder_motor_ratio

    An integer property that represents the ratio of the number of encoder pulses per motor step. This property can be set.

  property encoder_retries

    An integer property that represents the number of times the motor controller will try the encoder auto correct function before setting an error flag. This property can be set.

  property encoder_window

    An integer property that represents the allowable error in encoder pulses from the desired position before the encoder auto-correct function runs. This property can be set.

  property error_reg

    Reads the current value of the error codes register.

  home(home_mode)

    Send command to the motor controller to ‘home’ the motor.

    Parameters:

      home_mode –

      `0` or `1` specifying which homing mode to run.

      0 will perform a homing operation where the controller moves the motor until a soft limit is reached, then will ramp down to base speed and continue motion until a home limit is reached.

      In mode 1, the controller will move the motor until a limit is reached, then will ramp down to base speed, change direction, and run until the limit is released.

  property maxspeed

    Integer property that represents the motor controller’s maximum (running) speed. This property can be set.

  move(direction)

    Move the stepper motor continuously in the given direction until a stop command is sent or a limit switch is reached. This method corresponds to the ‘slew’ command in the DP series instrument manuals.

    Parameters:

      direction – value to set on the direction property before moving the motor.

  reset_position()

    Reset position as counted by the motor controller and an externally connected encoder to 0.

  property step_position

    Integer property representing the value of the motor position measured in steps counted by the motor controller or, if `encoder_enabled` is set, the steps counted by an externally connected encoder. Note that in the DP series motor controller instrument manuals, this property would be referred to as the ‘absolute position’ while this driver implements a conversion between steps and absolute units for the `absolute_position` property. This property can be set.

  steps_to_absolute(steps)

    Convert a position measured in steps to an absolute position.

    Parameters:

      steps – Position in steps to be converted to an absolute position.

  stop()

    Method that stops all motion on the motor controller.

  wait_for_completion(interval=0.5)

    Block until the controller is not “busy” (i.e. block until the motor is no longer moving.)

    Parameters:

      interval – (float) seconds between queries to the “busy” flag.

    Returns:

      None

  write(command)

    Override the instrument base write method to add the motor controller’s address to the command string.

    Parameters:

      command – command string to be sent to the motor controller.