Big Easy Driver not stepping motor

I’m using a ROB-10846 stepper motor driven by a ROB-12859 Big Easy Driver, which is connected to an arduino MKR WiFi 1010. When on, the motor just vibrates: it holds it’s current position, but the driver only draws ~.25 amps @ 24v (both with a dedicated power supply, and with a benchtop variable power supply I’ve used in debugging) and shaft does not rotate at all.

The vibration does match the step frequency I tell the arduino to signal, and I’ve verified the arduino output using an oscilloscope.

If I bring any of the MS pins HIGH, the motor does nothing (doesn’t resist me rotating it by hand, and the driver doesn’t draw any more current than if the motor is unplugged entirely).

I’ve checked my wiring configuration and verified that the coils in the motor are paired correctly and searched around about this a lot, but nothing has worked. I haven’t done anything to kill the driver that I can think of (like plugging/unplugging the motor while the driver is trying to step the motor), but I’m still getting the impression it is dead. Is there anything in particular I can check to see if it is still functional?

The arduino code is below, and I’ve also attached a picture of the (admittedly very simple) wiring. Any insight would be really appreciated!

#include <SimpleTimer.h>

//Declare pin functions on Arduino
#define EN  6 //enable. LOW = enabled
#define MS1 7 //microstep select 1. truth table is online for these 3.
#define MS2 8 //microstep select 2. they are used to select microstep resolution.
#define MS3 9 //microstep select 3. 16th step is H-H-H, 8th is H-H-L.
#define rst 10 //rest. LOW = step commands ignored.
#define slp 11 //sleep. LOW = board sleeps. more basic rest.
#define dir 12 //direction. LOW = foward.
#define stp 13 //step. going from LOW to HIGH triggers one step. size/direction chosen below.


#define STEP_RATE 500 //Hz
SimpleTimer timer;

void setup() {
  Serial.begin(9600);
  //set pins to output
  pinMode(stp, OUTPUT);
  pinMode(dir, OUTPUT);
  pinMode(MS1, OUTPUT);
  pinMode(MS2, OUTPUT);
  pinMode(MS3, OUTPUT);
  pinMode(EN, OUTPUT);
  pinMode(slp, OUTPUT);
  pinMode(rst, OUTPUT);
  resetPins();
  timer.setInterval(1000/STEP_RATE, stepMotor);
}

void loop() {
  timer.run(); //runs stepMotor() on timer
}

void stepMotor(){
  digitalWrite(stp, HIGH);
  delay(1);
  digitalWrite(stp,LOW);
  delay(1);
  Serial.println("Step");
}

void resetPins(){
  digitalWrite(stp, LOW); //step
  digitalWrite(dir, LOW); //direction
  digitalWrite(MS1, LOW); //microstepping
  digitalWrite(MS2, LOW); //microstepping
  digitalWrite(MS3, LOW); //microstepping
  digitalWrite(EN, LOW); //keep low for FETS to be enabled
  digitalWrite(slp, HIGH); //keep high for FETS to be enabled
  digitalWrite(rst, HIGH); //keep high for FETS to be enabled
  delay(2); //setting sleep and rest high needs at least 1ms delay
}

Try changing your delays to 10 or 100 and see if that gets the motor running. You might be trying to move the motor faster than it’s physically able to from a stand still.

Hi onyxicarus,

TS-Chris has a good point, try his suggestion as well but I have some other information to expand on what may be the issue here.

This behavior usually means the motor is not receiving enough current to move. What are the specs for the power supply you are using to drive the motor? Try adjusting the trim-pot on the board to increase the current to the motor. Also, the MKR 1010 is a 3.3V logic board so you will need to adjust the logic level jumper on the Big Easy Driver if you have not already done so. We show that jumper in detail in the [Hardware Overview section of the Hookup Guide for the Big Easy Driver.

If that does not work, let us know and we can continue troubleshooting.](https://learn.sparkfun.com/tutorials/big-easy-driver-hookup-guide#hardware-overview)

Thank you all for the suggestions! I tried setting the delays to both 10ms and 100ms, neither of which helped.

The power supply for this project is a 24v, 2A supply, you can [see here. I’ve also tried using a lab benchtop power supply in case the first one was current limiting the driver.

With the potentiometer adjusted to allow for maxiumum current, the driver never draws more than .4A, regardless of which PSU it is connected to.

As for the VCC for the arduino, the jumper is not bridged (so, set to 5v), but I have VCC from the driver connected to Vin on the arduino, which then uses its own voltage regulator to step it down to 3.3v.](https://www.digikey.com/product-detail/en/delta-electronics/DRP024V060W1AZ/603-1225-ND/2236868)

Hello onyxicarus.

Lets try a super simple setup just as a sanity check. For this, we only need power, the board, the motor and two wires connected between the Big Easy and your Arduino. We don’t want any other wires connected between the Big Easy and your Arduino other than between GND and D6. (See the attached picture for a hookup diagram)


Set the potentiometer on the Big Easy at about 30% to give the motor a bit of current but not too much. It should point at the ‘CUR ADJ’ silk on the board. I don’t have a MKR1010 to test with but I hooked the driver up to an Uno and the code below should give you about 15 RPM of rotation from the stepper.

Upload the simple sketch below and see if that gets the motor turning.

void setup() {
  // put your setup code here, to run once:
pinMode(6, OUTPUT);
}

void loop() {
  // put your main code here, to run repeatedly:
digitalWrite(6, HIGH);
delayMicroseconds(250);
digitalWrite(6, LOW);
delayMicroseconds(250);
}

I have used that exact setup (powering my arduino via USB) with the same result.

Interestingly, after about 10 seconds, the motor stops vibrating (and the driver’s current draw drops to .013a). I’m assuming that’s a bad sign.

OK, that does sound like a bad board then and we will need to get you a replacement.

If you purchased this directly from us, please fill out the form on the right hand side of [this page to start the return/RMA process. Don’t forget to enter your SparkFun order or invoice number in the form and if you know the part number, enter that as well. In the Why do you want an RMA? section, enter the URL for this forum post so the returns processor can see what troubleshooting steps have been taken.

If you purchased the part from a distributor of ours, you will need to contact them for a replacement.](Return Policy - SparkFun Electronics)

The plot continues to thicken. I got a new Big Easy Driver and connected it to the same motor and power supply with an arduino UNO (actually an elegoo UNO R3) running the same code. The motor was directly soldered to the board this time, in case one of the pin connections had come loose last time and been the culprit. The setup worked perfectly until I adjusted the current limiter pot.

After doing so, the motor and driver exhibited the same behavior as before. Any idea why this might kill a Big Easy Driver?

Hmm, my first guess is there is something with the power supply that is causing the issue. The datasheet for the power supply you linked mentions an overload and overcurrent protection and that may be tripping when you adjust the current potentiometer. Even though 2.5A should be more than enough to drive the motor, it still may be tripping one of those protections which will damage the Big Easy Driver.

Do you have any other options for powering the Big Easy Driver? Also, can you take a few more photos of the top and bottom of your Big Easy Driver as well as the circuit you have it in and attach it to your reply? That might help us identify anything else that may be causing the issue here.