Main Content

Speed Regulation of Brushless DC Motor Drive Using a Hysteresis-Based Current Controller

This example shows the speed regulation of a brushless DC motor (BLDC) drive using a hysteresis-based current controller.


BLDC motors differ from brushed DC motors in that they use electronic commutation (rather than mechanical) to provide power to the windings. In its basic form, a brushless DC motor consists 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 back-EMFs are of trapezoidal form (with a flat area of 120 degrees), the maximum torque with the lowest ripple is developed 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.

Electrical Model

The DC bus, modeled by an ideal DC voltage source of 310 V, connects to a three-phase, two-level converter. This converter generates the appropriate three-phase voltages to operate 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. If the motor needs to be accelerated, the regulator increases the reference current magnitude in order to create more torque. If the motor speed is higher than the reference, the regulator reduces the reference current magnitude.

  2. Decoder — Based on the Hall sensor signals that detect the rotor position, the decoder outputs three square-wave signals that are synchronized to the motor back-EMFs.

  3. Hysteresis-Based Current Controller — Based on the reference current magnitude and the signals provided by the decoder, three current references are generated and compared to the measured motor phase currents. The errors are fed to a hysteresis control with an adjustable band to generate the required gating signals for the three-phase inverter. The switching frequency is variable and dependent on the value of the hysteresis band and the dynamics of the stator circuit.


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

At 0.05 s, a load torque of 0.7 N.m is applied to the motor. The control system increases the reference current in order to maintain the motor speed at 3000 rpm.

At 0.1 s, the speed reference is reduced to 1500 rpm. To respect this new speed set point, the control system produces a large negative torque. Notice the reduced frequency of the motor phase currents.

At 0.15 s, a negative load torque of -0.7 N.m is applied to the motor. The motor is now acting as a generator producing 68 Watts.

Real-Time Simulation

If you have Simulink Real-Time and a Speedgoat target, 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 slrealtime.tlc .

  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.