Yahoo Groups archive

AVR-Chat

Index last updated: 2026-04-28 22:41 UTC

Message

Re: [AVR-Chat] Re: Space Vector PWM application

2005-08-30 by Thomas Keller

On Mon, 2005-08-29 at 23:44 +0000, thormj wrote:
> Are these "Space Vector" PWM signals similar to Don Lancaster's
> "Magic 
> Sinewaves" (http://www.tinaja.com/magsn01.asp)?
> -Thor Johnson

  No, not the same thing at all.   Space vectors involve complex vector
algebra, to computer 6 "vectros" around the circle of rotation, within
which current magnitudes can be preduicted with precision.  By using the
processor to compute these magnitudes, and the PWM capabilities to
produce them in the windings of the motor at the appropriate times, you
can control the speed of the motor while maintaining (relatively)
constant torque at the motor output shaft (by relaively, we mean that
while the torgque will or course, flutuate as the armature turns, as it
doesn in any electric motor, it will, if measured over a time
realtivelylong in comparison to the rotational speed of the shaft appear
"constant," as opposed to simple volatge/current amplitude control of
motor speeds, which results in much lower torque being available at the
output shaft at lower speeds.   All Don's "Magic Sines" really are is a
lookup-table based approach to generating sine values without having to
have the processor arithmetically compute them (there was a time, not so
long ago, when an 8 bit processor would have been very hard pressed
indeed to compute such values at all, much less to do so fast enough to
be useful in control applications).

  Magic sines are still an exellent approach, when one deosn't need
sinces for anything smaller than integral degree values.  A lookup table
of just 90 values (scaled appropriately, of course) is all one needs.  I
have computed sine tables for the first 90 degrees of a circle for 10
bit, 16 bit and 32 bit scaled sines.  10 and 16 bit tables, of course,
require 180 bytes of data, and 32 bit tables, of course, require 360-
bytes of data for storage, so you don't want to scale any higher than
you need to to achieve your purpose, as "data" space on small
controllers like AVRs (most of them, anyway) is at a premium.  not to
mention the tim e penalties involved in dealing with extra bytes of
data, especially if you don't need the resolution they provide.

   Remember, in microcontroller programming, we are constantly having to
keep in mind code size, and how it is affected by the resoltuon of what
we need to do, as a result of limited memory resources.  Often, we have
to trade off some resolution to achiecve needed code/data density.

Tom Keller

(apologies tothose who already know all this stuff.  Many here don't,
and it behooves all of us to educate each other)

Attachments

Move to quarantaine

This moves the raw source file on disk only. The archive index is not changed automatically, so you still need to run a manual refresh afterward.