PowerElecHub

Clarke and Park Transforms, Animated

Three-phase currents in a drive or grid inverter are three sinusoids 120° apart. Regulating them directly means asking a PI controller to follow an AC reference, which it cannot do without error at the line frequency. The Clarke and Park transforms turn a balanced three-phase set into two DC values that ordinary PI loops can hold. The animation shows each step, with the same instant marked in all four panels.

Clarke scaling

10 % · d and q oscillate at 0.10·f

10 % · appears at 6·f in dq

20 % · appears at 2·f in dq

30 % · does not reach α, β, d or q

Phase currents a, b, c (two periods, cursor = now)
abc
Space vector in the αβ plane
abcdq

Thin arrows: phase contributions along the a, b, c axes. Dashed: the rotating d and q axes.

The same vector seen from the dq frame
dq

Frame angle θ_f = 60°

d and q against time
dq

Values at the cursor

a
0.500
b
0.500
c
-1.000
α
0.500
β
0.866
γ
0.000
d
1.000
q
0.000

Convention: d axis on phase a at θ = 0, d = α·cosθ + β·sinθ, q = −α·sinθ + β·cosθ. γ is the zero-sequence component.

From three phases to two: the Clarke transform

In a three-wire system the three currents always add up to zero, so only two of them are independent. The Clarke transform projects a, b and c onto two perpendicular axes, α along phase a and β 90° ahead of it: α = (2/3)(a − b/2 − c/2) and β = (2/3)(√3/2)(b − c). The factor 2/3 makes the transform amplitude-invariant: a balanced set with a peak of 1 gives a space vector of length 1 that turns at the electrical frequency.

The αβ panel builds that vector head to tail from the three phase contributions along axes at 0°, 120° and 240°. Each contribution grows and shrinks with its phase current, and their sum traces a circle.

The power-invariant form uses √(2/3) instead of 2/3. The vector is then √(3/2) ≈ 1.22 times longer, and power computed from the transformed quantities equals the three-phase power directly: P = v_d·i_d + v_q·i_q, against P = (3/2)(v_d·i_d + v_q·i_q) in the amplitude-invariant form. Both are correct. The mistake is to mix them, for example taking current limits from one and torque constants from the other. Switch the scaling above and the circle grows accordingly.

From stationary to rotating: the Park transform

The αβ vector still rotates, so α and β are still sinusoids. The Park transform looks at the vector from axes that rotate with an angle θ: d = α·cos θ + β·sin θ and q = −α·sin θ + β·cos θ. When θ follows the vector, the vector stands still in the dq frame and d and q are constant.

The convention used here puts the d axis on the phase-a axis at θ = 0, so a cosine current in phase a with no phase shift gives d equal to its amplitude and q = 0. Some textbooks and software libraries align the q axis with phase a instead, or define the phase currents with sines, which exchanges the roles of d and q or flips a sign. Before comparing numbers with another source, check which alignment it uses.

The load-angle slider makes the currents lag the reference by φ. In this convention a lagging current gives d = cos φ and q = −sin φ, so the arrow in the dq panel turns clockwise as φ increases.

Reading the four panels

The first panel shows the last two periods of the phase currents, with the present instant at the right edge. The second shows the space vector in the stationary αβ plane, the dashed d and q axes rotating with the frame angle, and a grey trail of the last period. The third shows the same vector from inside the rotating frame, and the fourth plots d and q against time. With the frame synchronous and no disturbance, the arrow in the third panel does not move and the traces in the fourth are flat lines.

What disturbances look like in dq

Frame speed mismatch: if θ runs faster or slower than the currents by a fraction s, the vector drifts around the dq frame and d and q oscillate at s·f. This is what a speed observer or PLL with a wrong estimate produces; a 10 % error at 50 Hz gives a 5 Hz beat on both axes.

5th harmonic: the 5th harmonic of a three-phase set rotates backwards at 5f. Seen from a frame turning forwards at f it rotates at −6f, so it appears as a 6f ripple on d and q. Inverter dead time is a common source. The 7th harmonic rotates forwards at 7f and lands at 6f as well.

Negative sequence: an unbalanced set contains a component that rotates backwards at f. In the dq frame it appears at 2f, and the trail in the αβ plane becomes an ellipse. Grid-connected converters on unbalanced lines see exactly this ripple, which is why some controllers add a second frame rotating at −θ to regulate it separately.

Zero sequence: a component that is equal in all three phases has no α or β part, because both a − b/2 − c/2 and b − c cancel it exactly. It appears only in the zero-sequence value γ in the readout and leaves d and q untouched. In a three-wire system no zero-sequence current can flow, but a zero-sequence voltage can, and third-harmonic injection and space vector modulation use it to extend the linear modulation range.

In firmware

A field-oriented controller applies Clarke to the measured currents, Park with the rotor or grid angle, PI regulators to d and q, and then inverse Park and inverse Clarke, or space vector modulation, to produce the three duty cycles. Because only two currents are independent in a three-wire system, many drives measure two phases and compute the third as −(a + b).

The angle used in Park must belong to the same instant as the current samples. If the currents are sampled at one point of the PWM period and the angle is taken half a period later, the frame is rotated by ω·Δt, which appears as cross-coupling between d and q that grows with speed. The timing between PWM, ADC and the control interrupt is covered in a separate visual explainer.

The animation follows the equations stated on this page. Conventions differ between textbooks and software libraries; check the one your code uses before comparing numbers.