DPRG List  

[DPRG] PWM vs. voltage motor control

Subject: [DPRG] PWM vs. voltage motor control
From: Mike McCarty jmccarty at ssd.usa.alcatel.com
Date: Thu Jun 14 10:26:52 CDT 2001

I have so far remained silent on this, because I did not have anything
I thought would contribute. I generally just lurk here, because I don't
want to use bandwidth which doesn't contribute to the general group,
especially given some of the reactions my earlier messages have evoked.

Also, you all know much more about robots in general, and that isn't
really my interest, anyway. However, I believe I may have something to
contribute to this discussion.

On Wed, 13 Jun 2001, Kipton Moravec wrote:

> I was thinking around the same thing, but for a slightly different reason.
> At the lower PWM percentages you need to get the current flowing.
> I have been wondering if some of the problem is the battery.  The chemical
> reaction for producing electricity is not instantaneous.  Perhaps if he had
> a large capacitor to help provide the current for the short "on" times, it
> might fix the problem.
> This is another reason to have very low resistance devices for your
> H-bridge.
> Kip

It seems to me that the cause of low torque at low speeds with PWM
relates more to the physics of the electronic system. The motor can be
modelled as an inductor, and the H bridge can be modelled as a switch
in series with a resistor of a few tenths of an ohm. As we all know,
when one places a resistor and inductor in series, and switches on the
voltage, the current is

      I(t) = (V / R){1 - exp[-t/(RL)]}


      t     = time since switch on in seconds
      I(t)  = current through the inductor in Amps
      V     = supply voltage in Volts
      R     = resistance of the series resistor in Ohms
      L     = inductance of the series inductor in Henrys
      exp() = exponential function with base ~ 2.71828

This describes a current which approaches V / R asymptotically. The
so-called time constant is RL, which, as one can see, sets the time
scale. The current reaches 63% of the asymptotically approached maximum
in the first time constant, and 63% of the remaining 37% in the next,
and so one, eating up 63% of the remaining in each time constant.

[For the purists, the 63% is actually

      1-1/e = 1-1/2.718281828459045... = 0.632120558...


This is a brief table of the current in percent of maximum achieved in
the first few time constants:

    t/RL      %Imax

    0          0
    1         63
    2         86
    3         95
    4         98

When the pulses are wide, then the time constant RL is small relative
to the pulse width, and results in essentially the full current flowing
all the time, the inductance of the motor being in this case
negligible. But when the pulses are narrow, then the current never
approaches closely to the maximum V / R, because the pulse ends during
the first few time constants, and the inductance of the motor windings
has an effect which is not negligible.

To put it another way, the rise time of the current pulse is not zero,
and when it becomes a significant percentage of the total on time, then
the current does not rise very far.

To put it yet another way, the current becomes slew rate limited.

Having very low resistance H bridge components causes the time constant
RL to be smaller, resulting in a more rapid rise of the current through
the inductance of the windings. Since torque is an increasing function
of current (proportional?) it also increases the available torque at
low duty cycles.

This is also a good reason not to use too high a frequency of pulses,
even when running at relatively high duty cycles.

This all presupposes that the input capacitance of the components of
the H bridge, and hence its switching speed, is negligible. I suspect
that with available components and the pulse rates used this is a
reasonable assumption, but if not, then the switching times of the
control components of the H bridge (their bandwidth, effectively) are
also a factor, which contribute in a similar manner to the RL time
constant of the H bridge components and the motor windings.

It would be an interesting exercise to measure the inductance of the
windings of some of the motors on the robots around here, measure the
equivalent resistances of the circuitry controlling them, and then use
a 'scope to compare the predictions of my supposition with the actual
currents achieved at various pulse widths.

Another interesting experiment would be to replace the motor windings
with a resistance equal to the DC resistance of the windings, and
observing the difference in the shape of the current pulses through
them, as compared with those passing through the motor windings.

char *p="char *p=%c%s%c;main(){printf(p,34,p,34);}";main(){printf(p,34,p,34);}
This message made from 100% recycled bits.
I can explain it for you, but I can't understand it for you.
I don't speak for Alcatel      <- They make me say that.

More information about the DPRG mailing list