Difference between revisions of "Brushless control"

From DIDEAS Wiki
Jump to: navigation, search
m
m
Line 70: Line 70:
 
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 minimums.  Thus the maximum voltage across the motor is 0.75*Vsupply.
  
[http://18.85.17.197/wiki_img/3phase_voltage_1.png]
+
http://18.85.17.197/wiki_img/3phase_voltage_1.png
  
 
==Better inverter==
 
==Better inverter==
Line 88: Line 88:
  
 
Notice now, all the voltages are zero or positive.
 
Notice now, all the voltages are zero or positive.
[http://18.85.17.197/wiki_img/3phase_voltage_2.png]
+
http://18.85.17.197/wiki_img/3phase_voltage_2.png

Revision as of 18:08, 21 August 2009

If IAx is the actual current in each coil(x), then the PI equations are:

Vx = kp*(Ix - IAx) + ki * intg(Ix-IAx)

Note, that the integral needs to be limited to avoid "wind up". I genrally limit the wind up so as to contribue at most 100% to the PWM voltage.

The primary problem with this time of control loop is that it is bandwidth limited. The freuqnecy of the voltage is at least that of the rotor rotation rate (or with a 4 pole motor, twice the freuqnecy). 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.


Field oriented control solves this phase shift problem by transforming the control loop into the stationary 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.

I won't try to explain the full theory but it can be easly outlined:

  • Measure two coil currents: Iu and Iv. These currents are 120 degrees apart and are in the stator frame.
  • Transform (Clarke) them into in a pair currents (Ialpha, Ibeta) that are orthogonal. These currents are still time varying and in the stator frame.
  • Transform (Park) the orthogonal currents (I alpha, beta) into the rotoating, rotor, refrence 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' applys a force that compresses the magnets. This 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 a the PI control loop to the 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)

Normally Id_desired is zero.

  • This Iq and Vq terms are analogous to the voltage and current that would be applied to a brushed motor.
  • Transform (w/inverse parke) Vq,Vd back into the stator frame. The result is Valpha, Vbeta.
  • Transform (w/inverse clarke) the orthogonal Valpha, Vbeta into the 3 phase frame 120 degree frame: Vu,v,w. The 3 phase voltages are then inputs to the PWM modulator.

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.

With feedforward the voltage require to produce a desired motor current (Io) is directly computed:

Vx = Ks * Omega + L di/dt + IoR

  • Ks is the speed constant
  • Omega is the rotation rate of the rotor
  • 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)
  • Io is the desired motor current
  • 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:

Vq = Ks * Omega + Io*R

A hybrid FF and PI control loop can be implmented:

Vcmd = Vq + kp * (Iq_desired - Iq_actual) + ki * intg(Iq_desired - Iq_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.


Motor voltage with FOC vs SINE

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.


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:
    • 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 minimums. Thus the maximum voltage across the motor is 0.75*Vsupply.

http://18.85.17.197/wiki_img/3phase_voltage_1.png

Better inverter

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:

  • Va = Vu-Vu
  • Vb = Vv-Vu
  • Vc = Vw-Vu

When Vv is the minimum:

  • Va = Vu-Vv
  • Vb = Vv-Vv
  • Vc = Vw-Vv

etc.

Notice now, all the voltages are zero or positive. http://18.85.17.197/wiki_img/3phase_voltage_2.png