Stepper Motor Basics

continued from previous Post ....

Microsteps

Most (but certainly not all) stepper motors do 200 full steps per revolution. By appropriately managing the current in the coils it is possible to make the motor move in smaller steps. The Pololu A4988 can make the motor move in 1/16th steps - or 3,200 steps per revolution.

The main advantage of microstepping is to reduce the roughness of the motion. The only fully accurate positions are the full-step positions. The motor will not be able to hold a stationary position at one of the intermediate positions with the same position accuracy or with the same holding torque as at the full step positions.

Generally speaking when high speeds are required full steps should be used.

It is possible with most drivers including the Pololu A4988 to use the Arduino program to change the microstep setting. This would require additional connections between the driver and the Arduino.

Stepper Motor Speed

By comparison with regular DC motors stepper motors are very slow devices.

Typical speeds might be 1000 to 4000 steps per second and for a 200 step motor that would represent 5 to 20 rps (300 to 1200 rpm).

Generally speaking the motors with low coil resistance and high currents (and low nominal voltages) will be most suitable for higher speeds. A high voltage will also be needed for high speed.

Acceleration

If the stepper motor is required to move a heavy load it will normally be necessary to start the movement slowly (as with any motor) and accelerate to the desired speed and, equally, to decelerate when it is necessary to stop.

This is quite different from a DC motor which will accelerate and decelerate automatically.

If you try to start or stop a stepper motor too quickly it will simply skip steps with no damage to motor. However The Arduino has no means to know whether or how many steps have been missed and all of the position control will be lost.

For this reason, in particular, it is essential to choose a motor with sufficient torque for the job and to use acceleration and deceleration when necessary.

Position Feedback

Stepper motors do not have the ability to tell the Arduino what position they are at, nor do they have the ability (like a servo) to go to a particular position. All they can do is move N steps from where they are now.

If it is essential to have position feedback a rotary encoder can be attached to the motor shaft - but that is beyond the scope of this essay.

Initial Position

When it starts up the Arduino has no means of knowing where the stepper motor is positioned - for example somebody might have moved it manually when the power was off.

The usual way to establish a datum for counting steps is with a limit switch. At startup the Arduino will move the motor until it triggers the switch. The Arduino will then regard that step position as step zero for the purpose of future position keeping.

Arduino Libraries

When using an Arduino with a specialized stepper motor driver board such as the Pololu A4988 there is little to be gained from using an Arduino library unless you need the acceleration feature of the AccelStepper library.

Demonstration Arduino code

The code in my simple stepper demo is intended as a first step to getting your motor working. It also shows how easy it is to control a motor without a library when a specialized stepper motor driver such as the Pololu A4988 i8s used.

Wiring connections for a stepper motor

The code in my simple stepper demo assumes that the motor is connected as shown in the wiring diagrams on the Pololu A4988 web page.

Arduino Pulse Width Modulation (PWM)

Arduino PWM using analogWrite() has nothing to do with controlling stepper motors. To control a stepper motor though a specialized stepper motor driver the Arduino just needs to provide step and direction signals using digitalWrite().

PWM may be used within the stepper motor driver to limit the current in the motor coils but this process is invisible to the Arduino user.

....END

...R

Edit 01 Jan 2014 to change "proper" to "specialized"

7 Likes

bang on

good start for nobs

1 Like

Hi Robin,
Thanks that was very useful! I have had a little play with some old salveged steppers (EX printer, etc) and hope one day to build a bot using them for accurate movement and perhaps drawing, etc or as I suggested to someone the other day a Pantagraph? or drawing machine!! I have used the good old ULN28003, but the new A4988 type of modules make it a lot easier with only two signals STEP & DIR. Fixing wheels on a 5mm shaft can be tricky....

Regards

Mel.

"The nominal voltage is irrelevant for all practical purposes. The important figure is the rated current. "

I disagree with this statement. the manufacture offers data for the end user to use for calculations. this statement is akin to saying that resistor wattage is irrelevant for all practical purposes in data circuits.

the stepper motor is a coil, the coil has inductance. what you can do with a coil is very much based on manufacture. ergo the manufacture offers test data. the motor power supply calculation requires you know the motor voltage, then allows for the inductive reactance.

a motor has two major causes of heating, copper losses and iron losses. copper losses are from power flowing through the motor. iron losses are from the eddy currents and hysteresis heating.

every motor has a maximum voltage rating. it is a disservice to dismiss a part of the calculations without describing why.

I offer white papers from a stepper motor designer. probably one of the foremost authorities on stepper motors.

You would do well to read and understand how a stepper motor uses voltage and power and why they are so important to understand, especially if you want to post as a source of teaching for others.

http://www.geckodrive.com/app-notes.html

he has a simple writing style and except for a few spelling errors (ration instead of ratio) he is very readable.

Good stuff.
Thanks

