I would like to control 6 stepper motors (0.225A, 2 V) with Arduino. I was thinking to use motor drivers from Pololu website, for example DRV8834.

Is it possible?

Any suggestion for another type of motor driver?

We need to limit the current, but I also got the advice to use the PWM signal to control the stepper motor. Any advice for this?

  • 1
    Two questions: 1) Are you wanting unipolar or bipolar steppers? 2) What is the end result you actually want to achieve? – Majenko Oct 5 '15 at 18:09
  • 1
    You can set the current using the potentiometer on the DRV8834 board. PWM doesn't make sense for stepper-motors. PWM only makes sense for regular DC motors. It seems more like you need to look into what motor you need for your application before deciding on the motor driver. – Gerben Oct 5 '15 at 19:52
  • We already decided to use stepper motors. I have 6 bipolar steppers. I need just to move forward and backward 6 wires that are connected with the stepper motors by means of a simple mechanism. Do I have enough pin in Arduino for 6 motor drivers? – Marta Oct 6 '15 at 9:06
  • Your requirements are so close to typical 3d printer electronics that you could learn a lot from those designs, even if you end up having to create something of your own. – Chris Stratton Apr 18 '16 at 18:52

Yes it is possible, of course everything is possible!

These drivers need two IO lines at very minimum: DIR and STEP. Pulsing STEP makes one step movement forward or backwards (depending on DIR).

For 6 steppers you need therefore 12 outputs from Arduino. (Which Arduino please? pick one which has enough IO, or otherwise use an I2C output extender).

M0 and M1 controls microstepping mode - configure at your wish. CFG is high on this Pololu board, allowing the board to use as a stepper driver out of the box.

Steppers (if you want to get them working at full torque) require a constant-current drive. (Inexpensive solutions use a constant voltage drive, such as using an ULN2803 - however those can not get too much torque). Happily this driver can do this well, the potentiometer sets the maximum current.

Steppers need considerable current when starting movement to a next step. However, unlike DC motors, even a still position will consume current, which eventually makes the motor hot. Therefore you are supposed to limit the current when the motor is not moving. This is usually done from software (the driver does not known when it is time for a long period at stop).

The way for limiting motor current at stop can be either an analog limiter, or a PWM. This driver has no dedicated input for this purpose. You can do two things:

  • use smaller drive current (use the potentiometer) - this can work well if you're satisfied with the torque
  • use the sleep mode of the driver with a PWM from the Arduino side.

This latter solution needs you to:

  • connect all EN pins of all 6 drivers, and connect it to one Arduino pin which has PWM (i.e. analogWrite())
  • drive this to 0, then start movements
  • once movements are finished, use analogWrite() and set to say, 128 (usually half of the move current is a good guess for holding current)

This way when the motors are stopped, the holding current will be less, hence the motors don't get hot.


You could create your own custom shield with an Arduino mega and 6 Stepper sticks


Here is a link to the stepper sticks I was talking about. To make this work you would need to be able to solder the breadboard together and set up the arduino to accept pins from the breadboard. You would also need a 12v power supply to give the motors power

  • Why the DRV8825 over the DRV8834? – Dave X Feb 19 '16 at 21:13

We can also be use easy driver for 6 stepper motor ... or if we want to many stepper motor control we can use there bit shift Resister 74HC595. for driver ULN20003 IC driver or l293d IC.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.