Original Attachment has been moved to: Lecture12.zip
First of all thank you for your great work.
In the model, only the speed closed-loop control is used. The duty cycle signal is obtained from the output of the PI controller. Then the duty cycle of the six switch tubes is obtained according to the phase change table. I would like to ask you:
Question 1: What should I do if I want to add three current loops to control the three-phase current?
My idea is that the output of the speed PI controller gets the amplitude of the reference current, and then the three-phase current reference is obtained based on the Hall signal lookup table. After three current PI controllers, the three-phase reference voltage is obtained. Is my idea right so far? After getting the three-phase reference voltage, how do I get the duty cycle signal of six switches as you did?
I drew a control chart:
Question 2: You are switching as shown in Figure 1, and the upper and lower arms seem to be independent. If I want to implement the approach of Fig. 2, one phase arm is complementary, the second phase is grounded, and the third phase is not powered. What should I do?
In addition, I use HVP-MC3PH.
In regards with question number #1, my advice is to implement a protection like this in case of BLDC 6-step commutation:
You read the DC bus current and depending on how much value is drawn from the power source you should limit the amount of voltage that is applied to the motor phase (duty cycle)
Of course you could do it your way as well but you will load the CPU with unnecessary computations. Also since the phase currents tends to have a square phase and the each phase is disconnected 2 times per commutation sequence you will have discontinuities in the PI controllers.
Your proposed method works for PMSM where all phases are powered all the time but is not suitable here.
In regards with question number #2 why do you want to do that ? You will increase the commutation losses since you will have significant more transistor switches. As far as i know that complementary PWM control method can be used in case you want to reduce the voltage stress of the transistors. In the original method the voltage stress is Vdc - the lower transistor needs to switch the entire Vdc while the method you are proposing is having a voltage stress of Vdc/2. For most of the transistors at such low DC level that should not be an issue. Are you planning to use the setup for high voltages - in that case that would make sense.
Anyhow - is case you wish to go with complementary PWM control method, then you need to modify the PWM blocks and the way the BLDC communtation blocks (standard Simulink logic) of how the PWM duty cycles is computed. In the example model the 6-step commutation is implemented with state-flow diagrams.
My advice - just simulate the new 6-step commutation based on complementary method and then add the PWM output blocks to test on real HW.
Hope this helps!
Thank you very much for your good advice.
I will adopt the suggestion in Question 1: Use the bus current to do the PI control of the current loop.
For Question 2: I would like to ask you again：Can HVP-MC3PH drive the BLDC motor with low rated voltage? For example 48V.
Is my idea right so far?
MPC5744P and MotorGD DevKits Setup for Motor Control Application.
For all the models, applications and videos shown in this course, the MPC5744P DevKit was configured to use external power supply from the MotorGD DevKit Power Stage.
The MCP5744P DevKit jumper configurations are show below:
The MotorGD DevKit Jumper configurations configurations are show below:
The MotorGD DevKit and Linix Motor 45ZWN24LINIX - sensors and phase connections are shows below:
If you setup the boards this way and presumably if you have the same motor type, then by simply using the files attached below and the How To Program the Application in the Flash/RAM you should be able to have the motor running in OPEN or CLOSED loop.