Go Down

Topic: Stepper Motor Stutter Low RPM (DRV8871) (Read 563 times) previous topic - next topic

lingo124

Mar 13, 2018, 10:05 am Last Edit: Mar 13, 2018, 10:11 am by lingo124
My motor is behaving weirdly. I am using the stepper.h library to produce the problem (accelstepper will not work at all because it doesnt make it past the low rpm stutter, regardless of acceleration). The motor stutters around 40-50rpm and badly at 80-110rpm. It even moves backwards sometimes within the 80-110rpm range. I have no loading on the motors at the moment except a clothes pin, which I don't really think counts. I have seen mid band resonance brought up for motor stuttering, but they seem to indicate this issue at higher rpm ranges than what I am experiencing. Oddly, I can run the motor from 120-900 rpm with no problems. Also, I don't think I am running into a thermal shutdown situation, as I have a blower cooling both the driver chips as well as the motor. I am reading up to 115deg F on the chip with an IR.

What am I missing here? If anybody could help, that would be great. I've posted my code below.

My setup is as follows:

Controller
Arduino Nano

Driver
2x DRV8871

Power Supply
40V
10A

Motor - 17HS16-2004S1
nema 17
bipolar
2A / phase
1.10 ohm phase resistance


Code: [Select]
#include <Stepper.h>

// A 200-step motor connected on pins 4-7
Stepper stepper(200, 4,5,6,7);

void setup()
{

}

void loop()
{
  for(int count=1; count < 120; count++) {
    //Serial.println(count);
    stepper.setSpeed(count);
    stepper.step(10);
  }
  for(int count=120; count > 0; count--) {
    //Serial.println(count);
    stepper.setSpeed(count);
    stepper.step(10);
  }
  delay(60000);
}




Robin2

You are using DC motor drivers. You should use a specialized stepper driver for that motor. If you apply 40v to a 1.1 ohm coil without a current limiting circuit you will just get smoke. Your stutter may be caused by your drivers overloading and shutting down.

As your motor needs 2 amps you should be looking for a stepper driver than can provide at least 3 amps. Some of the drivers using TB65xx or TB66xx chips would probably be suitable.

...R
Stepper Motor Basics
Simple Stepper Code
Two or three hours spent thinking and reading documentation solves most programming problems.

lingo124

#2
Mar 13, 2018, 07:50 pm Last Edit: Mar 13, 2018, 08:06 pm by lingo124
I followed this guide:
https://learn.adafruit.com/current-limiting-stepper-driver-with-drv8871/overview

On the datasheet for the DRV8871 it also says each chip can drive either a DC motor or a single winding of a stepper motor, and is a current limited chopper (I left it set at 2A/chip).

There was no smoke even at motor idle. I was monitoring the temperature of the chips throughout and they stayed between 80F (ambient) to approximately 120F Max. Based on the datasheet, the Tj max (where the thermal shutdown is triggered) should be about 300F, so even with the 120F surface temperature I think it should be fine.

If thermal shutdown due to overloading were to be the culprit, shouldn't I have this issue at all RPMs once the chip has reached the shutdown temperature? But I can operate the motor at 1-30 rpm indefinitely (10 minutes+) or at 150+ rpm (10 minutes+), without loss of steps or any stuttering like this. However, if I start the motor at ~50 or ~100 rpm, even with the chips cold at that instant, I have the issue popping up immediately.

I will purchase an alternative driver and test that out, but in the meantime I want to figure out could the motor be at fault? I know stepper motors are pretty simple compared to control boards, but is there any common defect during manufacturing the stepper motor itself that could cause this? Trying to avoid going through a bunch of different driver boards to find that it was the motor that was messed up.

You are using DC motor drivers. You should use a specialized stepper driver for that motor. If you apply 40v to a 1.1 ohm coil without a current limiting circuit you will just get smoke. Your stutter may be caused by your drivers overloading and shutting down.

As your motor needs 2 amps you should be looking for a stepper driver than can provide at least 3 amps. Some of the drivers using TB65xx or TB66xx chips would probably be suitable.

...R
Stepper Motor Basics
Simple Stepper Code


jremington

#3
Mar 13, 2018, 08:40 pm Last Edit: Mar 13, 2018, 08:47 pm by jremington
Did you solder all wires to the motor driver? Breadboard connections cannot handle high currents.

Robin2

I followed this guide:
I still don't believe that driver is anything like as sophisticated as a specialized stepper motor driver.

...R
Two or three hours spent thinking and reading documentation solves most programming problems.

lingo124

#5
Mar 13, 2018, 10:32 pm Last Edit: Mar 13, 2018, 10:46 pm by lingo124
Good point... I'm using the breadboard rails to distribute power to the 2 drivers. I will wire up the connections directly and give it a try.

Did you solder all wires to the motor driver? Breadboard connections cannot handle high currents.
I have a DM542T driver coming in a couple of days. Will test and see what happens. Trying to avoid jumping to a geckodrive... although those are great.

I still don't believe that driver is anything like as sophisticated as a specialized stepper motor driver.

...R

MarkT

You have strong resonances on the motor - you either need to mechanically damp those resonances
or use microstepping to reduce their severity, or both.

Use a stepper driver with microstepping, much much more satisfactory.
[ I will NOT respond to personal messages, I WILL delete them, use the forum please ]

lingo124

So I tested the DM542T and it does eliminate the problem it seems, at a microstep of 1/2.

Now I've run into a new problem: I can't get high speed operation because of the limits of the UNO running accelstepper. Based on what I'm reading, there is really no other way to get any more speed out of accelstepper without upgrading to some faster chip? Or does somebody know some way to get some more steps out of the UNO?


Robin2

Or does somebody know some way to get some more steps out of the UNO?
I believe people have got high step rates with the simple code in my Reply #1.

If you need acceleration it is not difficult to implement - as illustrated here.

...R
Two or three hours spent thinking and reading documentation solves most programming problems.

lingo124

Just an update. Good news, I finally got something working with acceleration. I designed the acceleration based on https://www.eetimes.com/document.asp?doc_id=1276928&page_number=1, which just uses addition and subtraction during speed updates. Getting 4000 steps/second no problem, but still testing for any random bugs/problems.

Robin2

Good news, I finally got something working with acceleration. I designed the acceleration based on
Glad to hear you have it working. I would be interested to see your working program.

From a brief look at your link it does not seem to be fundamentally different from the code in my link in Reply #8

...R
Two or three hours spent thinking and reading documentation solves most programming problems.

MarkT

BTW DC motor drivers are voltage drivers and not suitable for low impedance steppers whatever
the marketing department's contribution to the datasheet would have you believe - and pretty much
everyone uses low impedance steppers these days because they are higher performance (fast) and cheaper.

You sometimes see a high impedance NEMA17 stepper (30 to 40 ohms is typical), and these can be
voltage driven from 12V but at a max useful speed of perhaps 100 to 150rpm.

Low impedance stepper is basically anything from about 5 or 10 ohms down, and these need current
drive from a chopper circuit, as used in nearly all the stepper driver chips out there (DRV8825, A4988 etc)
[ I will NOT respond to personal messages, I WILL delete them, use the forum please ]

Go Up