Difference between revisions of "Brushless control"

From DIDEAS Wiki
Jump to: navigation, search
(Field oriented control (FOC))
m (Better inverter modulation)
 
(40 intermediate revisions by 3 users not shown)
Line 1: Line 1:
There are essentially 3 types of three phase brushless control that I know of:
+
=Brushless Motor Commutation=
 +
There are essentially 3 types of three phase brushless control / commutation. 
 
# Block commutation (sometimes also called trapezoidal)
 
# Block commutation (sometimes also called trapezoidal)
 
# Sine wave drive
 
# Sine wave drive
# Field oriented control.
+
# Field oriented control
 +
 
 +
These will be discussed in detail below.
  
 
==Block commutation ==
 
==Block commutation ==
Block commutation is basically the type of commutation that exist in a brushed motor.  The 3phase brushless has 3 coils - with block commutation, voltage is applied across two of them.  The 3rd coil is 'floating'.   
+
Block commutation is the electrical analog of the mechanical commutation that exist in a brushed motor.  The three phase brushless has 3 coils : with block commutation, voltage is applied across two of them.  The 3rd coil is 'floating'.   
  
===negative implications:===
+
===Negative implications:===
# The effective resistance is larger than necessary - as the current sees the series resistance of 2 coils.   
+
# The effective resistance is larger than necessary - as the motor current is run though the series resistance of two coils.   
# The torque isn't constant.  This is due to the fact that the magnetic field created by a pair of coils has a fixed direction, however the torque is provided by B cross I (???) and thus is rotor angle dependent.
+
# The torque isn't constant.  The magnetic field created by a pair of coils has a fixed direction, however the force felt by the rotor (torque) is provided by B cross I (where B is the motor magnet field) and thus is rotor angle dependent.
# As a fraction of the force from above isn't in the correct (axial) direction - the current used to create the off axis force is wasted.
+
# The miss-aligned force vector requires more current than the correctly aligned force vector that results in the same torque.  Thus there is less efficiency and greater motor heating.
  
===positive implications:===
+
===Positive implications:===
# Sensing for control is simpler.  The voltage on the 3rd phase can be used to estimate the rotor angle for commutation.  (But not recommended for robotics!)
+
# Sensing for control is simpler.  The voltage on the 3rd phase can be used to estimate the rotor angle for commutation.  (This is not recommended for robotics!)
# A hall sensor can be used instead of an encoder.
+
# Three hall sensors and a short lookup table can be used to select which phases should be electrically driven.  (An encoder is not required.)
 
# The computer computation requirements are low - even for torque control.
 
# The computer computation requirements are low - even for torque control.
# The same PWM control code can be used to drive a brushed motor.  (2 of the 6 hall sensors states are used and control the direction.)
+
# The same motor control code can be used to drive a brushed motor.  When driving a brushed motor, two of the six brushless hall sensor states are simulated.
 +
# Block commutation requires that only two of the six H-bridge transistors are modulated.  Thus switching losses are minimized.
  
 
==Sinusoidal drive==
 
==Sinusoidal drive==
Sinusoidal drive eliminates the 3 negatives of block commutation.  With this type of drive, the voltage (or current) at each of the 3 terminals is commanded to be a sine wave.  The phase difference between each sine wave is 120 degrees.  (How this voltage is commanded with PWM / Hbridge is another discussion [inverters] later.)  Because current generally flows though all 3 coils, the coil resistance is on the average reduced as the current enters 1 coil, and exits splitting between 2 coils.  The result is the minimum resistance is 3/4 that of block commutation.
+
Sinusoidal drive eliminates the above drawbacks of block commutation.  With a sinusoidal drive, the line-to-line voltage and line current are sine waves with the phase difference between each signal being 120 degrees.  As the motor current generally flows though all three motor coils, the coil resistance is on the average reduced as the current enters one coil, and exits splitting between two coils.  The result is that the minimum resistance is 3/4 that of the resistance of block commutation and the average I^2R loss over a full cycle is 2/3 of block commutation.
 
 
 
 
  
