Go Down

Topic: Need super fast stepper motor/driver (Read 6582 times) previous topic - next topic

nspeters

I'm currently using a AMIS-305421 stepper motor driver with 24 volt power supply.  My stepper motor is 200 steps (1.8 degree per step).  The best I have been able to get for speed is 800 micro seconds per step (0.8 milliseconds).  I am running this in full step mode.  This is not quite fast enough for my application.  The driver I am using only supports 30V max, although honestly increasing the supply voltage from 12v to 24v didn't seem to increase the speed by nearly as much as I was expecting (maybe by 200 micro seconds at most).  Can stepper motors be driven faster than this?  If so, what do I need to do to make that happen?  What motors/drivers should I use?

-Nathan

charlie_smith87


I'm currently using a AMIS-305421 stepper motor driver with 24 volt power supply.  My stepper motor is 200 steps (1.8 degree per step).  The best I have been able to get for speed is 800 micro seconds per step (0.8 milliseconds).  I am running this in full step mode.  This is not quite fast enough for my application.  The driver I am using only supports 30V max, although honestly increasing the supply voltage from 12v to 24v didn't seem to increase the speed by nearly as much as I was expecting (maybe by 200 micro seconds at most).  Can stepper motors be driven faster than this?  If so, what do I need to do to make that happen?  What motors/drivers should I use?

-Nathan


There is an external clock input for the AMIS?30542 controller, maybe you can "overclock" it, But first you should determine the the weakest link in the chain, what is the slowest part of the system is it the controller logic, the sensor inputs or the actual motor configuration.

I've never used a stepper motor in my life so take my comments with a pinch of salt, I did however briefly work in industry that used robotics and transfer lines that used stepper motors and I get the impression that it can often be the logic and programming side that can slow things down, other times the physical limitations of the motor.

nspeters

