# Stepper motor question

Discussion in 'Embedded' started by Bryan Hackney, Dec 15, 2003.

1. ### Bryan HackneyGuest

This is an electricity question. There are two sides to a unipolar stepper,
call them A-B, and C-D. In my case, I'm driving a motor with 4 n-channel
low side FETs. The V+ is 24V and the motor is rated for 12V continuous.

This simple driver has no facility for regeneration or capturing energy
from the inductive kickback. When driving full-step, this this stalls at
a fairly low RPM.

Is there any sense in doing a make-before-break or break-before-make when
switching phases A-B or between C-D? I've tried to figure this out but
my basic electricity knowledge is pretty weak.

A B C D
_______
1 0 1 0
1 0 0 1
0 1 0 1
0 1 1 0

would become

A B C D
_______
1 0 1 0
(transition)
1 0 0 1
(transition)
0 1 0 1
(transition)
0 1 1 0
(transition)

Where transition would be one of

1 1 1 0
1 1 0 1
1 0 1 1
0 1 1 1

Bryan Hackney, Dec 15, 2003

2. ### William MeyerGuest

When you're trying to drive a stepper near or above its rated limit
(I've forgotten the correct jargon), it's not a simple electricity
question. Back when I was dealing with such things (nearly 20 years
ago), the best info I was able to find was, IIRC, from the University
of New Hampshire. It was a loose-leaf publication that filled a 3" ring
binder with a great deal of calculus.

The difficulty is that as you increase the frequency, you are unable to
couple much energy to the stepper coils, because of their high
inductance. The basic trick is to raise the impedance of the source to
the coils, as I recall, but there are many little tricks that come into
play on the path to achieving the best coupling.

Obviously, from the performance of inkjet printers, the art has been
reduced to solid science, but I'm not sure where to look for definitive
references these days.

William Meyer, Dec 15, 2003

3. ### CBarn24050Guest

Hi, If you break before make you get a half stepper. Steppers are much harder
to drive than you would think. To get speed you need to use acceleration and
deacceleration to stop it again otherwise it will lose steps and stall. You
need to control the back emf from the motor in some way. Most simple drive use
a diode across each coil half.

CBarn24050, Dec 15, 2003
4. ### Frank BemelmanGuest

The induction of the coils make the current start from zero
and then rise to 24V/dc-resistance. When you go fast, the current
is already switched off before it can reach maximum value.

So, if you want to go fast *and* achieve a high current through
the coils, you need to start with a higher voltage. 48V, 96V,
whatever it takes. But using high voltages cause problems when
the speed is too low, as the current rises too much and overheats
the motor.... more advanced stepper controllers use PWM to control
the current, with a high voltage power supply. With simple drivers
such as yours, speeds and torques are rather limited, alas.

Frank Bemelman, Dec 15, 2003
5. ### Meindert SprangGuest

Well, errr, that's probably why inkjet printers *don't* use steppers
anymore. At least not for the printing head. An ordinary but quiet DC motor
is used and the printing is synchronized with the head movement by an
optical grating.

Meindert

Meindert Sprang, Dec 15, 2003
6. ### William MeyerGuest

Well, there you go. Shows that I'm out of touch with *that* technology,
at least. <g> Thanks for the info.

William Meyer, Dec 15, 2003
7. ### Spehro PefhanyGuest

I had a look at a cheap inkjet printer the other day at Sam's Club (I
think it was around \$40 or \$50 US). There was a very thin and very
flimsy ribbon of clear plastic (probably polyester) running the width
of the carriage that was printed with a fine pattern of vertical
lines. Hard to dignify it with the term "optical grating" but that was
its function.

Best regards,
Spehro Pefhany

Spehro Pefhany, Dec 15, 2003
8. ### Robert ScottGuest

