# Ballpark stepper acceleration values

Hi,

I'm programming an acceleration/ deceleration profile for a Nema23 stepper motor, but am unsure of what rate of acceleration I should be using.

The stepper will be performing many small discrete movements in quick succession as it forms a traverse mechanism for laying wire as it tracks the rotation of a bobbin on an independent coil winder. Each movement will be equal to 1/10th the wire diameter which is the resolution of the rotary encoder being used on the rotating bobbin.

Each turn of the stepper will move the wire guide 2mm. The minimum and maximum wire diameters I'm likely to use are 0.063mm and 1.6 mm respectively, and the bobbin will be rotating at about 500rpm at maximum speed.

I have micro-stepping options, 10x would be ideal as it should allow wire resolution to ~3 dp.

This would mean that each stepper rotation would require 2000 pulses so 1000 pulses per mm of traverse.

This gives a range of 6.3 step signals to 160 micro step signals per 10th rotation of the bobbin depending on wire diameter so mean speed o microstep frequency would need to vary between
~ 525 hz and 13.3Khz.

Does anyone have any ballpark figures for typical acceleration rates and starting speeds for Nema23 stepper motors?

Thanks,

Jonathan

NEMA 23 specifies ONLY the motor's mounting face dimensions, NOTHING about it's electrical characteristics such as voltage, current, resistance, inductance, torque, steps per revolution, etc. which you need to know. Consult the manufacturer's datasheet for your motor.

JonnoWhite:
I'm programming an acceleration/ deceleration profile for a Nema23 stepper motor, but am unsure of what rate of acceleration I should be using.

Do some experiments starting with a low rate of acceleration.

If your objective is to use the highest possible rate of acceleration then your experiments should increase the acceleration until the motor starts missing steps and then back-off about 20% or 30%. And be sure to do the tests with the motor under load.

...R

Hi,

Thanks for the responses. I do fully intend to tweak this to determine the values, but can’t do this at the moment as I need to rebuild the power supply.

If I can get a ballpark figure I’ll be able to determine in advance if I need to generate signals using timer overflow / direct port manipulation etc.

Ultimately the acceleration profile should be fine for all wire diameters, so I could just use pointers to a lookup table if I have program space rather than calculating on the fly.

The exact programming approach will be determined by the motor, and I was hoping to determine the best coding approach before coding as I want to get the code underway before I’m able to test the motor.

Datasheet for the motor attached lists holding torque of 189N cm-1, The data-sheet chart shows half stepping torque constant(ish) at ~ 140N cm-1 between 300pps and 1Kpps.
Torque appears to drop to about half by 3.5Kpps in a fairly linear fashion.

Would I be correct to assume that starting speed would need to be at least as slow as 1Kpps if half stepping, and maximum working speed would probably approximate to 3.5Kpps?

10th stepping might reduce this torque somewhat from a step profile with minimum and maximum micro-step pulses of 5K and 17.5Khz - so max speed is about 8.75 rps or 525rpm.

(Sorry I got the frequency wrong in my initial post, but have since corrected it)
)

So I suppose I should now use this to work out the maximum required acceleration/deceleration within these minimum and maximum speed bounds to achieve the required maximum average step rate and see if this works, if not I might need to get a different motor or look into gearing or a different drive system - currently using linear rails and a screw drive.

Thanks,

Jonathan

Stepper_specs_SY57STH76-2804A.pdf (47.7 KB)

JonnoWhite:
If I can get a ballpark figure I'll be able to determine in advance if I need to generate signals using timer overflow / direct port manipulation etc.

For that decision you need an estimate of the maximum speed - the number of pulses per second. Acceleration is a secondary consideration, although it will be easiest to implement with a flexible timing system.

A 16MHz Arduino is probably too slow to produce 125k pulses per second and still be able to do other things.

...R

Thanks Robin,

Max (mean) pulse frequency would actually need to be about 17Khz - I put wrong values in original post and have since updated them.

This seams achievable as my lowest micro-pulse delay at maximum speed is ~ 60us assuming a 4us pulse.

If I generate this using timer overflow interrupts, then I assume it will be relatively unaffected by the external interrupts I'm using to track the Bobbin rotation which will be triggering ~ every 12ms.

Each traverse movement should fit between the external triggers providing I don't exceed 500rpm for the bobbin.

JonnoWhite:
If I generate this using timer overflow interrupts, then I assume it will be relatively unaffected by the external interrupts I'm using to track the Bobbin rotation which will be triggering ~ every 12ms.

I agree. However I have no experience with a DUE so I can't say whether it could generate the pulses without using a Timer. I suspect it would be easier to write code to accelerate and decelerate without the Timer.

Each traverse movement should fit between the external triggers providing I don't exceed 500rpm for the bobbin.