DRV8834 and Stepper motor wiring issue

Hello,

I am looking for help using this motor
Stepper Motor: Bipolar, 200 Steps/Rev, 42×38mm, 2.8V, 1.7 A/Phase

with this driver
DRV8834 Low-Voltage Stepper Motor Driver Carrier

I am using this power supply to drive the motor
Wall Power Adapter: 5VDC, 3A, 5.5×2.1mm Barrel Jack, Center-Positive

All of this is from Pololu. I am trying to drive the motor using an Arduino and the AccelStepper library.

I am able to move the motor forward and backwards and to change the speed reliably. The issue is that within minutes (2-3), the drive overheats and begins to smoke. This only happens if both he Arduino and the driver are powered. So something seems to be wrong with how I’m doing this. The driver only gets hot if everything is plugged in, but it still gets hot if I set the motor speed to zero.

This is the simple Arduino code that I am using.

// ConstantSpeed.pde // -*- mode: C++ -*- // // Shows how to run AccelStepper in the simplest, // fixed speed mode with no accelerations /// \author Mike McCauley (mikem@airspayce.com) // Copyright (C) 2009 Mike McCauley // $Id: ConstantSpeed.pde,v 1.1 2011/01/05 01:51:01 mikem Exp mikem $ #include <AccelStepper.h> AccelStepper stepper(1,3,2); // Defaults to AccelStepper::FULL4WIRE (4 pins) on 2, 3, 4, 5 void setup() { pinMode(4, OUTPUT); digitalWrite(4, HIGH); stepper.setMaxSpeed(1000); stepper.setSpeed(0); } void loop() { stepper.runSpeed(); }

The way I have it connected is the 5V 3A power supply going to VMOT and GRND. There is a 100 uF capacitor also across VMOT and GRND. The controller ground goes to the bottom left GND and 5V from the controller also goes to SLP. Two pins from the Arduino 3 goes to STEP and 4 goes to DIR. The 4 motor wires go to B2,B1,A2,A1. As long as the motor turns, does it matter exactly which goes where? Thank you for any help you can provide. We are using this to build a bank or syringe pumps for my lab. All of the pumps were laser cut by Pololu!

Here is a picture of the wiring
i1003.photobucket.com/albums/af1 … G_2434.jpg

Here is a picture of the syringe pump (just for fun)
i1003.photobucket.com/albums/af1 … G_2435.jpg

Thanks a million!
FB

Hello,

I am looking for help using this motor
Stepper Motor: Bipolar, 200 Steps/Rev, 42×38mm, 2.8V, 1.7 A/Phase

with this driver
DRV8834 Low-Voltage Stepper Motor Driver Carrier

I am using this power supply to drive the motor
Wall Power Adapter: 5VDC, 3A, 5.5×2.1mm Barrel Jack, Center-Positive

All of this is from Pololu. I am trying to drive the motor using an Arduino and the AccelStepper library.

I am able to move the motor forward and backwards and to change the speed reliably. The issue is that within minutes, the drive overheats and begins to smoke. So something seems to be wrong with how I’m doing this. The driver only gets hot if everything is plugged in, but it still gets hot if I set the motor speed to zero.

This is the simple Arduino code that I am using.

// ConstantSpeed.pde // -*- mode: C++ -*- // // Shows how to run AccelStepper in the simplest, // fixed speed mode with no accelerations /// \author Mike McCauley (mikem@airspayce.com) // Copyright (C) 2009 Mike McCauley // $Id: ConstantSpeed.pde,v 1.1 2011/01/05 01:51:01 mikem Exp mikem $ #include <AccelStepper.h> AccelStepper stepper(1,3,2); // Defaults to AccelStepper::FULL4WIRE (4 pins) on 2, 3, 4, 5 void setup() { pinMode(4, OUTPUT); digitalWrite(4, HIGH); stepper.setMaxSpeed(1000); stepper.setSpeed(0); } void loop() { stepper.runSpeed(); }

I have also set the current limit on this driver by using a voltmeter between the ground and the potentiometer set screw. I set it 850 mV, which is should be appropriate from the data sheet.

The way I have it connected is the 5V 3A power supply going to VMOT and GRND. There is a 100 uF capacitor also across VMOT and GRND. The controller ground goes to the bottom left GND and 5V from the controller also goes to SLP. Two pins from the Arduino 3 goes to STEP and 4 goes to DIR. The 4 motor wires go to B2,B1,A2,A1. As long as the motor turns, does it matter exactly which goes where? Thank you for any help you can provide. We are using this to build a bank or syringe pumps for my lab. All of the pumps were laser cut by Pololu!

Here is a picture for the wiring that I have set up and a nice picture of the pump that I had Pololu laser cut.


Thank you,
FB

Hello.

I am sorry you are having problems with that driver. Can you tell what is overheating and smoking? Does the driver still step the motor when you tell it to? How many times has it smoked? Generally electronics do not work after they have smoked once. I see some discoloring around the GND and A2 pins which could be caused by the board overheating. However, it also looks like there is a little bit around the DIR pin, which should not be a high current pin so it seems possible that the discoloring could be from soldering the headers in. Your current limit setting (1.7A) is above the maximum current we rate the drivers for sustained operation (1.5A). Also, 1.7A is past the limit of what a breadboard can really handle.

