Pulse Width Modulation for Single Phase DC Brushless Motor

  • Thread starter K R Narasimha Kumar
  • Start date

Thread Starter

K R Narasimha Kumar

We are simulating a Single Phase DC Brushless Motor using Simulink/Matlab. We have made a motor model in simulink. Now, we would like to control the input current pulse using Pulse Width Modulation(PWM). As of now we are just beating around the bush debating on whether to use a PID or PWM for Control.
Please let us know what's the right/suitable approach if not the algorithm.


Yuri Mitnick


here are the guidelines:

1. Let’s suppose sinusoidal torque curve distribution function (generally speaking, trapezoidal may be better); phase back EMF has the same distribution;
2. Coarse position sensor - Hall effect - with 180 el. degrees resolution required for commutation;
3. Commutation is reversing current direction every 180 el. degrees;
4. For low speed given current loop with sufficient gain, commutation is almost ideal with current having almost rectangular shape;
5. For ideal commutation and rectangular current, motor torque is rectified sinusoidal function;
6. To increase motor torque around zero values (and flatten around maximal values), some saliency might be introduced in motor design;
7. At high speed, ideal rectangular current shaping is distorted because of motor voltage limitation (by DC bus voltage) - dI/dt at current reverse is finite due to motor inductance and high back EMF proportional to speed hits current build up;
8. Commutation phase advance at high speed may help to increase torque-speed area;
9. For PWM control use schematics similar to that of "Advanced Unipolar PWM Technique" at


10. For current control, use PI regulator - current error amplifier - which is a 2-input inverting operational amplifier with a serial RC feedback; current command should be reversed every 180 el.degrees according to digital Hall signal;
11. In Matlab simulation, use average values if not interested PWM phenomena details - average motor voltage that is DC bus voltage multiplied by PWM duty cycle is proportional to voltage command (the output of current error amplifier).

I never seen a real single phase BLDC motor. Normally, they are at least 3 phases.
PID is a classical control algorithm for the error correction between command and the actual. PWM is a digital way to control current. In theory, if the controller delivers 100% current, then the pwm duty cycle is at 100%. Not all controllers can stay 100% duty cycle especially if they use bootstrap circuit for the highside transistors.
Typically, you calculate the 3 terms and sum 'em
into a scaling factor times 100% pwm duty cycle to drive the gates of say well in your case an "H" bridge. The controller usually has a limit to keep the pwm scale reasonable and also
to guard against "windup."