I am clocking it with a digital output pin of an arduino uno.  My code looks something like this (I'm doing this from memory, so there could be mistakes).  Any faster than that and the motor just vibrates.

void loop() {
digitalWrite(10,HIGH);
delayMicroseconds(400);
digitalWrite(10,LOW);
delayMicroseconds(400);
}

Robin2

Perhaps you have to start the motor moving and then increase the pulse frequency (and decelerate before you reach your intended position)?

I presume the motor should be capable of several hundred rpm - 600 rpm = 10 rps = 2000 steps/sec.

I am interested to hear more as I am about to order some steppers.

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

nspeters

I've tried ramping up the speed, which actually does sort of work, but then it ends up overshooting it's stopping position.  I have not tried slowing it down instead of stopping abruptly.  I will give that a try, but I don't know if that is going to cause problems, because I'm actually trying to use the stepper motor to throw things.  If the motor is still rotating during the throw, that might mess up the throw.

joemcder

Quote
I am running this in full step mode.

Have you tried micro-stepping?  It often yields superior results.

Quote
I'm actually trying to use the stepper motor to throw things

Why not use a regular DC motor?  I do not understand the motive for using a stepper.

MarkT

You have to use microstepping or damping otherwise resonance will drop you out of step
really easily.  Try 8x or 16x microstepping and see if you get more RPM.   What rpm are
you wanting to achieve BTW?

What are the specs of the motor?
[ I will NOT respond to personal messages, I WILL delete them, use the forum please ]

Tom Carpenter

#7
Aug 20, 2013, 12:19 am Last Edit: Aug 20, 2013, 12:25 am by Tom Carpenter Reason: 1
It depends on the size of the motor. Larger motors tend to be slower. Also, the top speed drops sharply if you add any sort of load.
For example I have a Nema14 motor capable of 18000 steps per second when not loaded (Possibly more, but the motor driver I was using couldn't keep up). As soon as I added any sort of load, even a scrap of paper, that speed dropped by half.

If you need more speed, don't use micro-stepping. I have a very loaded stepper motor which can get to 300RPM when full stepping (with a 0.5kg ring attached to it), but can barely get to 200RPM when half stepping (and even less for 1/4step).
Micro-stepping is good for low speeds as it means the rotor doesn't have to jump as far with each step giving you a smoother ride, but it reduces the torque as current is limited.
Full stepping is awful for low speeds as it ends up sounding like a broken washing machine. But for high speeds you need the higher current to counter filtering affects of the motor coils (Inductor=RL circuit).
~Tom~

dc42


I've tried ramping up the speed, which actually does sort of work, but then it ends up overshooting it's stopping position.  I have not tried slowing it down instead of stopping abruptly.


That is exactly what you need to do. Because of the inertia of the stepper motor and whatever you are driving with it, the only way you will get high step speeds is to accelerate and decelerate it gradually.
Formal verification of safety-critical software, software development, and electronic design and prototyping. See http://www.eschertech.com. Please do not ask for unpaid help via PM, use the forum.

MarkT


It depends on the size of the motor. Larger motors tend to be slower.

IMO unipolar = hopeless,
bipolar+chopper:  low inductance windings = faster, high inductance windings = slow, high supply voltage = fast, low supply voltage = slow. 

Larger motors tend to have higher winding inductance, all others things being equal, due to the amount of steel, but
two motors of different size with identical winding current + inductance ought to handle pretty similarly.  For high performance motors this tends to mean 1 ohm windings for NEMA23, 0.5 ohm for NEMA34 are the norm.

Quote

For example I have a Nema14 motor capable of 18000 steps per second when not loaded (Possibly more, but the motor driver I was using couldn't keep up). As soon as I added any sort of load, even a scrap of paper, that speed dropped by half.

If you need more speed, don't use micro-stepping. I have a very loaded stepper motor which can get to 300RPM when full stepping (with a 0.5kg ring attached to it), but can barely get to 200RPM when half stepping (and even less for 1/4step).
Micro-stepping is good for low speeds as it means the rotor doesn't have to jump as far with each step giving you a smoother ride, but it reduces the torque as current is limited.
Full stepping is awful for low speeds as it ends up sounding like a broken washing machine. But for high speeds you need the higher current to counter filtering affects of the motor coils (Inductor=RL circuit).


If you need speed, performance and low vibration you'd go for bipolar chopper drive from a high
voltage supply and microstepping...  The main effect of microstepping is reduced vibration, greater resistance
to resonant mis-stepping and improved accuracy (if lightly loaded).  Of course if you are close to the torque limit
then things are very sensitive to exact details, but you shouldn't be operating close to the limit with an open-loop
system, that's when a servo system is called for ;)
[ I will NOT respond to personal messages, I WILL delete them, use the forum please ]

joemcder

Quote
I'm actually trying to use the stepper motor to throw things


Why use a stepper?  It may be the wrong solution. 

kf2qd

What you need is an industrial Servo Motor/Driver combination. They make them in sizes from 30Watts and up. Yaskawa,  Automation Direct. (there are others, their websites aren't as friendly...) They are more expensive, but capable of much faster motion with more accuracy because the drive itself does more of the work. They also cost more. Smaller motors are capable of 5000RPM, throw a gearbox on and yo can slow that down.

NOTE : These are NOT hobby servos. They are a servo like used on industrial machines and industrial robots.

http://www.automationdirect.com/adc/Shopping/Catalog/Motion_Control/Servo_Systems/Medium_Inertia_%281KW_-_3KW%29_Servo_Systems/1KW_Servo_System_%28Med_Inertia%29

http://yaskawa.com/site/products.nsf/productGroup/ServoSystemsAndMotionControllers.html


raacampbell

#12
Aug 21, 2013, 02:46 pm Last Edit: Aug 21, 2013, 02:53 pm by raacampbell Reason: 1

I'm currently using a AMIS-305421 stepper motor driver with 24 volt power supply.  My stepper motor is 200 steps (1.8 degree per step).  The best I have been able to get for speed is 800 micro seconds per step (0.8 milliseconds).  I am running this in full step mode.  This is not quite fast enough for my


That's 1250 RPM. It's quite possible you've hit the limit of what the motor can do. I've got motors that go beyond 900 RPM. Go to OrientalMotor.com and take a look at their stepper motors. You can click on the torque/speed curves and see how fast they'll go and with what torque. There are steppers out there which will go over 5000 RPM. You need to know what torque you want at that speed, though. You probably want the 1.8 degree motors if you want to go fast.  

EDIT:
The further you are from the torque limits the better the system will perform, so hunt around on the website until you find something that will give you plenty of room to work with. You shouldn't need gradual acceleration if the motor is operating well within it's capabilities. The motors I work with let me hit 500 RPM whilst accelerating and decelerating at 40k steps*s^-2 that's in 1/2 steps with a load. For faster motions I find half steps are good but they produce too much resonance at slower speeds. It's all application-dependent, though. Dual shaft motors make it possible to add a damper to the free arm, which might help.

Go Up