Dual Step Motor Driver - KeirRice/PolarTable GitHub Wiki

Arduino Dual Step Motor Driver Shield

Dual polar stepper motor driver in an Arduino Shield form factor. It uses two A3967 chips to drive the motors.

Wiki Page

A3967 Datasheet (pdf)

Photo of the board

Motors can be attached via the screw terminals or the JST 4-pin female sockets.

Step settings can be set from code or with the 4 jumpers.

The set of male headers A 0-3 provide a connection point with ground, power, and signal mapping onto the enable and sleep pins for each motor. This would be useful if you wanted to connect some sensors directly to the control the motors.

There are also breakouts for I2C and UART ports.

Details

  • 4.75V to 15V input rating via on board DC barrel Jack
  • ±750mA, 5-30V output rating
  • Automatic current-decay mode detection/selection
  • 3.3V or 5.0V logic supply voltage
  • Mixed, fast and slow current-decay modes
  • Full, Half, Quarter and Eighth stepping modes.

Pass through headers for UART and IIC communication protocol, but the board itself doesn't use them.

Arduino Socket definition

Pin Description Notes
D0 UART_Rx
D1 UART_Tx
D2 X Step
D3 X Direction
D4 X MS1 setting
D5 X MS2 setting
D6 Y Step
D7 Y Direction
D8 Y MS1 setting
D9 Y MS2 setting
D10 -
D11 -
D12 -
D13 -
A0 ENY Active-low
A1 SLEEPY Active-low
A2 ENX Active-low
A3 SLEEPX Active-low
A4 IIC_SCL
A5 IIC_SDA

The board uses nearly all of the GPIO ports on the Arduino! Only D10 through D13 are free.

Board Schematic

Enable

Enable Input (!ENABLE). This active-low input enables all of the outputs. Pull this HIGH to turn off the holding current going out to the motors.

Sleep

Sleep Mode (!SLEEP). An active-low control input used to minimize power consumption when not in use. This disables much of the internal circuitry including the outputs. Pull this HIGH to for normal operation and startup of the device in the home position.