Continue to Site

Welcome to our site!

Electro Tech is an online community (with over 170,000 members) who enjoy talking about and building electronic circuits, projects and gadgets. To participate you need to register. Registration is free. Click here to register now.

  • Welcome to our site! Electro Tech is an online community (with over 170,000 members) who enjoy talking about and building electronic circuits, projects and gadgets. To participate you need to register. Registration is free. Click here to register now.

Speed up a stepper motor

Status
Not open for further replies.

mesamune80

New Member
As shown above i am facing a problem with the stepper motor with 1.8deg/rev .i am driving it using UCN5804
and PIC16F877 i send a pulse with 1us high and 1us low but the motor still not turn to my desired speed.i am using 4MHZ for the crystal.Any other alternative way for me to speed up my motor?Thanks
 
mesamune80 said:
As shown above i am facing a problem with the stepper motor with 1.8deg/rev .i am driving it using UCN5804
and PIC16F877 i send a pulse with 1us high and 1us low but the motor still not turn to my desired speed.i am using 4MHZ for the crystal.Any other alternative way for me to speed up my motor?Thanks

Stepper motors are slow - to increase their speed you can feed them off a much higher voltage and use current limiting resistors (or PWM) to limit the current.
 
For your information my motor is a 12V Nemma 17 0.16A ,but when i set to the shrortest delay which is 24us the motor perform a very less RPM.Can i just feed a 24V and put 2 current limmitng resistor 150 ohm each to speed up my motor?thanks.
 
Last edited:
mesamune80 said:
For your information my motor is a 12V Nemma 17 0.16A ,but when i set to the shrortest delay which is 24us the motor perform a very less RPM.Can i just feed a 24V and put 2 current limmitng resistor 150 ohm each to speed up my motor?thanks.

Assuming 0.16A is per winding?, I would suggest 75 ohm resistors which would limit the current to 0.16A.

Bear in mind it's pointless trying to step the motor faster than it can go, it just slows down and loses power - you need to carefully test for it's fastest speed and not exceed it!.
 
Stepper motors can start moving only at relatively low speeds. To get them to move faster you need to ramp the velocity up to the desired speed. Just as you must ramp the velocity up you should also ramp it down. This would be a trapezoidal velocity profile. Speeds of several thousand steps per second are possible. From the starting speed to the highest possible speed where the torque goes nearly to zero there will be at least two resonances. One is mehanical and the other is electrical. If you try to run at or near these speeds the motor will stop moving as its torque goes to zero. In your velocity profiling you need to avoid these two speeds.
 
a couple of points not mentioned before.
- a 500 khz pulse rate seems awfully high. are you sure you are sending it that fast (1 uS low/ 1 uS high)??? assuming full steps (4 pulses per step) you should be seeing 500K/800 or 625 rev/sec. I'm sure you aren't seeing that. I'd start at something like 10khz and ramp it up.
- that is not a very strong motor, I wouldn't expect much from it, even with 24V.
 
Thanks for you guys provide me some guidance,as i refer to the pic basic pro manual a 4MHZ crystal can provide a minimum delay about 24us.just want to know if i seek for 800 rev/sec is it 2us delay i need to use to achieve this?
As mention form some of you guys,ramp up the velocity of the motor is it meaning to say ,pump in higher voltage than the motor itself?any good idea or specific way to ramp up and down the velocity of this motor?Thanks.
 
No! No! No!
If you want to get to 800 steps per second you start at some low velocity and increase the velocity in a linear fashion up to 800 steps per second. If you do it correctly the motor and the load will experience a constant acceleration. The same for deceleration. This technique is independent of any possible hardware design that you have. You cannot solve this problem with hardware. What ever is generating the steps or pulses must be able to do this. There is no way to start and stop a stepper motor at high speeds especially with an inertial load and even a small amount of friction.
 
ok,now i understandthe ramping could be done without ny hardware changes,only the software part require some modification.
in my code i am using a loop to generate pulse like this:
loop:
high portc.1
waitus 50
low portc.1
waitus 50
goto loop

from the above code i pump a 50% duty cycle pulse with a delay of 50us to a stepper motor driver UCN5804,as a result the motor turn in a very low rpm.talking about ramping can i slowly increase the duty cycle of my pulse to acheive a increasing in velocity and the same goes with the decresing velocity?
 
Hi guys,today i manage to make the motor turn the fastest speed that i never see it before this ,i try to use 800us delay but when i try to shorten the delay let's say 700us the motor not turning at all.is it suppose the motor will turn faster?Could anybody tell me what's the problem behind this?not enough current for the driver?or not enough voltage for the motor to turn faster?Thanks.
 
Thanks for papabravo,to acknowledge me about this resonance ,but is there any other way i can use to turn the motor although its resonance is reached?like may be use a higher voltage and use a current limiting circuit to limit the current?so that never exeed the motor current rating.Thanks.
 
In the ramping algorithm you need to transition from a velocity below the resonance to a velocity above the resonance. For example it the resonance is at 250 steps/second, then the velocity ramp should go from 200 steps/second to 300 steps/second. You will always be using discrete velocities so you need to choose them wisely.

If this is the mechanical resonance then you need to be aware that if you change the inertial load or the friction in the system then the resonance frequency will change.
 
mesamune80 said:
Thanks for papabravo,to acknowledge me about this resonance ,but is there any other way i can use to turn the motor although its resonance is reached?like may be use a higher voltage and use a current limiting circuit to limit the current?so that never exeed the motor current rating.Thanks.

The best way to reduce resonance is to implement microstepping. I don't know off hand if your driver chip can handle it so if not, you should check out some of the motor controller ICs made by Allegro Microsystems. I have used their A3984 in the past to control a translation stage with 100 nanometer (0.0000001 meter) resolution. Besides the 3984, they make a large assortment of driver ICs with different features and current handling capabilities for both unipolar and bipolar steppers.
 
from the data sheet of my stepper driver IC which is UCN5804B stated that the minimum step input pulse width is 500ns ,but if i use below 700us then let's say 600us then the motor wont turn.is this the limitation of the motor itself or the driver?
for instance i worte the basic program this way:

loop:
high portc.1
waitus 600
low portc.1
waitus 600
goto loop

as a result the motor wont turn but i can feel some noise comming within the motor.can u guys give me some guide?the accuracy of the motor is not important for my design,only the speed of the motor is being concerned.Thanks hv a nice day!
 
mesamune80 said:
from the data sheet of my stepper driver IC which is UCN5804B stated that the minimum step input pulse width is 500ns ,but if i use below 700us then let's say 600us then the motor wont turn.is this the limitation of the motor itself or the driver?

I would say it's the motor, steppers aren't fast devices, but increasing the supply voltage helps a lot (try 48V instead of 24V, with suitable resistors of course).
 
Thanks.Ok,i'll try it out.so in this case i will use a 300 ohm (5 to 10W) resistor for my Rx and Ry coil .I'll let u all know the result of this later.thanks guys!
 
the faster the better actually but our minimum requirement would be 1600 step/rev or 1140 rev/minute.for u all information currently i am using a microstepping driver to drive the motor but now i need to use a IC(UCN8048B) to subsitute the driver because it cost me so much. can i reach this speed if i use this driver?Thanks
 
Status
Not open for further replies.

Latest threads

New Articles From Microcontroller Tips

Back
Top