is rated for 12V continuous, you can't drive the motor directly with
24V without some dropping resistors in series with the coils. Pick a
resistor equal to the DC resistance of your coils and then you will
get exactly 12V when stopped. But this not be optimal in getting
started, where 24V would be really useful. To benefit from the 24V
supply and protect the coils from burnout when stopped, use PWM to
control the current. However, the benefit of 24V drive may not be as
much as you might think. During the first part of the L/R
time-constant, when a coil is first energized, most of the 24V will be
applied to the coil anyway. It is only after a significant current
starts to flow that the dropping resistor starts to reduce the voltage
applied to the coil.

As far as unipolar phase sequencing, the most power will be found by
using the full-stepping sequence that you gave:
Half-stepping is smoother, but a little weaker in average torque.

There is no benefit from having make-before-break, because coils A and
B are magnetically just one coil. Exciting both A and B is just like
exciting neither coil, as far as its effect on the torque. And
exciting B before turning off A will not get you a head-start on the
L/R time constant of B because A and B are inductively coupled, with
no net magnetic field if both A and B are carrying current.

-Robert Scott
Ypsilanti, Michigan

Robert Scott, Dec 15, 2003
9. ### Bryan HackneyGuest

It's intermittent duty, so the rating is OK. In fact, the curves I have
for torque for my selected motor are for a 5V motor driven with 40V.
That's what I thought...
Not much more insight today, except maybe a magic component ????. Perhaps
opposed zeners (Vz > V+).

V+
|
|
|
| Coil
| ______________________
| | | |/|
| L R |\|
|______0)0)0)0)0)___/\/\/\/\____A_____|______| N-FET |_____GND
| |
| |
| |
| |
| ????
| |
| |
| |
| |
| |
| |
|______0)0)0)0)0)___/\/\/\/\____B_____|_____| N-FET |_____GND
|/|
|\|

Bryan Hackney, Dec 16, 2003
10. ### Robert ScottGuest

What is it that makes it intermitent duty? That is normally insured
by the controller, whose design you were discussing. Are you going to
ensure that drive control is removed as soon as the stepper gets the
desired position? Or are you going to interrupt the drive based on
current feedback? In some applications it is necessary to keep some
holding current flowing to keep the stepper from moving when it is
supposed to be stopped.

It is typical for 5V motors to be driven by 40V supplies, but only by
controllers that do ensure that 40V will not be applied when stopped.
In fact, even if the stepper is moving slowly, the current could rise
to damaging levels at each step if there isn't any feedback from
current monitoring, or some other way to limit the duration of the
applied 40V.

-Robert Scott
Ypsilanti, Michigan

Robert Scott, Dec 16, 2003
11. ### Bryan HackneyGuest

Exactly. It moves short distances infrequently. There is no holding
current - a relay shorts all phases to assist in holding position.
I may be able to design a better controller or use a better one, but I'm
stuck with this simple drive method for a while.

Bryan Hackney, Dec 16, 2003
12. ### CBarn24050Guest

Hi, your shorting relay will have no effect on holding ability.

CBarn24050, Dec 16, 2003
13. ### Robert ScottGuest

While shorting the coils may offer some resistance to the motor
turning (where the motor acts like a generator), that resistance is
dependent on speed. Very slow rotation of the stepper will see
virtually no difference between the coils shorted and the coils open.
It will do nothing to hold position.

-Robert Scott
Ypsilanti, Michigan

Robert Scott, Dec 16, 2003
14. ### Bryan HackneyGuest

My bench testing proves otherwise. I know what you are saying, but it
does seem to provide a slight holding.

Rotate a free stepper _slowly_, and feel the detents. Now, short the
phases and do the same, as slowly as possible. A single click between
detents requires slightly more torque. This is from my perception, not
from detailed measurements, but I believe there is a slight holding.

If you cannot accept this, I will try to perform some measurements, I
I can figure out how.

Bryan Hackney, Dec 16, 2003
15. ### CBarn24050Guest

Hi, yes that is quite so, but the motor is not holding is it?

CBarn24050, Dec 16, 2003

