What I mean is, how long should a coil be energized before it's de-energized. Also how long should the coil stay de-energized before I power it in the reverse direction. Where can I find this timing information for stepper motors. I've been having trouble googling stepper motor sequences. I have a H-Bridge connected to a bipolar motor and to an AVR. If the coil isn't powered long enough, the stepper motor might not fully jump to the next position, right?
4 Answers
Generally speaking, with stepper motors the issue is not that you haven't energized the winding long enough, but rather than you are starting to turn it off before you have fully managed to turn it on.
Stepper motor windings end up being fairly inductive; inductors impede rapid current rise (and fall). At fairly low mechanical speeds you quickly reach switching frequencies where the inductance dwarfs the DC coil resistance, and applying the rated supply voltage does not result in anything near rated current. The motor starts missing steps and then stalls completely.
To combat this, higher performance stepper drives are chopper current regulators which use many, many times the rated voltage of the motor. They turn fully on, and hit the winding with a large voltage step. This is impeded by the inductance, so the current does not immediately exceed safe levels, but instead begins to rise over time. The chopper monitors the actual winding current using a small sense resistance, and once the target current is achieved the drive voltage is shut off; as the current falls it may be turned back on again if the motor has not yet been advanced to a position which would change the desired current level/direction of that winding.
Actual motor properties will not be stated in the terms you seek. Rather, you may find a winding inductance spec which would help you determine what supply voltage you would need to achieve rated current within the duration of a step time at a desired RPM. You would also find a maximum winding current spec related to the possibility of damaging the permanent magnets due to excessive field, and another time-average maximum current factor related to overheating the motor, which can also damage the magnets.
Additionally, at high speeds you have to consider mechanical inertia, including of the motor itself. This means that you can't just hit a stationary motor with full speed pulses, but must accelerate it gradually. It's quite likely that if you had a motor running at high speed and stopped providing pulses it would advance many steps on its own before coming to a stop. In effect, the mechanical distance of a step is fairly trivial, but the "electrical distance" of getting the current flow through the inductive winding started/stopped/reversed is quite large. So provided you profile your acceleration and deceleration, its your ability to force that current change which will dictate your minimum step time.

- 33,282
- 3
- 43
- 89
There are stepper motor calculators on the web. You enter certain parameters and it calulates the 'minimum step time' and 'max speed' (which are inverses, they give the same information.)
Stepper motor datasheets might give 'maximum starting speed'. Stepper motors might not start for pulses (steps) at a higher speed than said maximum starting speed. When starting, calculatate a step time for a speed much lower than the maximum starting speed. Then you can decrease the step time until you get the desired speed, but not lower the the 'minimum step time'.

- 221
- 2
- 3
Google will find you many resources on driving bipolar stepper motors.
This table is a good start. Note that there are several different sequences that you can use, depending on your requirements.
There is no de-energized step in the typical step sequence. If your application does not require significant holding torque, you may be able to de-energize the motor when stopped.
As far as on-time goes, assuming that you're following one of the step sequences above, the on-time limit can be expressed as a maximum step rate. The maximum step rate will be a function of the motor, its load, and the step profile you chose. If you step too fast, the motor will simply stop--it's not harmful provided that you have current limiting in place. Once you have a basic motor drive in place, experiment with both maximum acceleration and maximum step rate using your actual mechanical load.

- 7,306
- 2
- 25
- 20
As mentioned by DeanB, the amount of time for which you need to energize the coil(s) depends upon various factors. On second thoughts, if you are using a 6-wire,12V stepper motor as shown (click the link below) http://detail.china.alibaba.com/offerdetail/view_large_pics_1016309435.html which claims this motor to be a "Genuine NMB brand of the agent supply PM42S-048-ZTH8 stepper motors, line 6, with plug, copper gear 14 teeth, 3MM-axis, the electrical thickness 14MM line length 110MM", along with AVR (as you mentioned), then the software (internal) delay which you can provide for an optimum precision and speed is approximately 12*1000 time units (supposedly microseconds). Or in simple words, just provide a delay function in your program which looks something like this:
void delay()
{
unsigned int i,j;
for(i=0;i<12;i++)
for(j=0;j<1000;j++)
asm(nop);
}
I hope this would work out.

- 26,933
- 17
- 92
- 177

- 123
- 1
- 6