By the way, stepper motor drivers maintain the current through the coils on the motor when stopped so that the holding torque is maintained. It is not surprising that the motor and driver stays hot when the motor is not moving.

-Nathan

Hi Nathan,

Thank you a lot for the help. I’m very appreciative. I had not considered the rating of the breadboard. The motor still moves as I ask it too and it still seems to work. I just can’t drive it for more than a few 10’s of seconds without considerable cool down. Do you have any recommendations for heatsinking or a link to a product that you sell that we could put on? If we went with a much higher current rated driver from Polulu (DRV8825 Stepper Motor Driver Carrier, High Current), would we still need to heat sink it? Ultimately, we will be driving there on and off quite often for our application.

Thank you again!
FB

It sounds like your driver is overheating and shutting off. You might try lowering the current limit on your driver to see how your motor operates at a lower current. Lowering the current below the motor’s rating generally reduces the amount of torque available, but is possible this might work OK in your setup.

I do not think the thermal performance of the DRV8825 would be much different in your system and it would require a higher voltage power supply. A second option might be to use a driver with a higher current rating like our AMIS-30543 Stepper Motor Driver Carrier (though you would still need a higher voltage supply). The AMIS-30543 has a more complex interface than our other stepper drivers (that can be harder to work with), but it has some handy features like the ability to change the current limit with code (so you can try things like reducing the current when the motor is standing still).

We generally consider heatsinking and other supplementary cooling to be an advanced use of our products for users experienced in such things, so we do not have any specific recommendations for it.

-Nathan

Hi Nathan,

Thank you again for the help with this project. On a recommendation from someone else, I decided to try the DRV8825 Stepper Motor Driver Carrier, High Current and to drive the unit with a 24V power supply (14A). I soldered everything directly into a breadboard. I don’t think I’m having the same heat issues now. I do in fact think any smoke previously was likely from the underrated solderless breadboard. The driver seems to get warm, but not too bad. And I found some nice heatsinks for it so I’ll add those if I need. The issue that I see now is just that for some speeds the motor seems to oscillate wildly. I’ve tried multiple motors (we have about 6 of these pumps in the works), multiple chassis, and multiple drivers. I tend to get the same behavior. I set the current limit on the drivers using the formula Current Limit = VREF × 2. VREF should thus be 850mV correct? Here is a video of what I am seeing.

youtu.be/oLvOntIFBas

The only tips that I got for what might be causing this was that it could be a resonant frequency issue of the pump. But I kind of doubt this. Here is a link to an discussion about it on the Arduino forum if it helps.

forum.arduino.cc/index.php?topic=367521.new#new

The code that is uploaded to the arduino is

[code]#include <AccelStepper.h>
AccelStepper stepper(1, 3, 2); // Defaults to AccelStepper::FULL4WIRE (4 pins) on 2, 3, 4, 5
int microStepResolution = 1;
int numStepsPerMl = 1500 * microStepResolution; //8 revolutions for 1 ml in 10 ml syringe. 200 steps per rev
float flowRate = 8;
int stepSpeed = flowRate * (numStepsPerMl / 60); // Do not exceed 1000 steps per second.
const int trialPin = 12;
const int driverSleep = 11;
int stepPosition = 0;
int trialState = 0;
int analogInPin = A0; // select the input pin for the potentiometer
int sensorValue = 0; // variable to store the value coming from the sensor
int outputValue = 0;

void setup() {
// put your setup code here, to run once:
stepper.setMaxSpeed(800);
stepper.setSpeed(stepSpeed);
pinMode(trialPin, INPUT);
pinMode(driverSleep, OUTPUT);
pinMode(13, OUTPUT);
stepper.setCurrentPosition(0);
}

void loop() {
// put your main code here, to run repeatedly:
trialState = digitalRead(trialPin);
stepPosition = stepper.currentPosition();

if (trialState == HIGH) {
digitalWrite(13, HIGH);
digitalWrite(driverSleep, HIGH);
sensorValue = analogRead(analogInPin);
outputValue = map(sensorValue, 0, 1023, 0, 2 * stepSpeed);
stepper.setSpeed(outputValue);
stepper.runSpeed();
}

else if (trialState == LOW && stepPosition != 0)
{
digitalWrite(13, LOW);
digitalWrite(driverSleep, HIGH);
stepper.moveTo(0);
stepper.setSpeed(800);
stepper.runSpeedToPosition();
}
else
{
digitalWrite(driverSleep, LOW);
}
}

[/code]

Thank you again for the help. I am really trying to get these pumps working as we have use for so many of these in the lab. I also suspect several labs would love to make their own laser cut Pololu pumps!

Cheers,
FB

Hello.

I also suspect it is a resonance issue with the pump, but this should be easy to test. What happens if you run the same code with the stepper motor disconnected from the pump? (You could use some masking tape to help you track the rotation of the shaft.)

Another thing you might try is lowering the current limit some. As with your previous DRV8834 driver, the DRV8825 cannot deliver 1.7A per coil continuously without additional cooling, so I suggest you try lowering your current limit setting a little and see if that has any effect on the behavior. Also, have you tried different microstepping options to see if that makes any difference?

Lastly, I’m still concerned that your breadboard setup might be causing problems. I am not sure what you mean by “soldered everything directly into a breadboard”; can you post some pictures of your new setup?

-Nathan