Main Content

Speed Regulation of a Brushless DC Motor Drive Using a Variable DC Link Six-Step Inverter

This example demonstrates the speed regulation of a brushless DC (BLDC) motor drive using a variable DC link six-step inverter.


In its basic form, BLDC motors consist of a trapezoidal back-EMF permanent magnet synchronous motor fed by a three-phase inverter. A position sensor attached to the rotor provides the position signals required to synchronize the stator currents with the back-EMFs so that the motor operates as a synchronous motor at all times. Because the voltage magnitude is proportional to the motor speed, the speed can then be regulated by varying the DC link voltage connected to the three-phase inverter.

Electrical Model

A DC/DC converter is fed by an ideal DC source and its output filter allows you to vary the DC link voltage. The DC bus is connected to a three-phase, two-level converter. This converter generates the appropriate three-phase voltage for the operation of the 300 W, 4000 rpm BLDC motor.

Control System

The main components of the control system are:

  1. Speed Regulator - The regulator compares the actual motor speed to the speed reference and generates the DC voltage reference.

  2. Voltage Regulator - The measured DC link voltage is compared to the reference value. The resulting error is fed to the anti-windup PI regulator. To correct the error, the regulator outputs the required duty cycle (D) value to the DC-DC converter.

  3. Commutation Sequences and Pulses Generation - Because the back-EMFs are of trapezoidal form (with a flat area of 120o), the maximum torque with the lowest ripple develops if the currents are kept constant during the time intervals when the back-EMFs are also constant. This condition implies a six-step operation for the inverter where only two phases are conducting at a time. Based on the rotor position (obtained from the Hall Effect sensors) and the motor rotation direction, this block generates appropriate pulses to the three-phase inverter feeding the motor.

This table lists the six possible commutation sequences for the counterclockwise rotation of the motor:

This figure shows two commutation sequences for the counterclockwise rotation of the motor.

For proper operation of a BLDC motor, it is necessary to keep the angle between the stator and rotor flux close to 90 degrees. With six-step control, the motor has a total of six possible stator flux vectors. The stator flux vector must be changed at a certain rotor position. However, with a six-step control technique it is not possible to keep the angle between the rotor flux and the stator flux at 90 degrees. The real angle varies from 60 degrees to 120 degrees.

For the [C- B+] sequence, you can verify from the left image in the diagram that the position of the rotor north pole varies from 60 degrees to 120 degrees ahead of the stator north pole, with repulsion between poles of same polarity producing a counterclockwise rotation. At the same time, the position of the rotor south pole varies from 120 degrees to 60 degrees behind the stator north pole, with attraction between two opposite poles still producing counterclockwise rotation.


Run the simulation and observe the waveforms on Scope 1. Initially, the motor rotates at 4000 rpm with no load.

At 0.1 s, a load torque of 0.6 N.m is applied to the motor. The control system increases the DC link voltage reference in order to maintain the motor speed at 4000 rpm.

At 0.25 s, the speed reference is reduced to 1000 rpm. The control system significantly decreases the DC link voltage reference in order to respect the new speed reference. Notice the reduced frequency of the motor phase currents.

On Scope 2, you can observe the DC regulator output (D) as well as the DC link voltage variations.

Real-Time Simulation

If you have Simulink Real-Time and a Speedgoat target computer, you can run this model in real time.

  1. Open the Configuration Parameters window (or press Ctrl+E ), click Code Generation, and set System target file to an STF for a Simulink Real-Time model.

  2. Connect to the target and, in the Real-Time tab, click Run on Target.

Your model will then be automatically built, deployed, and executed on the target. Depending on your target streaming bandwidth, you may have to reduce the number of signals transferred in real-time from the target to the host computer.


Musil, J. 3-Phase BLDC Drive Using Variable DC Link Six-Step Inverter. Freescale Czech Systems Laboratories. 2006.

See Also

Motor Control (Part 1): An Introduction to Brushless DC Motors, Melda Ulusoy, MathWorks