dave-in-nj:
every motor has a maximum voltage rating. it is a disservice to dismiss a part of the calculations without describing why.

I make no apology for keeping my material simple. And I did say "for all practical purposes" - meaning for all practical purposes for the people for whom the note is written.

The important point is that when the datasheet says 2.7v it does not mean that is the maximum you can use, nor even that it is close to ideal.

If you can give me one or two sentences that will enhance the text without confusing newcomers I will certainly consider including them. That is the purpose of asking for comments.

...R

What is of interest in motor voltage is that it leads to a maximum value of the power supply

32 * VL = VMAX

The reason for this is iron losses (eddy currents) heating up the motor. But, this is almost academical since most stepper motors i encountered have motor voltages over 1,5V and supplies over 45V are seldom used. Also most drivers set the upper voltage limit at 35V which is safe for almost all motors.

Ecellent text, and really needed. What could be added is that power supplies should be unregulated with a filter/reservoir capacitor with a value of:

(80,000 * I) / V = C(uF)

nilton61:
Ecellent text, and really needed. What could be added is that power supplies should be unregulated with a filter/reservoir capacitor with a value of:

Thank you (and everyone else) for the kind words.

I have noted your very useful views about power supplies elsewhere but I don't feel competent to write a text about it myself. Perhaps you could find the time to write a few sentences which can either stand here as a separate post or I might incorporate it into my text.

My own experience is that a computer power supply (18v or so) and a large 12v lead-acid battery work fine. I haven't tried an unregulated supply myself to see if it would be better.

And I don't want to discourage or prevent newcomers from using a satisfactory power supply that they happen to have, even if it is sub-optimal.

...R

The reason for advocating unregulated supplies is that regulated ones more often than not have quite small reservoir/filter caps. This has two negative effects

  • The small caps cannot absorb the returning energy when deaccelarating
  • The very transient currents can interfere with the voltage regulator

So the main issue is having large enough caps which should be stated.

nilton61:
So the main issue is having large enough caps which should be stated.

I've been thinking some more about the possibility of a text about power supplies and the problem is that I keep running into more questions which leads me to think that it needs an entire Thread of its own.

For example does the piece I have quoted mean that it is a good idea to attach a very large capacitor to a regulated power supply as well as to an unregulated supply?

And, to confirm my understanding, I have 3 motors that each have a coil current of 0.33 A. That would mean 0.99A for all 3 - say 1.5A to give a margin. And, supposing they are powered at 20v your formula would be
80,000 * 1.5 / 20 which gives a capacitor value of 6,000 microFarads.

And without intending the least disrespect to your knowledge I have not yet got any sense of how much difference it would make to have an unregulated rather than a regulated power supply with the same voltage assuming both can deliver enough amps.

...R

just a note on my router I have 1400w 16 amp 80vdc power supply's the motors don't get hot at all I can push them to 150vdc then they will get hot.

having a decent stepper driver takes care of its motors.

robin it would be a good idea to add in the steeps need to work out what size stepper a person would need to get

daniellyall:
robin it would be a good idea to add in the steeps need to work out what size stepper a person would need to get

I thought about that. But it can get very complex - especially if you try to keep it simple. So much depends on the reader's level of knowledge. That's why I just left it at "To figure out what motor you need you will have to measure or estimate the torque required ..... It is not too difficult to make a rough measurement of the torque required but it is beyond the scope of this note.".

If you have time to submit a suggested text I would really appreciate it.

...R

daniellyall:
just a note on my router I have 1400w 16 amp 80vdc power supply's the motors don't get hot at all I can push them to 150vdc then they will get hot.

having a decent stepper driver takes care of its motors.

robin it would be a good idea to add in the steeps need to work out what size stepper a person would need to get

I believe that the purpose of this thread is to hand-hold a newbie and get them past the common problems. As Robin2 stated, this thread addresses the repeated problems newbies encounter.
It is a superficial introduction, touching only on the needed parts, but considering the limited space and the capacity of the newbie to grasp the concepts, it is at exactly the right level. a good idea and pretty well executed.

Robin2:
And without intending the least disrespect to your knowledge I have not yet got any sense of how much difference it would make to have an unregulated rather than a regulated power supply with the same voltage assuming both can deliver enough amps.

...R

I believe the whole concept of this thread is to get the NEWBIE to connect a stepper and make it move.
that said, almost any power supply will work for this purpose. and old brick that has the current, an old PC power supply. whatever. I am content on building my own, but IMHO building a power supply is about 5 steps down the road, and does not belong at this level.
suffice it to say that to get started, a power supply that has enough current should be good enough to use to get the motors moving and it is is an old PC power supply with 12 volts or one from an old laptop, it does not matter in order to get that motor spinning. once you have gotten the motor to spin and step forward and back and things look good, it would be desirable to try to improve the performance by either building or buying a power supply that is selected for the application.
as a note, the back EMF being delivered to the power supply from coil-A will be immediately send to coil-B and not stored. for that reason, the regulated power supply will often work fine. in addition, many regulated power supplies are designed to handle the higher voltage. lastly, I sincerely believe that AT THIS LEVEL, no newbie will be running high power, high current motors under a load with sufficient deceleration as to create enough back EMF to be of any concern.

