Skip to content

Clarke and Park Transforms

Reed Streets edited this page Jun 13, 2023 · 1 revision

When controlling a 3-phase motor, things can get complicated fast. This can be more easily seen in Figure 4 below. The rotating light-blue line is our goal current vector, the resultant of the A, B, and C vectors. To make it simpler, the Clarke and Park transforms are able to take these three AC values and effectively control them with two DC values. With these two values, we can then manipulate the motor however we want and the transforms will handle the complexity for us!

3 Phase GIF

Figure 4. Rotating 3 Phase GIF (Source)

Clarke Transform

The first step is the Clarke Transform. This transforms the system from the three phases and axes into a two phase system. As shown below, the light blue vector already becomes simpler to create. Since this now resembles a Cartesian coordinate plane (Y vs X), this is also the domain that is most often used for calculating the rotor's current angle (more on that later). Instead of x and y, we use alpha and beta.

Alpha-Beta GIF

Figure 5. Rotating Alpha-Beta GIF (Source)

The equations used to complete this transform come from simple trigonometric functions, but are often displayed in matrix forms, which can get confusing. Below, I've included the simpler form of the equations from my code. Here, phases.a, .b and .c are the three phase components, MATH_ONE_OVER_THREE is 1/3, and MATH_ONE_OVER_ROOT_THREE is 1/sqrt(3).

Clarke Math Code

Park Transform

From the output of the Clarke transform, we can then use the Park transform to implement a rotating frame of reference. This means that our two DC values will simply rotate along with our desired resultant vector. See below for a visualization of this concept.

Dir-Quad GIF

Figure 6. Rotating Direct-Quadrature GIF (Source)

With this new transformation, a new variable that needs to be tracked gets introduced: the angle between the rotating frame of reference and the stationary frame of reference from before. In the animation above, this angle is always increasing from 0 to 2PI, and then dropping back to 0. When the d and q axes are at the same points as the alpha and beta axes from before, the angle is 0. With the knowledge of this angle, we can set constant values on our d and q axes, and the output will be the same resultant vector. See below for the equations of this transform, where theta_rad is the angle between references and alpha_beta.alpha and .beta are the alpha and beta outputs of the Clarke transform.

Park Math Code