Electronic – Correct version of PWM speed control of BLDC

brushless-dc-motormotor controllerpid controllerpwm

Different sources shows different versions of speed control:

https://youtu.be/b5J5qkR7msc?t=418
enter image description here

In upper source output (duty cycle) from PI controller (that takes as input difference between desired and actual speed) is provided directly into PWM block.

https://www.researchgate.net/publication/273634792_Speed_Control_Analysis_of_Brushless_DC_Motor_Based_on_Maximum_Amplitude_DC_Current_Feedback?enrichId=rgreq-f79af632138101a2bb06fcf1df0fd5a5-XXX&enrichSource=Y292ZXJQYWdlOzI3MzYzNDc5MjtBUzoyMDc4MTIxNjU2NzI5NjhAMTQyNjU1NzY4OTkyOA%3D%3D&el=1_x_3&_esc=publicationCoverPdf
enter image description here

Here, we have two PI controllers, where first is the one that takes as input difference between desired and actual speed, and second that takes as input difference between output from first PI divided by mechanical constant and Imax.

  • what is difference between the two versions?
  • is Imax maximal value from ia, ib, ic or sum of them or something else?
  • several sources shows scheme where output of first PI controller (whose input is difference between desired and actual speed) isn't divided by mechanical constant. Should I divide output from first PI controller by mechanical constant or not?
  • PI controller gives output from 0 to 1 (the smaller difference between desired and actual value controled by the PI controller the bigger value in output). But if output from PI controller is duty cycle, then that mean that small difference between desired and actual speed should give PWM signal with very large duty cycle, and then provide more current to phases of bldc motor by switches. Shouldn't be that that PWM closes switches (provide current) when its signal have low state?
  • should pwm signal on low state reverse direction of current in phases similarly to this movie (link to specified fragment) https://youtu.be/b5J5qkR7msc?t=482 ?

Best Answer

1

what is difference between the two versions?

Before answering this question, note that, to increase motor speed at steady operation, we need to increase the torque. Torque increases when current increases. Current increases when voltage increases (or average voltage value in the case of PWM). So, to control speed, we can choose torque, current, or voltage as the controlling input. Out of these, voltage signal is easiest to measure, compare, generate and apply.

The first figure seems to do just that. Find difference in reference speed and measured speed. Feed this error signal to a PI controller to calculate the voltage needed to be fed to the motor. There is only one loop in this control system. The PI controller gains are selected to directly calculate the necessary voltage.

In the second system, motor speed is controlled by controlling the current. So the error signal is fed to a PI controller followed by a gain (\$T^* / K_T\$) to calculate the current needed to be fed to the motor. This is one loop. The PI controller gains are selected so that it will calculate the necessary current. However, as I mentioned in the above paragraph, a voltage is easier to generate and apply. So another control loop, an inner loop is made which compares the reference current to the actual current (\$I_{max}\$). This current-error signal is fed to a PI controller which calculates the voltage needed to generate the required current. This inner loop can seen as a mechanism which converts the voltage source into a current source by closed loop action. This loop's PI controller gains are selected to calculate voltage from current-error.

So, the first system has one loop where controller directly calculates the needed voltage to control the speed. The second system has two loops; one to calculate the current needed to control the speed, and an inner loop to calculate the voltage needed to control the current.

In fact, the red boxes clearly mark and label the two loops as speed control loop and current control loop.

In fact, the linked reference paper already has these info

The control system is developed based on speed control loop, current control loop and ...

the produced speed error is processed in PI speed controller. The output of the controller is in reference torque value

the torque reference is converted to equivalent reference current

This current becomes input of current controller

2

is Imax maximal value from ia, ib, ic or sum of them or something else ?

The paper you have linked to mentions that \$I_{max}\$

  1. Single dc signal
  2. The maximum amplitude DC current is obtained from three phases quasi-square armature currents
  3. he three phases current are rectified to produce maximum amplitude of single DC current.

It is not clear to me, but I would guess that current in each phase is rectified (peak detector circuit). The three resulting signals are compared and the maximum out of the three (at the current instant) is chosen as \$I_{max}\$.

3

several sources shows scheme where output of first PI controller (whose input is difference between desired and actual speed) isn't divided by mechanical constant. Should I divide output from first PI controller by mechanical constant or not ?

Case 1 : Only one loop

The PI controller gains are designed to directly give the voltage required to control the motor. In this case, dividing by the torque constant is not required.

Case 2

Two loops. The outer loop PI controller is designed to calculate the torque required from the speed-error signal. Then you need to convert it into current required. So the division is necessary.

But wait! Imagine that both controller gain P and torque constant Kt are constants . e.g. P=3 and 1/KT=2. So the control hardware/software has to multiply the speed-error signal with 3 and then its result by 2. Why not multiply the speed-error signal by 6 ?! So, immediately after doing the control design, merge the two separate multiplications into one and then the final implemented controller will not have a separate multiplication by 1/KT. So, the multiplication by the mechanical constant can be avoided by merging it into the controller gain. (Depending on how you implement your PI controller, this merging of gains should be correctly applied on the I gain also. The above example imagines a P controller for simplicity).

When you refer multiple sources, you may notice that some of them shows the figure without merging multiplications and some after merging the multiplications. Either way is okay as long the final implemented gains are "correct".

4

PI controller gives output from 0 to 1 (the smaller difference between desired and actual value controlled by the PI controller the bigger value in output). But if output from PI controller is duty cycle, then that mean that small difference between desired and actual speed should give PWM signal with very large duty cycle, and then provide more current to phases of bldc motor by switches. Shouldn't be that that PWM closes switches (provide current) when its signal have low state?

The question is not clear to me. Can you clarify; especially the last sentence ?

If the reference speed is larger than the actual speed, the speed-error signal will be positive. This will cause the output of the PI controller to increase. This will cause PWM duty cycle to increase. This will result in the average voltage applied to the motor to increase. The motor will speed up and the error signal will move towards zero.

5

should pwm signal on low state reverse direction of current in phases similarly to this movie (link to specified fragment) https://youtu.be/b5J5qkR7msc?t=482 ?

From what I understand, if the duty cycle is higher than 50%, the negative voltage (low state) is applied for a shorter duration than the positive voltage (high state). So, on average the voltage applied to the motor is positive. So the current will flow in the positive direction.

If the motor was like an ideal resistor, then the current will be positive when the PWM is in high state and negative when it is in the low state. But the motor has inductance. So the current cannot suddenly change direction like a resistor. It will instead try to follow the average value of the voltage which depends on the PWM duty cycle. This averaging effect is mentioned in the video also.

To further illustrate, consider an ideal inductor. Its current-voltage relation is given by \$v(t) = L \frac{d i(t)}{dt}\$. When \$v(t)\$ is negative, the current doesn't suddenly become negative. Instead the rate of change of current becomes negative. If the initial current was positive, it will take some time for the current to reach a negative value. Before this time reaches, the PWM would have switched its state several times. So the current, then follows the average value of the voltage.