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.

TMS320F28069M: Max. possible RPM with a 4 Pole BLDC motor

Part Number: TMS320F28069M

Hi,

Wondering what is the maximum possible achievable motor spindle RPM that's possible with the F28069M running at the default 90MHz.

Any thoughts ? How to find out this figure ?

Thanks,

Manu

  • InstaSPIN-FOC isn't necessarily gated by physical speed in RPM, but instead by electrical frequency. The equation is

    Electrical_Freq_Hz = RPM * poles / 120

    Our main control techniques typically work just fine up though 2 KHz

    Sean
  • Hi Sean,

    Thank you for clarifying, much appreciated. Which parameters do affect the frequency ?
    I mean any parameter, which is configurable in user.h ?
    It does not seem obvious to me, as to which parameter would control the motor electrical frequency.
    Have a 4 pole motor which can go up to 20,000 RPM; 20,000 x 4/120 = 666 Hz, well within the 2kHz limits at least.

    Thanks,
    Manu
  • Correct, the numbers you gave seem reasonable. Keep in mind that sensorless control can be difficult at high frequencies (approaching 2khz). The electrical drive frequency is not a parameter in user.h, it is related to the frequency at which the inverter drives the motor, which in turn is related to the commanded output

    Sean
  • Trying to adapt user.h, got really confused on this line in the instaspin_lab manual:

    "Lastly, low inductance motors usually have low flux values also. Make sure that the full scale voltage is set to a value that allows the flux to be identified. Consider this formula when selecting full scale voltage:

    Min Flux in V/Hz = USER_IQ_FULL_SCALE_VOLTAGE_V/USER_EST_FREQ_Hz/0.7"
    This is on Page 72 of the manual.

    Trying to dissect that statement, using the macros from user.h:

    #define USER_ISR_FREQ_Hz ((float_t)USER_PWM_FREQ_kHz * 1000.0 / (float_t)USER_NUM_PWM_TICKS_PER_ISR_TICK)
    #define USER_CTRL_FREQ_Hz (uint_least32_t)(USER_ISR_FREQ_Hz/USER_NUM_ISR_TICKS_PER_CTRL_TICK)
    #define USER_EST_FREQ_Hz (uint_least32_t)(USER_CTRL_FREQ_Hz/USER_NUM_CTRL_TICKS_PER_EST_TICK)

    I am unsure about these values, but found them in the accompanying spreadsheet.

    USER_NUM_PWM_TICKS_PER_ISR_TICK is it 3 ticks ?
    USER_NUM_ISR_TICKS_PER_CTRL_TICK is 1 ?
    USER_NUM_CTRL_TICKS_PER_EST_TICK is 1 ?

    Are they the right values ?

    USER_ISR_FREQ_Hz = 45.0 * 1000/3 = 15000.0
    USER_CTRL_FREQ_Hz = 15000.0/1 = 15000.0
    USER_EST_FREQ_Hz=15000.0/1 = 15000.0

    With the following definitions, calculated using the spreadsheet:
    // -- tweaks
    #define USER_PWM_FREQ_kHZ (45.0)
    #define USER_IQ_FULL_SCALE_FREQ_Hz (1386.0)
    #define USER_MOTOR_FLUX_EST_FREQ_Hz (133.0) //(50.0)
    #define USER_MAX_ACCEL_EST_Hzps (18.0)
    #define USER_IQ_FULL_SCALE_CURRENT_A (18.0)
    #define USER_IQ_FULL_SCALE_VOLTAGE_V (34.0)

    Min Flux in V/Hz = 34.0/15000.0/0.7 = 0.0032380952380952380952380952381

    Now, does it mean to replace

    #define USER_MOTOR_RATED_FLUX (0.0340334028)

    with this calculated value ? I don't understand where it has to be set ?

    Thanks,
    Manu
  • The calculation you derived is a lower bound for the value of the rated flux that will be identified by the FAST observer in lab2c. You don't need to change the user.h based on this value. If FAST isn't able to identify the rated flux because of the low inductance of the motor, then you may consider changing USER_EST_FREQ_Hz (or USER_IQ_FULL_SCALE_VOLTAGE_V). I don't believe you'll need to do either of these as 0.0032 is a reasonably low enough bound for rated flux during motor ID

    Sean
  • Hi Sean,

    Thanks for the clarification.

    Thanks,

    Manu