I purchased 2 MP6500 boards to control two NEMA17 Stepper motors. One of them works perfectly. The other admits some current flow to the motor (there is some holding torque present) but has problems actually stepping. I tested each of them in the exact same configuration, switched out all my wires, and am fairly certain this is a board-specific issue.

That being the case, what can I do to try and get the board working, if anything?


Can you post some pictures of your drivers and your setup that show all of your connections? We sell the MP6500 in two configurations, one for potentiometer current control and one for digital current control. Which one do you have?

Also, can you post information about your power supply and stepper motors, like datasheets or links to where you got them?

- Patrick

I purchased the model with digital current control.

The motors are being supplied through the board using 4 9v batteries in parallel. I am using just one battery for testing purposes. This is my sketch of the circuit: CCF_000095.pdf (293.0 KB)

I tried to make it as clear as possible. The board I believe to be defective is marked with blue tape.

This is the expected behavior (note the blur on the blue tape attached to the motor)

This is what happens when I switch out the boards (nothing moves, but the stepper motor is resistant)

The batteries are from here.

And the stepper motors are from here.

The board itself is an Adafruit HUZZAH32 using the ESP32 chip as the MCU. The green and blue wires in the images are connected to GPIO pins 33 and 15. The white wire is connected to the 3.3v pin and the black to GND.

There is a 100uF capacitor between the battery wires.

The code I am using to step the motor:

#define STEP_PIN2 33
#define DIR_PIN2 15

#define STEP_PIN 13
#define DIR_PIN 14

bool dirHigh;

void setup()
dirHigh = true;
//digitalWrite(DIR_PIN, LOW);
//digitalWrite(STEP_PIN, LOW);
digitalWrite(DIR_PIN2, LOW);
digitalWrite(STEP_PIN2, LOW);
//pinMode(DIR_PIN, OUTPUT);
//pinMode(STEP_PIN, OUTPUT);
pinMode(DIR_PIN2, OUTPUT);

void loop()
// Trigger the motor to take one step.
//digitalWrite(STEP_PIN, HIGH);
digitalWrite(STEP_PIN2, HIGH);
//digitalWrite(STEP_PIN, LOW);
digitalWrite(STEP_PIN2, LOW);

The intent is to have both motors running of course, but I have commented out or omitted irrelevant lines for this setup.

Can you try monitoring the nFAULT pin on the malfunctioning driver and elaborate more on what you mean when you say your driver “has trouble stepping”? A video might be helpful for that. The forum does not allow users to post very large videos, but it does work well with videos linked from other sites (like YouTube or Vimeo). Does running your driver in a different step mode or raising the current limit to 1A make a difference?

Also, if you have access to an oscilloscope, I would suggest using it to monitor your setup and see what is going on.

- Patrick

How should I monitor nFAULT? Would using an analog input and serial monitor in the Arduino IDE be sufficient? I do not own an oscilloscope.

I mean that it does not step at all. It energizes with plenty of resistance but aside from some humming and light vibration it is otherwise entirely inert.


#define CURR_PIN 13

and in void_setup

digitalWrite(CURR_PIN, LOW)

Produced a very high pitched whine in the motor and no motion. Does VREF indicate anything on the digital current control version of the board? The VREF at that time was 0.91V which seems too high as the graphs on the MP6500 page indicate that would set the current limit above the 1A that the steppers are rated for. However, on the functioning board with no adjustment to the current limit it is also 0.91V, and a smaller whine that I’ve just noticed is also present. There is still motion.

Oddly (?) the whine increases in pitch while measuring the VREF on both boards.

Shifting the high value over to the MS1 and adding a wire to act as a low on MS2 pin still yields no motion. Switching to the functioning board produces motion at what looks to be half the RPM as expected.

Connecting nFAULT to an analog input using the and serial monitor would work, but just probing it with a multimeter while running your test program probably would be okay too. Mainly, we are interested in seeing if it ever drives low when the driver tries to step indicating the over-current protection, over-voltage protection, thermal shutdown, or under-voltage lockout protection is kicking in. However, since it seems like your motor is remaining energized when you try to make it step, I do not think that is the problem.

We test every board we make, so while your unit was probably working at some point, it seems like it is now damaged. Unfortunately, it is easy to damage electronics like this in a variety of ways, including accidentally applying stray voltages or even something as simple as electrostatic discharge (ESD).

If you send an email to with your order information and a reference to this thread, we should be able to help you out with a replacement.

By the way, the VREF pin will not indicate the current limit on the digital current control version of the MP6500 the same way it does on the potentiometer current control version.

- Patrick