2
\$\begingroup\$

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 ?
\$\endgroup\$
1
  • \$\begingroup\$ Why would you even contemplate applying PWM to both the hiside and the loside MOSFETs? You only need PWM to one of those; the other is simply switched on and off for commutation. \$\endgroup\$ Commented Oct 20, 2022 at 16:45

1 Answer 1

1
\$\begingroup\$

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.

\$\endgroup\$
8
  • \$\begingroup\$ Thanks for extensive answer on my questions. When it comes to question 4.: Let's imagine situation where we have desired speed 1000 and actual speed 100. Error is then equal to 900. PI controller output then isn't on steady state and thus shouldn't have value 1000 but much much lower, for example 300. Then after scaling output of PI controller to range <0, 1>, its value is equal to 0.3 (duty cycle = 30%). Now let's imagine that speed error is 0, then PI output should be equal to 1000 (duty cycle = 100%). I think that It should be conversely. The bigger error, the bigger duty cycle. \$\endgroup\$
    – Zekhire
    Commented Sep 28, 2020 at 16:33
  • \$\begingroup\$ 50% duty cycle would cause equal time for positive and negative states, and average voltage to be 0. Average torque would be 0. Friction would cause the motor to slow down. Assume the speed-error is 0, I would expect the PI output to be something like 55% duty cycle (assuming 5% to cancel the friction torque). Now, if the speed error increases for some reason (say, the reference speed has been increased by the operator), then I would expect the PI controller output to increase duty cycle to a higher value, say 65% to provide more positive average voltage and speed up the motor. \$\endgroup\$
    – AJN
    Commented Sep 28, 2020 at 16:55
  • \$\begingroup\$ contd... However, in your comment above you say duty cycle is 100% when speed error is zero. At 100% torque the maximum voltage is being applied. Why would you need maximum voltage when the error is zero ? You need only enough to cover the friction losses and load (if any load is connected). \$\endgroup\$
    – AJN
    Commented Sep 28, 2020 at 16:56
  • \$\begingroup\$ "the smaller difference between desired and actual value controlled by the PI controller the bigger value in output". This is not correct i think. Larger duty cycle for larger input would be the usual PWM logic. Can you draw the input output characteristic of the specific PWM logic you are considering. I think your question can be answered only if you give a specific implementation (circuit or software) of the PWM logic. \$\endgroup\$
    – AJN
    Commented Sep 28, 2020 at 16:58
  • \$\begingroup\$ Until now I have considered that PWM takes values {0, 1} (0 - low state, 1 - high state). Also i thought that when there is large speed error, then there should be large duty cycle in order to quickly speed up motor. When speed error is 0 then duty cycle also should be 0 what cause that motor slow down but then error cause that duty cycle increase and thus speed will be maintained on desired level. That however should cause some oscilations in speed. \$\endgroup\$
    – Zekhire
    Commented Sep 29, 2020 at 8:40

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.