I am attempting to use a stepper motor to rotate one of my split-flap displays. However despite the thing the motor is rotating weighing probably half a pound, it struggles to do so. It really can rotate the module at all.

Why is my motor struggling so much?

My circuit is an Arduino powered by 5V from a wall outlet, connected to a ULN2003 driver that is powered by a 12V wall outlet. The driver is connected to the stepper motor.

This is my code, it uses the Accel stepper library:

#include <MultiStepper.h>
#include <AccelStepper.h>
#include <Stepper.h>

AccelStepper stepper2(AccelStepper::FULL4WIRE, 4, 5, 6, 7);

void setup()
    pinMode(0, OUTPUT);
    pinMode(1, OUTPUT);
    pinMode(A0, OUTPUT);
    pinMode(A1, OUTPUT);
    pinMode(A2, OUTPUT);
    pinMode(A3, OUTPUT);
    pinMode(A4, OUTPUT);
    pinMode(A5, OUTPUT);
void loop()
    // Change direction at the limits
    if (stepper2.distanceToGo() == 0)

Edit: Here is the schematic, I'm sorry its terrible but I dont know how to make it better


simulate this circuit – Schematic created using CircuitLab

  • 1
    A stepper motor cannot start with the target speed if the torque is too high. You might need to accelerate it. May 28, 2021 at 9:20
  • 1
    Could be lots of things. My first guess would be you're not sharing grounds, but with no circuit diagram, it's just a guess. It's also difficult to guess how much force is required to turn the thing you're turning; the weight doesn't describe the system. May 28, 2021 at 13:01
  • Post a schematic, not a frizzy thing and calculate the required torque needed on the motor shaft. Note a schematic shows all power and ground connections. If you have a scope measure the voltage waveform at the motor connections. You are using a bipolar driver a lot of power is lost in that, about 1.4V per output pin.
    – Gil
    May 28, 2021 at 16:26
  • 1
    @DaveNewton can you explain sharing grounds May 28, 2021 at 21:55
  • 2
    The grounds need to be shared. May 29, 2021 at 16:53

1 Answer 1


The grounds needed to be shared. The driver board ground needed to be connected to the Arduino ground. Otherwise your putting 17V in and only taking 12V out. Thanks to DaveNewton for this answer. I made this change and the torque was immediately fixed!


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.