I think that generally speaking, this is a good start. It is apparent that the writer does not like the L298 boards that so many newbies have and ask about. I would offer that more technical discussion would be called for. It appears to me that the section about them is dismissive.

the L298 does have sense resistors to limit current, check the data sheet.

IMHO, it would be appropriate to remove the writers (negative) evaluation of the board and be more technical.

the L298 is a full or half step driver that can power a stepper. it takes 4 pins from the Arduino and is used on a bi-polar motor. running a full step at slow speed will have the motor appear to jump and shake. a half step will remove much of the apparent motor movement. The cost of the L298 is comparable to the A4988. in the opinion of the writer the A4988 is a much better choice.

a micro-stepper breaks each step by sending each of the two coils some energy. if you think of it as taking the power and one coil gets 90% and the other gets 10%, then 80/20, 70/30... and so on, you can see that the movement will be much more fluid. this is most apparent at reduced speeds.

at higher speeds the micro-stepping actually takes more time and can become a problem. at this introductory level, we do not need to address these things, but only bring them to your attention. This is mentioned because you will find both the jumpy movement at low speeds with a full step driver and a limit to high speed when using a high number of micro-steps,.

motor speed :

a DC motor delivers full power and full torque at high speeds. as the speed is reduced, the power drops off.
a stepper delivers maximum power at it's lowest speeds and as speed increases, power drops off.
each type of motor has applications that they are best suited for.

dave-in-nj:
motor speed :

a DC motor delivers full power and full torque at high speeds. as the speed is reduced, the power drops off.
a stepper delivers maximum power at it's lowest speeds and as speed increases, power drops off.
each type of motor has applications that they are best suited for.

Not quite correct.

  • A brushed Dc motor delivers a torque that is almost proportional to its current and hence at maximum for a stalled motor and zero for a free running motor (assuming constant voltage). The output power (N(rpm)*M(Nm)/9,55) is zero at these two points and at its maximum at about half the free running speed. The efficiency is at its maximum at about 70%-80% of the free running speed.
  • A stepper motor (as all ac motors driven with variable frequency) delivers aproximately a constant torque up to its corner speed which depends on the supply voltage and after that aproximately constant power, that is above the corner speed torque decreases inversely with speed

It seems that a similar text on rotating machinery is also needed

dave-in-nj:
but considering the limited space and the capacity of the newbie to grasp the concepts, it is at exactly the right level. a good idea and pretty well executed.

dave-in-nj:
It is apparent that the writer does not like the L298 boards that so many newbies have and ask about. I would offer that more technical discussion would be called for. It appears to me that the section about them is dismissive.
....SNIP....
IMHO, it would be appropriate to remove the writers (negative) evaluation of the board and be more technical.

I find it very difficult to reconcile these quotes from 2 different posts?

I agree I am dismissive about L298 drivers. Compared to using a proper stepper motor driver board they are the equivalent of painting the outside of a house with a 25mm paint brush.

...R

L298 are only good for new bees who don't know any better they are a pain

to drive a stepper so it does not over heat it and do stupid things it needs a proper stepper driver like a A4988 or equivalent, steppers are holding torque to its curve drop off nothing else

  1. working out what size stepper to get is what's the amount of torque will it need for the load it needs to move.

  2. what is the amount of current needed to drive said stepper for load being moved.

  3. what is the max current that the said stepper be needing to be driven at the speed required up to the top of its curve

  4. then you get a stepper driver that can handle said amount of current plus a bit extra for back emf.

  5. A power supply that can produce the amount of current needed under its max load.

also some one say what a stepper they are using gets, it`s is a good thing to have in any discussion as if someone work out they need a power supply and driver of simmaler size they can ask that person what is there set up, I use big and small steppers.

in a discussion I have had I asked people who have the same size stepper as the machine I have (was meant to have) what there set up was people with same size machine and smaller said they had no problems with there steppers what where the same as mine so what was wrong with my set up. simple answer miss labled steppers.

if I did not ask what peoples set ups where I probley would not have worked out the stepper where miss labled.
so anything in a discussion about correct set ups of stepper, power supply's and drives can`t be bad if a person does not under stand they can just ask.

@daniellall, I'm not sure if your Reply #19 is partly a response to my Reply #12.

I think I have covered your points 1-4 in my original text.

I haven't covered power supplies (point 5) - apart from the question of voltage. I assume the user is sensible enough to use a power supply with sufficient amps. That aspect is not specific to stepper motors.

@nilton61 and others have added useful posts about power supplies.

...R