In Part 1 we saw three phase currents conspire to make one rotating field, and that torque comes from keeping that field 90° ahead of the rotor. The catch: the currents you actually control are three tangled sinusoids, all changing at once, and the rotor is a moving target. Controlling that directly is a nightmare.
The fix is one of the foundational ideas in machine control, and it's just a change of viewpoint. It happens in two steps.
Step 1 — Clarke: three wires become one vector
The three phase currents aren't independent — they always sum to zero — so there's really only two numbers of information in them. The Clarke transform repackages Ia, Ib, Ic into just two: Iα and Iβ, the horizontal and vertical parts of a single current vector on a fixed (stationary) grid. Same information, friendlier shape. That's the left panel below.
Step 2 — Park: stop chasing, start riding
Here's the useful part. That vector spins around the stationary grid — still AC. But what if we spin our own grid along with the rotor? The Park transform rotates the frame by the rotor angle θ. From that rotating seat the vector stops moving. Its two components — Id (aligned with the rotor, the "flux" axis) and Iq (90° ahead, the "torque" axis) — become steady DC values.
Hit play and watch: the top rows never stop wiggling, but Id and Iq sit still.
abc → αβ (Clarke) → dq (Park)
Left: stationary frame · Right: frame riding the rotorWith the rotor spinning, Ia/Ib/Ic and Iα/Iβ race around, but Id and Iq barely move. FOC controls those two DC values with simple loops — then transforms them back into the three AC currents the motor needs. All the hard control happens in the easy frame.
Two knobs, two jobs
Once you're in the dq frame, the motor has exactly two controls, and they mean something physical:
- Iq — torque. Current 90° ahead of the rotor magnet. This is the useful stuff: it's what actually turns the shaft. Set it and you've set torque.
- Id — flux. Current aligned with the rotor magnet. Normally you want this at zero — it makes heat, not torque. (It earns its keep at high speed for "field weakening," a later trick.)
Drag the γ slider to 90° and Id drops to zero while Iq takes the whole magnitude: every amp doing useful work. Slide it to 0° and it all flips to Id — maximum heat, zero torque. That single choice is the difference between an efficient drive and one that mostly makes heat.
Now that torque is just a DC number called Iq, how do we actually hold it at a target while the motor fights back? In Part 3 we build the current loop — a little PI controller wrapped around a real motor winding — and you get to tune the exact loop that runs at 20 kHz on Rhobic's hardware.