My implementation of voltage mode sine drive is as simple as :
+
An implementation of voltage mode sine drive is :  
  
 
*V1 = Vo * sin(0 + encoder angle)
 
*V1 = Vo * sin(0 + encoder angle)
Line 29: Line 31:
 
*V3 = Vo * sin(4pi/3 + encoder angle)
 
*V3 = Vo * sin(4pi/3 + encoder angle)
  
Using sine drive and current mode requires either a model and feed forward (not tried), or a PI control loop.
+
Using sine drive with current mode control requires either a motor model and feed forward estimation, PI control loop, or a hybrid of the two (recommended).
The required (desired) coil current current equations follow voltage equations above:
+
 
*Ix = Io * sin(THETAx + encoder angle)
+
The required (desired) coil current equations follow voltage equations above:
 +
*IDx = Io * sin((x-1) * 2pi/3 + encoder angle)     [x=1:3]
 +
 
 +
where Io is the calculated current that results from the torque desired at the rotor.
  
If IAx is the actual current in each equation - this the PI controller command is:
+
If IAx is the actual current in each coil(x), the PI equations that calculate the coil voltages:
----------
 
  
If IAx is the actual current in each coil(x), then the PI equations are:
+
*Vx = Kp*(IDx - IAx) + Ki * intg(IDx-IAx)
  
*Vx = kp*(Ix - IAx) + ki * intg(Ix-IAx)
+
where Kp and Ki are the proportional and integral gains.
  
Note, that the integral needs to be limited to avoid "wind up".  I generally limit the wind up so as to contribute at most 100% to the PWM voltage.
+
Note: the integral needs to be limited to avoid "wind up".  To avoid integral wind up, the integral sum is limited so as to contribute at most 100% (or less) to the pulse width modulation (PWM) voltage.
  