Path:
internal1.nntp.ash.giganews.com!border2.nntp.ash.giganews.com!border1.nntp.ash.giganews.com!firehose2!nntp4!intern1.nntp.aus1.giganews.com!border1.nntp.aus1.giganews.com!nntp.giganews.com!in.100proofnews.com!in.100proofnews.com!prodigy.com!newsmst01.news.prodigy.com!prodigy.com!postmaster.news.prodigy.com!newssvr30.news.prodigy.com.POSTED!not-for-mail
From: Bryan Hackney <>
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.5) Gecko/20031007
X-Accept-Language: en-us, en
MIME-Version: 1.0
Newsgroups: comp.arch.embedded
Subject: Re: Stepper motor question
References: <WXFDb.1209\$>
<>
Content-Type: text/plain; charset=us-ascii; format=flowed
Content-Transfer-Encoding: 7bit
Lines: 16
Message-ID: <DsHDb.354\$>
NNTP-Posting-Host: 24.26.255.45
X-Complaints-To:
X-Trace: newssvr30.news.prodigy.com 1071596451 ST000 24.26.255.45 (Tue, 16 Dec 2003
12:40:51 EST)
NNTP-Posting-Date: Tue, 16 Dec 2003 12:40:51 EST
Organization: SBC http://yahoo.sbc.com
X-UserInfo1:
TSUGW]CE[BWABFD[LZKJOPHAWB\^PBQLGPQRJRQIMASJETAANVW[AKWZE\]^XQWIGNE_[[email protected]^_\^JOCQ^RSNVLGTFTKHTXHHP[NB\[email protected]\[email protected]_[KCXX__AGDDEKGFNB\ZOKLRNCY_CGG[[email protected]_BSY\G__IJIX_PLSA[CCFAULEY\FL\VLGANTQQ]FN
Date: Tue, 16 Dec 2003 17:40:51 GMT
Xref: intern1.nntp.aus1.giganews.com comp.arch.embedded:182266

Here's my 2 cents worth.
Zowie! 40V on a 5V motor, That may be a bit much.
The way I understand it is that when the mosfet first turns on, the current the
current in the winding will ramp up in fairly linear fashion until it reaches the
maximum defined by the supply voltage and the winding resistance. In order to get the
motor to move as quickly as possible you need to get the current to reach the maximum
rated current as quickly as possible. The rate at which the current ramps up is
defined by the law of inductance. V=L(di/dt) where V is the applied voltage, L is the
inductance, di is the change in current, and dt is the time that the voltage is
applied. You can rearrange the equation slightly to di/dt=V/L, where di/dt represents
the rate of increase in winding current. Since L is fixed by the motor winding the
only way to increase di/dt is to increase the applied voltage. The problem is that
with a high supply voltage the current will reach an excessively high value if it is
left applied too long. That's where the current limiting resistors can help. For
example, with a 5V 1A rated motor running with a 40V supply you would need a limiting
resistor of (40V-5V)/1A = 35 ohms in order prevent burning out the windings or
demagnetizing the magnets. It works better to run the motor with a higher voltage and
limit the current with a resistor because when the voltage is first applied (mosfet
turned on) the inductance will prevent any current from flowing. With no current
flowing there is no voltage drop in the limiting resistor which results in the full
supply voltage appearing across the motor and from the law of inductance we know that
this will result in the current ramping up at a higher rate. As the current starts
increasing the voltage drop across the limiting resistor starts increasing resulting
in the voltage across the motor decreasing. The net effect is that di/dt starts out
very high and decreases as the voltage across the motor decreases.
A much better method is use use an active current limiter. An active current limiter
will maintain the full 40V across the motor until the current reaches the maximum set
in the limiter. This will yield much better results than a simple resistor since the
rate of current rise will be very high right up to the point where the current
reaches maximum.
Yes, shorting the windings will make it very slightly harder to turn the motor, but
even a small holding current would be better. I don't know if it's done, but I would
think some type of foldback limiting might be useful for supplying a smaller than
maximum rated curent for holding the motor position.

Mike