A
simple BLDC speed control by SimuLink
Chao, Chun-Tang (趙春棠) in STUST
2015.11.21
² BLDC
Model (with Driver)
I/P: Duty Cycle ( 0~1 OR 0% ~100% )
O/P: Rotation Speed
The above
unit-step response (time constant = 2s) may
imply that
Duty Cycle = 100%
=>
Rotation Speed = 2500 rpm
Duty Cycle = 90% => Rotation Speed = 2500X0.9= 2250 rpm
Duty Cycle = 80% => Rotation Speed = 2500X0.8= 2000 rpm
………………………………………………………..
The above simulation can also be regarded as the open-loop control (BLDC_open.mdl).
² BLDC closed-loop
control – with P controller (Kp = 0.01) (BLDC_closed_P.mdl)
System I/P: Desired rotation speed= 2000 rpm
System O/P: Rotation
Speed (steady-state) = rpm
Note: ess
(steady-state error) = 2000-1923 = 77 rpm
Error Signal (Controller I/P): The following figure also shows ess (steady-state error) = 2000-1923 ~= 77 rpm
Controller O/P: When the steady-state is achieved, the controller output is 0.77, which means the final duty-cycle command to the BLDC will be 77%.
Remark: With closed-loop P controller, we find that the system time constant is greatly reduced, which yields much faster response. The crucial drawback is the steady-state error, which can be eliminated by the following I controller.
In the initial
period 0~0.3s, the duty-cycle command to the BLDC is almost greater than 1 (100%),
which is nonsense! Do you find it?
I hope this example can show you the difference between
practical implementation and theoretical simulation.
² BLDC closed-loop
control – with I controller (KI = 0.01) (BLDC_closed_I.mdl)
System I/P: Desired rotation speed= 2000 rpm
System O/P: Rotation Speed (steady-state) = 2000 rpm Note: ess (steady-state error) = 0
Error Signal (Controller I/P): The following figure also shows ess (steady-state error) = 0 rpm
Controller O/P: When the steady-state is achieved, the controller output is 0.8, which means the final duty-cycle command to the BLDC will be 80%.
Remark: The I controller successfully make ess approach to zero.
In the beginning BLDC model, we have “Duty Cycle = 80% => Rotation Speed = 2500X0.8= 2000 rpm”. That’s why the final duty-cycle command to the BLDC will be 80%.
In this case, the duty-cycle command to the BLDC is also usually greater than 1 (100%), thus the practical result will be different.
² BLDC closed-loop
control – with PI controller (Kp=0.01 and KI = 0.01) (BLDC_closed_P_I.mdl)
System I/P: Desired rotation speed= 2000 rpm
System O/P: Rotation Speed (steady-state) = 2000 rpm Note: ess (steady-state error) = 0
Error Signal (Controller I/P): The following figure also shows ess (steady-state error) = 0 rpm
Controller O/P: When the steady-state is achieved, the controller output is 0.8, which means the final duty-cycle command to the BLDC will be 80%.
Remark: The PI controller has both advantages of P controller and I controller. The system response is much faster and the steady-state error can be eliminated to be zero. In the initial period 0~0.3s, the duty-cycle command to the BLDC is also greater than 1 (100%), thus the above simulation result will not be the same as the practical result. In fact, the BLDC is often controlled by micro-controller. To increase the accuracy, you may apply the digital control theory and consider the sampling time.
You must already find both in the open-loop control and the closed-loop control with I or PI controller, the final duty-cycle command to the BLDC is 80%, the same value, to keep rotation speed at 2000 rpm. But the closed-loop control system has many advantages over the open-loop control system.
This web-page just hopes to show you the importance of theory and the difference between practical implementation and theoretical simulation.
Happy Learning !