This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TMS320F28027F: Trapezoidal and FOC 3 phase BLDC pump control method

Part Number: TMS320F28027F

Hi,

       We are helping an aquarium pump customer to migrate their pump controller platform from trapezoidal drive (Sensorless BLDC, control by percentage of PWM duty) to InstaSPIN solution, one of the characteristics of this application is the load of the system are different for each end customer as they install the aquarium pump and pipes system differently. This leads to, the max. power and max. rpm of the pump in each pump system will be different.

       The current solution of sensorless trapezoidal is straight forward to control, just adjust the PWM duty, the pump can be set to max. required performance (that according to the pump system loading) just by setting PWM to 100% duty.

       However, when migrating to InstaSPIN solution, which runtime parameters should be used, which is analogy to setting the duty of PWM ?

       Thanks in advance.

Regards,

     Nikolaus

  • Is below a valid and stable control method for InstaSPIN FOC ?
    1) set gUserParams.maxCurrent to maximum current reference to the pump's rated current (it is to ensure the pump do not exceed rated power rating)
    2) set gMotorVars.Speed_krpm to a value higher than pump's maximum speed in any pump system (ensure pump can deliver highest possible speed in any pump pipe system)
    3) Adjust the actual 0-100% relative speed by adjusting gMotorVars.OverModulation from 0 - 0.67
  • does the pump need to run at variable speeds, or it is just to run at maximum speed all the time?

    .OverModulation will set the LIMIT for the modulation. Think of it as setting the max limit of the PWM duty cycle (0.67 equivalent to 100%, assuming you are using the overmodulation feature in lab10).

    to make the pump run to the max limit you set you can
    a) set USER_MOTOR_MAX_CURRENT to the maximum peak current for the motor/application and command a maximum speed
    b) use a torque control method like lab05a where you set this torque/current command directly (note this lab doesn't have the overmodulation so you would need to combine with lab10 if you want higher duty cycle like trapezoidal)
    c) you can make changes to the code to take the Iq controller out of the control loop and just command Vs directly (normally the output of the Iq controller). This is most equivalent to commanding a duty cycle but it removes the Iq controller so you aren't exactly doing FOC any longer. It can give even faster response, but we don't typically recommend and it certainly isn't required for this pump application (some high performance applications like propellor control may like the performance tradeoffs)

    FOC isn't really necessary for a constant max speed application, but it can certainly be used.
  • The pump need to be run at variable speed.
    We tried to set .OverModulation value, and it works tentatively good for this application.
    Thanks for your advise.