One of the stepper motors is not spinning.


  1. 12V 10A power supply
  2. arduino uno
  3. 28BYJ-48-5V stepper motor (27 ohm/winding)
  4. 74HC595
  5. ULN2003A

The setup involves two stepper motor, as shown in the diagram. When powering up the circuit, only one stepper motor is turning. However, I can feel vibrations in both the motors. Furthermore, the motor that is moving does not actually complete one full revolution (I've coded it to turn one full revolution).

( There're some mistakes in the drawing: MR is connected to 5V, and OE is to GND. ) circuit diagram


  1. Removing one motor would make the issue go away.
  2. Connecting the ULN2003A directly to the arduino pins, instead of using 74HC595 helps too.
  3. Using 28BYJ-48-12V (93 ohm/winding) helps too.

My current setup is actually ten 28BYJ-48-12V steppers, and they work fine for sometime before this same issue occur (one of the motor was not rotating). It seems that increasing the delay between each set of shifting helps too.


I tried again with two 5V motors, and it seems that this issue did not occur again. However, I did a bit of testing:

Ten 12V stepper motors with 74HC595 (no issue with motor not spinning):

  1. 5V supply drops to 3.8V when all motor starts turning
  2. removing each motor increased the voltage
  3. Making all 74HC595 output pins HIGH caused supply to drop to 2.2V

I'm quite worried that the voltage supply is dropping when the input of a ULN2003 goes HIGH. My project will eventually involve 64 motors, hence I would imagine that the shift register will not get enough voltage to work properly.

Is this voltage drop normal? What should I do to rectify this issue?

Update 2

In case anyone is wondering, the problem appears to be due to my power connection to the arduino. The source of power for my arduino was initially from my laptop's USB port. After using a decent 5V power supply to power the arduino, the problem went away.

  • \$\begingroup\$ Hmmm interesting. \$\endgroup\$
    – Andy aka
    Commented Jul 17, 2015 at 10:43

1 Answer 1


Probably just a schematic error, but\$ \overline{\text{ MR}}\$ should go to 5V, not GND, and \$\overline{\text{OE}}\$ (not shown) should go to GND. Also, ULN2003A-COM shouldn't float, it should go to 12V in order to clamp the motors' output voltage spikes to 12 volts plus a diode drop.

Most important, though, is that you're way overtaxing the 2003.

From TI's data sheet, note that the maximum allowed current out of the chip's emitter pin is 2.5 amperes and, ignoring the transistors' Vce(sat), you're trying to put about 3.6 amperes through it [the emitter pin] with all of the 27 ohm coils hot.

enter image description here

  • \$\begingroup\$ I'm not well versed in the theory of transistor. How is the 3.6A derived? I thought that it would be at most 1.8A per chip (12V / 27 ohms * 4 coils). Another thing is that I've tried connecting three motors/2003 pair directly to the arduino, skipping the 74HC595, and they worked fine. Why is that? \$\endgroup\$
    – Randolph
    Commented Jul 17, 2015 at 13:40
  • \$\begingroup\$ @Randolph: You're right, 1.8A it is. I misread the schematic, mea culpa. I have no clue as to why they get flaky running with 595 outputs since the transistors in the 2003 are Darlingtons, so they have huge gains and should work equally well with either the 595 or Arduino outputs. \$\endgroup\$
    – EM Fields
    Commented Jul 17, 2015 at 17:48

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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