Dual Stepper controller

This is a dual stepper controller (1.4A - 24v) using SPI/I2C interface with current limiting and 1/16th micro stepping

Similar projects worth following
As part of my Direct UV Printer project this stepper board has been developed to control the print head translation and paper feed motors. It is based around a pair of Texas Instruments DRV8880 (up to 45V, reduced amps) chips with a MICROCHIP MCP23S17 16bit SPI I/O expander.

The board will work with the I2C version MCP23017 I/O controller without any changes to the board.

Shared under the Creative Commons - Attribution - ShareAlike 3.0 license.

From the datasheet;

The DRV8880 is a bipolar stepper motor driver for industrial applications. The device has two N-channel power MOSFET H-bridge drivers and a microstepping indexer. The DRV8880 is capable of driving 2.0 A full- scale current or 1.4-A rms current (with proper PCB ground plane for thermal dissipation and at 24 V and TA = 25°C).

AutoTune™ automatically tunes stepper motors for optimal current regulation performance and compensates for motor variation and ageing effects. Additionally slow, fast, and mixed decay modes are available.

The STEP/DIR pins provide a simple control interface. The device can be configured in full-step up to 1/16- step modes. A low-power sleep mode is provided for very low quiescent current standby using a dedicated nSLEEP pin.

Internal protection functions are provided for under voltage, charge pump faults, overcurrent, short- circuits, and over temperature. Fault conditions are indicated by a nFAULT pin.

Update - rev A5 (to match the file iteration). The SPI expander connections have been re-arranged so that Step, Dir & Step Size are all on the same bank. This then allows the values to be updated in a single command allowing synchronous stepping. I've aslo broken out header pins for step and dir on both motors to allow direct control if required.


Circuit diagram for rev A5 - re-organised to allow synchronous stepping of motors & headers for step and dir of both motors

Adobe Portable Document Format - 36.10 kB - 09/25/2016 at 20:49


Gerber files for rev A5 - re-organised to allow synchronous stepping of motors & headers for step and dir of both motors

Zip Archive - 56.29 kB - 09/25/2016 at 20:49


Adobe Portable Document Format - 1.57 MB - 04/22/2016 at 13:32


Adobe Portable Document Format - 915.92 kB - 04/22/2016 at 13:32


Adobe Portable Document Format - 35.07 kB - 06/26/2016 at 20:03


View all 7 files

  • V2.0 board now running

    David Brown06/26/2016 at 20:00 0 comments

    New version tested, transferred the driver chips over to the new board and all tests out well. I've also had a look at the IO expander and the I2C version can be used in place of the SPI one with no change to the board design, as I have added in address selector solder pads.

    The SMD capacitors are much neater to the leaded version I had before. I have not run any testing of the current limiting, but the full range of step sizes are behaving themselves.

    My plan is to squirt some heat sink compound through the holes under the drivers to provide better thermal coupling, without the hassle of soldering (try and avoid too much heat input).

    I had an issue with the PolyZen unit short circuiting, may be a soldering issue, but this item is not critical so just jumpered it. Looking at the PolyZen its a double layer board, so you need to be very careful soldering (hand) that you do not create a short between the layers on the edge. Should be fine for those using re-flow ovens.

    I've posted A3 files have a trace link that needs cutting if you are going to use the PolyZen unit.

  • v1.0 board testing

    David Brown05/03/2016 at 22:04 0 comments

    Well the v1.0 board arrived from OSH and was duly populated. It took me a while to put together the SPI code for testing with the Arduino, but got there in the end.

    Whilst trouble shooting why nFAULT was being pulled low managed to short one of the drivers, so removed it. I noticed that some of the pins had not been making full contact so fluxed the remaining chip and re-soldered the joint. After this the motor ran successfully, with varying torque settings and full step range from full to 1/16th

    The chip runs reasonably cool, hot to the touch, but not scorching. I am making some adjustments to the board to allow the address to be changed (x4 options) and to modify the fault, enable and sleep lines. The TOFF selector will be moved to a soldered setting on the board

    Board files to be uploaded when further testing completed.

    Fig. Populated board (x1 driver removed)

    Fig. Connected to Arduino & stepper

View all 2 project logs

Enjoy this project?



Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates