By Ron Wilson, Editor-in-Chief, Altera Corporation
How can it take multiple CPU cores, a bank of hardware accelerators, and a 10G Ethernet interface to control an electric motor? For designers who have run a motor with a $1 microcontroller (MCU), the question may sound absurd. Yet the answer is both an intriguing case study in control systems design and an indication of the direction in which architecture for real-time systems is moving.
The Starting Point
Permit us to introduce the diminutive central character in our drama, the permanent-magnet synchronous motor, henceforth known by his stage name, PMSM. PMSMs come in a wide range of sizes and shapes, and many intended applications, from opening and closing massive doors to articulating robotic surgical tools. Across this space they are gaining popularity because of their inherent reliability, low cost, and—to our point here—their accuracy and efficiency when properly controlled. In effect, as the application becomes more demanding, PMSMs allow you to transfer complexity from the electromechanical design into software. For further reading: See a variety of tools for developing drives on FPGAs. Explore a full reference design for a multi-axis drive on an FPGA. Investigate the Cyclone® V SoC used in one reference design.
PMSMs are mechanically and electrically very simple (Figure 1).The rotor is, as the name suggests, a permanent magnet. There are (normally) three stator windings, evenly spaced 120 degrees apart around the motor case. The only real secret sauce, if you will, is that the windings aren’t uniform: the density of turns is sinusoidally distributed around the stator, so that the windings actually overlap each other a bit at the edges. By applying sinusoidal currents in appropriate phases to the windings, you create a rotating magnetic field at right angles to the rotor field, thereby applying torque very efficiently to the rotor.
Controlling the PMSM is not rocket science. A simple MCU can use a look-up table and interpolation to generate the necessary time-varying sinusoids for the driver circuits, which in turn provide current to the windings. If you do the arithmetic correctly, the windings will generate a rotating magnetic field inside the motor, and the rotor will obediently follow it. There are a few details about starting up from a dead stop, but otherwise--mission accomplished, right? Not quite.
Click here to read more ...