Go Down

Topic: Stepper Motor Driving techniques (Read 896 times) previous topic - next topic

dev_000

Hey Everyone,

It feels great to be back. I used to be an active member on this forum few years ago, when I was in college. Kind-off dropped off from the forum for a while. When I came back, got to know that my account has been removed and I had to re-register(That's a shame). A quick run-through the forum and its good to see a lot of the senior members from back-then are still active almost 8-9 years in :D

Anyways, enough chit-chat. Coming to the problem.

I am building a X-Y gantry with stepper motors. I am using a DRV8825 from TI to drive the stepper motors. The build was successful and gantry is working fine. Reading up a bit more into stepper motors, I came across this article, which shows the acceleration deceleration mode of driving a stepper motor.

I am currently using pulses with fixed pulse width and time delay between the pulses to control the steps of the motor and its moving at a constant speed. So my question is, is there a reason why we would want to use a linear speed ramp in a motor application if the application doesn't demand it?  Meaning, if its a X-Y gantry motion and I can move point A to Point B with the normal constant pulsing, why would I want to use the acceleration-constant speed-deceleration mode(Lets say, by using AccelStepper Library)?

Is one of these methods better than the other? In what specific cases would you pick one over the other?

I have seen this video. https://youtu.be/JzR6FV-sdH4?t=931 in which he tests both the above methods. But results are inconclusive because his testing rig is not that great. (Although he says accuracy is better in the normal pulsing mode)

I get the aesthetic motor motion feel of acceleration-constant speed-deceleration mode. Motor motion looks appealing. Apart from that, are there any benefits?

I went quickly went through the Marlin firmware in the opensource 3D printer Prusa i3. It seems that they are also using acceleration-constant speed-deceleration mode. Is there any particular reason for this?


Is there any harm in driving the motor in the usual pulsing with a constant speed?


Hoping you guys can help clear this up.
Thanks in advance

Couple of more Application Notes on the acceleration model for the more curios readers [1] [2]

Robin2

is there a reason why we would want to use a linear speed ramp in a motor application if the application doesn't demand it?
My answer is "if it works, don't fix it".

Acceleration may make the movement smoother and it may be essential if you need to move at higher speeds without risking missed steps.

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

RWTH_MASCHI

its also good to overcome given inertia of your model. high masses only can be accelerated slowly.

dev_000

Acceleration may make the movement smoother and it may be essential if you need to move at higher speeds without risking missed steps.

How high of a speed are we talking about? I know its relative but the motor which I am using doesn't come with a maximum rated speed listed. Datasheet is attached.

Any particular reasoning behind it being used in the 3D printer industry(despite the code complexity it adds)?

Robin2

How high of a speed are we talking about? I know its relative but the motor which I am using doesn't come with a maximum rated speed listed. Datasheet is attached
It's not a function of the motor on its own. If the motor is moving a load and tries to jump straight to some speed (which could be low if the load is big) it may miss steps whereas if it started at a slower step rate it may be able to get the load moving without missing steps. The same is true in reverse when the motor tries to bring a load to a standstill.

From what you told us in your Original Post your motor has enough torque to be able to jump straight to your chosen speed with the load that your project imposes.

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

dev_000

From what you told us in your Original Post your motor has enough torque to be able to jump straight to your chosen speed with the load that your project imposes.
It does that fine. So I guess I wouldn't need to do the accel/decel mode.

Any other reason(for information sake), apart from potential starting slippages somebody might want to use that form of driving?   

MarkT

Larger stepper motors have enough inertia in the rotor (even excluding the load), that ramping is
_essential_ to working at any but very low speeds.

Tiny stepper motors its not so important - moment of intertia goes up with the 5th power of motor
dimension(*), torque with the 3rd power, thus you need to accelerate 4 times slower for a motor twice
the size, roughly speaking.  That 5th power dependency means that the behaviour of tiny motors is
very different from big motors.

(*) assuming same shape.  Long thin motors have much less inertia, which is why industrial
servomotors tend to be that shape.
[ I will NOT respond to personal messages, I WILL delete them, use the forum please ]

dev_000

Larger stepper motors have enough inertia in the rotor (even excluding the load), that ramping is
_essential_ to working at any but very low speeds.

Tiny stepper motors its not so important - moment of intertia ....
If so, any reason why desktop 3D printers usually use them? I would consider those NEMA 17 stepper motors driving 3D printer axes load sizes to be probably in the small/tiny category compared to industrial ones

MarkT

No, NEMA17 is not tiny.  Tiny is 6mm diameter auto-focus motors from camera lenses,  they can
jump to max speed without ramping, but your NEMA17 cannot get to a high speed instantly.

Motor specifications include the rotor MoI and the torque/speed curves, so you can roughly figure
out the max acceleration any particular motor can handle, but in practice you measure this (partly
because the load adds MoI and partly because the difference between theory and practice is larger
in practice than it is in theory(!)
[ I will NOT respond to personal messages, I WILL delete them, use the forum please ]

Robin2

It does that fine. So I guess I wouldn't need to do the accel/decel mode.
If you can write a version of your program to make the motor go faster without damaging your project you probably find out fairly quickly where acceleration becomes important.

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

dev_000

If you can write a version of your program to make the motor go faster without damaging your project you probably find out fairly quickly where acceleration becomes important.
Meaning there would be slippages? Is it actually harmful for the motors?

Robin2

#11
Dec 08, 2017, 07:17 pm Last Edit: Dec 08, 2017, 07:17 pm by Robin2
Is it actually harmful for the motors?
Not as far as I know. Certainly not for a short period of time.

I was thinking more of the higher speeds damaging some other part of your project.

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

dev_000

Thanks for all the input you guys.

Go Up