The primary problem with this time of control loop is that it is bandwidth limited.  The frequency of the voltage is at least that of the rotor rotation rate (or with a 4 pole motor, twice the frequency).  At high rotor speeds, the PI output has a phase shift WRT desired output.  This has the effect decreasing efficiency, as in the motor the magnetic field now longer is in the direction that creates maximum torque.
+
The primary problem with PI control of a sine drive is that the PI loop is bandwidth limited.  The require motor coil current is a sinewave that has a frequency that is a multiple (# of pole pairs) of the rotor rotation rate.  At high rotor speeds, the PI voltage outputs have significant phase lag WRT to desired currents.  This has the effect of decreasing efficiency, as the motor the magnetic field deviates from the direction that creates maximum torque.
  
 
==Field oriented control (FOC) ==
 
==Field oriented control (FOC) ==
Field oriented control solves the phase shift problem at high RPMs by transforming the control loop into the rotating reference frame of the rotor.  It is also sometimes said that the 3 phase brushless is transformed into a brushed motor.  Clark and Park transforms are involved here.
+
Field oriented control solves the phase shift problem at high RPMs by transforming the control loop into the rotating reference frame of the rotor.  It also effectively transforms the control of a 3 phase brushless into that of a brushed motor.  Transformations as described by Clark and Park are utilized.
 +
 
 +
An outline of the [http://focus.ti.com/lit/an/bpra073/bpra073.pdf theory of FOC control (PDF)] will be described below.    This outline assumes that the currents in the 3 phases sum to zero, are sinusoidal with rotor angle, and the current on each phase is 120 degrees from its neighbor.
  
I won't try to explain the full theory [http://focus.ti.com/lit/an/bpra073/bpra073.pdf PDF] but it can be outlined:
+
* Measure two motor coil currents:  Iu and Iv.  These currents are 120 degrees apart, are in the stator frame, and thus vary with rotor angle.
* Measure two coil currents:  Iu and Iv.  These currents are 120 degrees apart and are in the stator frame.
+
* Transform (Clarke) them into an orthogonal pair (Ialpha, Ibeta).   
* Transform (Clarke) them into an orthogonal pair of currents (Ialpha, Ibeta).  These currents are time varying and in the stator frame.
+
* Transform (Park) the orthogonal currents (Ialpha, Ibeta) into the rotating, rotor, reference frame. The new currents are called Id and Iq (actual) and are constants WRT to rotor angle. The Iq 'current' produces torque, and the Id 'current' applies a force that compresses the magnets.  This Id term can be used to change the effective speed and torque constants of the motor, and to dump excess energy into the motor.
* Transform (Park) the orthogonal currents (I alpha, beta) into the rotating, rotor, reference frame. The new currents are called Id and Iq and are actually now constants when the 3 phase currents are the correct sine waves! The Iq 'current' produces torque, and the Id 'current' applies a force that compresses the magnets.  This Id term is useful as it can me used to change the effective speed an torque constants of the motor, and also be used to dump (regen) energy into the motor.
+
* Apply the PI control loop to the transformed Iq and Id (actual) currents.
* Apply a the PI control loop to the transformed Iq and Id (actual) currents.
+
**Vq = kp * (Iq_desired - Iq_actual) + ki * intg(Iq_desired - Iq_actual)
Vq = kp * (Iq_desired - Iq_actual) + ki * intg(Iq_desired - Iq_actual)
+
**Vd = kp * (Id_desired - Id_actual) + ki * intg(Id_desired - Id_actual)
Vd = kp * (Id_desired - Id_actual) + ki * intg(Id_desired - Id_actual)
+
**Generally Id_desired is zero, and Iq_desired is proportional to the torque applied to the rotor.
  
Normally Id_desired is zero, and Iq is proportional to the torque desired on the rotor.
+
* The Vq and Iq terms are analogous to the voltage and currents that would be applied to a brushed motor.
* These Vq and Vq terms are analogous to the voltage and currents that would be applied to a brushed motor.
+
* Transform (w/inverse Parke) Vq, Vd back to the stator frame.  The result is Valpha, Vbeta which are orthogonal and vary with rotor angle.
* Transform (w/inverse Parke) Vq, Vd back to the stator frame.  The result is Valpha, Vbeta.
+
* Transform (w/inverse Clarke) the orthogonal Valpha, Vbeta into the 3 phase 120 degree voltages:  Vu, Vv, VwThese voltages are then inputs to voltage source inverter.
* Transform (w/inverse Clarke) the orthogonal Valpha, Vbeta into the 3 phase 120 degree voltages:  Vu,v,wThe 3 phase voltages are then inputs to the PWM modulator.
 
  
 
=Feedforward and PI control=
 
=Feedforward and PI control=
The preceeding discussions use a PI control loop to compute a command voltage that will move the actual current towards the desired current.  The advange of this approach is that is doesn't require knowledge of the motor parameters and continues to produce useful outputs as those paramters change.
+
The preceding discussions use a PI control loop to compute a command voltage that will adjust the actual currents (over time) toward the desired currents.  The advantage of the PI approach is that is doesn't require knowledge of the motor parameters and continues to produce useful control outputs as those parameters drift.  However, FF has the advantage of being full bandwidth.
 +
 
 +
With feed-forward control, the voltage required to produce a desired motor current (Io) is directly computed:
  
With feedforward the voltage require to produce a desired motor current (Io) is directly computed:
+
Vo = Ks * Omega + j L di/dt + IoR    (where)
  
Vx = Ks * Omega + L di/dt + IoR
 
 
*Ks is the speed constant
 
*Ks is the speed constant
*Omega is the rotation rate of the rotor
+
*Omega is the rotational velocity of the rotor
 +
*j = sqrt(-1), 90deg phase lead
 
*L is the motor inductance
 
*L is the motor inductance
*di/dt is the time rate of change of the current though the coil.  If I = Io sin(omega * t), then di/dt = Io*omega*cos(omega * t)
+
*di/dt is the time rate of change of the current though the coil.  If I = Io sin(omega * t), then di/dt = Io*omega*cos(omega * t), or Io*omega after transformation into the rotor frame.
 
*Io is the desired motor current
 
*Io is the desired motor current
 
*R is the motor / coil resistance.
 
*R is the motor / coil resistance.
  
Note, that with a brushed motor (or in the rotor frame of brushless), the di/dt term is nearly zero.  Or:
+
Applying this voltage equation to the orthogonal rotor frame voltages:
  
Vq = Ks * Omega + Io*R
+
Vq_ff = Ks * Omega + Io*R
 +
Vd_ff = L di/dt ~= L * Io* omega
  
A hybrid FF and PI control loop can be implmented:
+
A hybrid FF and PI control loop can be implemented:
  
Vcmd = Vq + kp * (Iq_desired - Iq_actual) + ki * intg(Iq_desired - Iq_actual)
+
Vq_cmd = Vq_ff + kp * (Iq_desired - Iq_actual) + ki * intg(Iq_desired - Iq_actual)
 +
Vd_cmd = Vd_ff + kp * (-Id_actual) + ki * intg(-Id_actual)
  
The the FF model is accurate, then Idesired and Iactual should be equal.  Thus one's knowlenged of the motor can be monitored by watching the integral term.
+
If the FF model is precise, then Idesired and Iactual will be equal.  Thus the models accuracy of the motor parameters is related to the magnitude of the integral term.
  
 +
=Motor speed with FOC vs SINE=
 +
It is [http://www2.electronicproducts.com/Motors_and_controls_Space-vector_modulation_vs_sinusoidal_commutation-article-JUNCOP1-JUN2002.aspx often claimed] that FOC permits a larger voltage to be applied across the motor when compared with a pure sine wave drive.  Eg with sine drive the full supply voltage isn't available to drive the motor.  However, I believe this wisdom is incorrect - as the output of a FOC drive *should* be 3 sine waves spaced 120 deg apart.  The likely source of this fable is the result of the typical naive implementation of the sine wave PWM inverter used in sine drives.
  
 +
=Voltage Source Inverters=
 +
A device that transforms a DC voltage into an AC voltage is called an [http://en.wikipedia.org/wiki/Inverter_%28electrical%29 electrical inverter], or voltage source inverter.  Generally a PWM signal is used to drive a H-bridge that efficiently applies either the positive or negative bus voltage to an inductive load.  There are several algorithms that can be used to calculate a PWM signal that will create a desired output voltage.
  
=Motor voltage with FOC vs SINE=
+
==Simple inverter modulation ==
It is often claimed that FOC permits a larger voltage to be applied across the motor when compared to a pure sine wave drive.  Eg with sine drive the full supply voltage isn't avaialble to drive the motor.  However, I believe this windoms is obviously mistaken - as the output of a FOC drive *should* be 3 sine waves space 120 deg apart.  The source of this fable is likely the result of the typical nieve implmentation of the sine wave invertor used in sine drives.
+
Given 3 voltages: Vu,v,w one could create the PWM duty cycle to be a linear transformation (gain and offset) of the desired voltage.
 
 
 
 
=Invertors=
 
The process of transforming the mathamatical voltage into a PWM is called inversion. 
 
 
 
With field orentied control (FOC) generally  space vector modulation (SVM) is used.  The most claim advange of SVM is that the harmonic content of the multation is lower than other methods.  However, SVM is somewhat complicated to implment - and also is computationally expensive.  I'll provided references to assist in implmenting this.
 
 
 
==Nieve invetor impentation==
 
Given 3 voltages: Vu,v,w one could simply send the PWM duty cycle to be a linear transformation (gain and offset) to the desired voltage.
 
  
 
*For example:
 
*For example:
Line 105: Line 109:
 
**PWMdc = Vu_output/Vsupply
 
**PWMdc = Vu_output/Vsupply
  
However, if the voltages are 120 shifted sine waves, then when one of the voltage is maximum, the other two are 60 degrees away from their minimums.  Thus the maximum voltage across the motor is 0.75*Vsupply.
+
However, if the voltages are 120 shifted sine waves, then when one of the voltage is maximum, the other two are 60 degrees away from their minima.  Thus the maximum voltage across the motor is 0.75*Vsupply.
 +
 
 +
http://bmech2.media.mit.edu/wiki_img/3phase_voltage_1.png
 +
 
 +
==Better inverter modulation ==
 +
 
 +
At any point one of the 3 phase voltages can be considered to be the most negative of the three.  One could apply an offset to all the voltages, so that the most negative is zero. 
 +
 
 +
*Let Vn = min(Vu, Vv, Vw)  (Vn is most negative voltage)
 +
*Va = Vu - Vn
 +
*Vb = Vv - Vn
 +
*Vc = Vw - Vn
  
http://18.85.17.197/wiki_img/3phase_voltage_1.png
+
All the voltages are >= zero, and the maximum is 86.6% of the supply. The maximum amplitude of the voltages entering the modulator can be increased by 15.4% without over-modulation.
  
==Better inverter==
+
http://bmech2.media.mit.edu/wiki_img/3phase_voltage_2.png
  
At any point one of the 3 phase voltages can be considered to be the smallest of the three. As it is the voltage across a Y wound motor that is important, we could assint this minimum voltage to be zero.  Assuming that at this moment, Vu is the smallest, then the 3 voltages we actually apply to the motor are:
+
This better inverter modulation can be applied to both sine drive and FOC drive outputs.
  
*Va = Vu-Vu
+
The modulation method has the advantage over sinusoidal and  space vector modulation (SVM) in that 2 fewer H-bridge devices are PWM modulated.  Thus switching losses are reduced by 1/3.
*Vb = Vv-Vu
 
*Vc = Vw-Vu
 
  
When Vv is the minimum:
+
==Space Vector Modulation==
*Va = Vu-Vv
+
In most discussions of FOC, space vector modulation  is used to compute the PWM pulse periods needed to drive the inverter. One stated advantage of SVM is that the harmonic content of the modulation is lower than for other modulations methods.  It is also said that it provides 15% greater drive voltage than traditional sine drives.  However, SVM is relatively computationally expensive and somewhat complicated to implement or even understand.
*Vb = Vv-Vv
 
*Vc = Vw-Vv
 
  
etc.
 
  
Notice now, all the voltages are zero or positive.
+
Sources of addition discussion on SVM.
http://18.85.17.197/wiki_img/3phase_voltage_2.png
+
#[http://scholar.lib.vt.edu/theses/available/etd-2798-1216/unrestricted/chap2.pdf SVM thesis PDF]
 +
#[http://en.wikipedia.org/wiki/Space_vector_modulation SVM at Wikipedia]

Latest revision as of 21:30, 9 April 2012

Brushless Motor Commutation

There are essentially 3 types of three phase brushless control / commutation.

  1. Block commutation (sometimes also called trapezoidal)
  2. Sine wave drive
  3. Field oriented control

These will be discussed in detail below.

Block commutation

Block commutation is the electrical analog of the mechanical commutation that exist in a brushed motor. The three phase brushless has 3 coils : with block commutation, voltage is applied across two of them. The 3rd coil is 'floating'.

Negative implications:

  1. The effective resistance is larger than necessary - as the motor current is run though the series resistance of two coils.
  2. The torque isn't constant. The magnetic field created by a pair of coils has a fixed direction, however the force felt by the rotor (torque) is provided by B cross I (where B is the motor magnet field) and thus is rotor angle dependent.
  3. The miss-aligned force vector requires more current than the correctly aligned force vector that results in the same torque. Thus there is less efficiency and greater motor heating.

Positive implications:

  1. Sensing for control is simpler. The voltage on the 3rd phase can be used to estimate the rotor angle for commutation. (This is not recommended for robotics!)
  2. Three hall sensors and a short lookup table can be used to select which phases should be electrically driven. (An encoder is not required.)
  3. The computer computation requirements are low - even for torque control.
  4. The same motor control code can be used to drive a brushed motor. When driving a brushed motor, two of the six brushless hall sensor states are simulated.
  5. Block commutation requires that only two of the six H-bridge transistors are modulated. Thus switching losses are minimized.

Sinusoidal drive

Sinusoidal drive eliminates the above drawbacks of block commutation. With a sinusoidal drive, the line-to-line voltage and line current are sine waves with the phase difference between each signal being 120 degrees. As the motor current generally flows though all three motor coils, the coil resistance is on the average reduced as the current enters one coil, and exits splitting between two coils. The result is that the minimum resistance is 3/4 that of the resistance of block commutation and the average I^2R loss over a full cycle is 2/3 of block commutation.

An implementation of voltage mode sine drive is :

  • V1 = Vo * sin(0 + encoder angle)
  • V2 = Vo * sin(2pi/3 + encoder angle)
  • V3 = Vo * sin(4pi/3 + encoder angle)

Using sine drive with current mode control requires either a motor model and feed forward estimation, PI control loop, or a hybrid of the two (recommended).

The required (desired) coil current equations follow voltage equations above:

  • IDx = Io * sin((x-1) * 2pi/3 + encoder angle) [x=1:3]

where Io is the calculated current that results from the torque desired at the rotor.

If IAx is the actual current in each coil(x), the PI equations that calculate the coil voltages:

  • Vx = Kp*(IDx - IAx) + Ki * intg(IDx-IAx)

where Kp and Ki are the proportional and integral gains.

Note: the integral needs to be limited to avoid "wind up". To avoid integral wind up, the integral sum is limited so as to contribute at most 100% (or less) to the pulse width modulation (PWM) voltage.

The primary problem with PI control of a sine drive is that the PI loop is bandwidth limited. The require motor coil current is a sinewave that has a frequency that is a multiple (# of pole pairs) of the rotor rotation rate. At high rotor speeds, the PI voltage outputs have significant phase lag WRT to desired currents. This has the effect of decreasing efficiency, as the motor the magnetic field deviates from the direction that creates maximum torque.

Field oriented control (FOC)

Field oriented control solves the phase shift problem at high RPMs by transforming the control loop into the rotating reference frame of the rotor. It also effectively transforms the control of a 3 phase brushless into that of a brushed motor. Transformations as described by Clark and Park are utilized.

An outline of the theory of FOC control (PDF) will be described below. This outline assumes that the currents in the 3 phases sum to zero, are sinusoidal with rotor angle, and the current on each phase is 120 degrees from its neighbor.

  • Measure two motor coil currents: Iu and Iv. These currents are 120 degrees apart, are in the stator frame, and thus vary with rotor angle.
  • Transform (Clarke) them into an orthogonal pair (Ialpha, Ibeta).
  • Transform (Park) the orthogonal currents (Ialpha, Ibeta) into the rotating, rotor, reference frame. The new currents are called Id and Iq (actual) and are constants WRT to rotor angle. The Iq 'current' produces torque, and the Id 'current' applies a force that compresses the magnets. This Id term can be used to change the effective speed and torque constants of the motor, and to dump excess energy into the motor.
  • Apply the PI control loop to the transformed Iq and Id (actual) currents.
    • Vq = kp * (Iq_desired - Iq_actual) + ki * intg(Iq_desired - Iq_actual)
    • Vd = kp * (Id_desired - Id_actual) + ki * intg(Id_desired - Id_actual)
    • Generally Id_desired is zero, and Iq_desired is proportional to the torque applied to the rotor.
  • The Vq and Iq terms are analogous to the voltage and currents that would be applied to a brushed motor.
  • Transform (w/inverse Parke) Vq, Vd back to the stator frame. The result is Valpha, Vbeta which are orthogonal and vary with rotor angle.
  • Transform (w/inverse Clarke) the orthogonal Valpha, Vbeta into the 3 phase 120 degree voltages: Vu, Vv, Vw. These voltages are then inputs to voltage source inverter.

Feedforward and PI control

The preceding discussions use a PI control loop to compute a command voltage that will adjust the actual currents (over time) toward the desired currents. The advantage of the PI approach is that is doesn't require knowledge of the motor parameters and continues to produce useful control outputs as those parameters drift. However, FF has the advantage of being full bandwidth.

With feed-forward control, the voltage required to produce a desired motor current (Io) is directly computed:

Vo = Ks * Omega + j L di/dt + IoR (where)

  • Ks is the speed constant
  • Omega is the rotational velocity of the rotor
  • j = sqrt(-1), 90deg phase lead
  • L is the motor inductance
  • di/dt is the time rate of change of the current though the coil. If I = Io sin(omega * t), then di/dt = Io*omega*cos(omega * t), or Io*omega after transformation into the rotor frame.
  • Io is the desired motor current
  • R is the motor / coil resistance.

Applying this voltage equation to the orthogonal rotor frame voltages:

Vq_ff = Ks * Omega + Io*R Vd_ff = L di/dt ~= L * Io* omega

A hybrid FF and PI control loop can be implemented:

Vq_cmd = Vq_ff + kp * (Iq_desired - Iq_actual) + ki * intg(Iq_desired - Iq_actual) Vd_cmd = Vd_ff + kp * (-Id_actual) + ki * intg(-Id_actual)

If the FF model is precise, then Idesired and Iactual will be equal. Thus the models accuracy of the motor parameters is related to the magnitude of the integral term.

Motor speed with FOC vs SINE

It is often claimed that FOC permits a larger voltage to be applied across the motor when compared with a pure sine wave drive. Eg with sine drive the full supply voltage isn't available to drive the motor. However, I believe this wisdom is incorrect - as the output of a FOC drive *should* be 3 sine waves spaced 120 deg apart. The likely source of this fable is the result of the typical naive implementation of the sine wave PWM inverter used in sine drives.

Voltage Source Inverters

A device that transforms a DC voltage into an AC voltage is called an electrical inverter, or voltage source inverter. Generally a PWM signal is used to drive a H-bridge that efficiently applies either the positive or negative bus voltage to an inductive load. There are several algorithms that can be used to calculate a PWM signal that will create a desired output voltage.

Simple inverter modulation

Given 3 voltages: Vu,v,w one could create the PWM duty cycle to be a linear transformation (gain and offset) of the desired voltage.

  • For example:
    • if Vu = 0.5 * Vsupply * sin(theta)
    • then in a positive voltage only system we shift the output up by half the supply voltage:
    • Vu_output = Vu + Vsupply / 2
    • The necessary PWM duty cycle to produce this voltage is:
    • PWMdc = Vu_output/Vsupply

However, if the voltages are 120 shifted sine waves, then when one of the voltage is maximum, the other two are 60 degrees away from their minima. Thus the maximum voltage across the motor is 0.75*Vsupply.

http://bmech2.media.mit.edu/wiki_img/3phase_voltage_1.png

Better inverter modulation

At any point one of the 3 phase voltages can be considered to be the most negative of the three. One could apply an offset to all the voltages, so that the most negative is zero.

  • Let Vn = min(Vu, Vv, Vw) (Vn is most negative voltage)
  • Va = Vu - Vn
  • Vb = Vv - Vn
  • Vc = Vw - Vn

All the voltages are >= zero, and the maximum is 86.6% of the supply. The maximum amplitude of the voltages entering the modulator can be increased by 15.4% without over-modulation.

http://bmech2.media.mit.edu/wiki_img/3phase_voltage_2.png

This better inverter modulation can be applied to both sine drive and FOC drive outputs.

The modulation method has the advantage over sinusoidal and space vector modulation (SVM) in that 2 fewer H-bridge devices are PWM modulated. Thus switching losses are reduced by 1/3.

Space Vector Modulation

In most discussions of FOC, space vector modulation is used to compute the PWM pulse periods needed to drive the inverter. One stated advantage of SVM is that the harmonic content of the modulation is lower than for other modulations methods. It is also said that it provides 15% greater drive voltage than traditional sine drives. However, SVM is relatively computationally expensive and somewhat complicated to implement or even understand.


Sources of addition discussion on SVM.

  1. SVM thesis PDF
  2. SVM at Wikipedia