Spark Core and DRV8825 stepper driver

Hey guys,

I hooked up my Nema17 (42BYGHW811) stepper motors to the DRV8825 driver, set the appropriate current limit. With my Arduino Uno R3 everything works just fine.

When I try to hook this setup to my Spark Core (exactly the same wiring) nothing really happens. I’m using the simple stepper demo code that is provided on the forum.

I even can measure the same Vref voltage on the Arduino and my SparkCore setup. The only difference I’m experiencing is, that on the SparkCore setup the driver gets very hot almost in a very short time (<10s). And when I put my finger on the DRV8825 chip (to get an inkling of the temp) the stepper motor makes a little step … It kind of bounces forth and back very quickly once.

Any ideas? :confused:

Since I don’t know what version I have, heres a close up picture

@newclear, which DRV8825 board are you using? It is difficult to help without more details on that and the Arduino library you are trying to use. :smile:

Woaaa, sorry!!

I’m using the Pololu DRV8825 stepper driver. ( )

And I wired it to the spark just like it is shown in the wiring diagram. It works fine on the arduino but not with the spark :confused:

Here is my particular setup:

Sounds like you may be stepping too fast. Can you share the code you are using? The core runs pretty quick and may make the stepper skip steps and back emf will cause the driver to get extremely hot. Try adding some delays to test that out.


Hey Hootie81,

thanks for your reply. I’ve tested it, but it didn’t work out. So I’m using a sample code from the official Arduino Forums and prolonged the delay between the steps, but the motor didn’t step and the driver is getting hot as hell in a very short time. :confused:

// testing a stepper motor with a Pololu A4988 driver board or equivalent
// on an Uno the onboard led will flash with each step
// this version uses delay() to manage timing

byte directionPin = A4;
byte stepPin = A5;
int numberOfSteps = 100;
byte ledPin = D7;
int pulseWidthMicros = 1000;  // microseconds
int millisbetweenSteps = 1000; // milliseconds

void setup() { 

  Serial.println("Starting StepperTest");
  digitalWrite(ledPin, LOW);

  pinMode(directionPin, OUTPUT);
  pinMode(stepPin, OUTPUT);
  pinMode(ledPin, OUTPUT);
  digitalWrite(directionPin, HIGH);
  for(int n = 0; n < numberOfSteps; n++) {
    digitalWrite(stepPin, HIGH);
    delayMicroseconds(pulseWidthMicros); // this line is probably unnecessary
    digitalWrite(stepPin, LOW);
    digitalWrite(ledPin, !digitalRead(ledPin));

  digitalWrite(directionPin, LOW);
  for(int n = 0; n < numberOfSteps; n++) {
    digitalWrite(stepPin, HIGH);
    // delayMicroseconds(pulseWidthMicros); // probably not needed
    digitalWrite(stepPin, LOW);
    digitalWrite(ledPin, !digitalRead(ledPin));

void loop() { 


Okay setting the pulseWidthMicros to 10 solved the problem for me. But anyway it works now BUT I’d like to know where the fast temperature increase is normal? In 10-20 seconds i can measure temperature peaks up to 70 degree celsius at the DRV8825 chip. In the final system I need the drivers to run for 10-30 minutes. Right now I have no cooling installed (but I will cool the drivers with passive + active cooling).

I’m so confused because the Arduino setup with those drivers is soo much cooler. Any ideas? Is it somehow related to the faster clock speed of the Spark?

As per my experience with these things the problem is looking into your code you must check it. Also you must check the driver compatibility.
Can you please tell me the specifications of the motor driver you are using?
Also can you please tell me the specifications of your servo motor?
Also what is the function of the DRV8825 chip?

assembling pcb