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: IInertia calculation

Part Number: TMS320F28069M

I am using the C2000 TMS320F28069MFOC card with the 8305 driver to perform an inertia test as detailed in Instaspin lab05c.

How do you convert the inertia measurement given in units of PU/pu/sec^2 to Kg M^2?

I looked at the write up in section 10.5 (Bypassing Inertia Estimation) for the conversion, but when I try using it, the concerted inertia is way off almost a factor of 10 from what the data sheet states.

Also, I tried converting the estimated inertia using information from a TI writeup titled "Torque calculation and definition of flux unit V/Hz.

This write up calculates the motor torque given the formula :

T= (P/2)*motor flux(webers)**3/2*Iq

If I Take Tm/Iq = (P/2)*motorflux(webers)*3/2 = Kt  torque constant?

so in my example,

gMotorVars.SpinTAC.InertiaEstimate_Aperkrpm = 0.258812

gMotorVars.SpinTAC.FrictionEstimate_Aperkrpm = 0.7498223

gMotorVars.Flux_VpHz = 0.020012

Then,

0.258812(A/Krpm/sec)*60sec/min*(1rot/(2*pi*1000rad)*(0.020012/(2*pi))*4polepairs*3/2 = Inertia(kg M^2).

This calculation gives me the crrect inertia, but is it right?

Note: New email address: david.donofrio@vnbs.com

  • Hi David,

    The formula in 10.5 of user guide should give you the correct result on the Inertia conversion. Have you done the calculation based on parameters (USER_IQ_FULL_SCALE_FREQ_Hz etc.) from user.h? Can you please share the parameter in user.h and your calculation details for us to see what might be the possible reason?

    Also, are you using sensor based or sensorless in the estimation? Please make sure parameters like encoder lines and pole pair number are set properly in user.h file. Thanks.

    Han
  • Hi Han,

    I am using the TI card in the sensorless mode.

    Here are the values I am using based on what is in the user_j1.h file:
    #define USER_IQ_FULL_SCALE_FREQ_Hz (800.0)
    #define USER_IQ_FULL_SCALE_CURRENT_A (24.0)
    #define USER_MOTOR_NUM_POLE_PAIRS (4)
    #define USER_MOTOR_RATED_FLUX (0.021)

    Calculation : 0.258812*(0.021*24*4)/(800*2*pi) = 1.038e-4 kg_M^2
    Inertia spec for motor is 4.6e-5 kg_M^2.
    --------------------------------------------------------------------------------
    However, using the following equation:
    0.258812*(60)/(1000*2*pi) * (3/2)*(4)*(0.021/2*pi) = 4.9e-5 kg_M^2

    Which equation is correct?
  • Has anyone come up with an answer to the question above?
  • Can someone please answer the questions above?
  • Hi David,

    The first equation you listed looks correct. Can you please confirm how did you get the "Correct" INERTIA result for your motor? Maybe the value you have is in somewhat different unit or you have made some mistake in conversion. Thanks.

    Han
  • Han,

    The inertia number is from the manufacturer. What I need to know from you , is the 2nd equation correct?

     2nd  equation:
    0.258812*(60)/(1000*2*pi) * (3/2)*(4)*(0.021/2*pi) = 4.9e-5 kg_M^2 ??

  • David,

    I finally found where the problem is. The formula in section 10.5 (eq1) was to calculate the USER_SYSTEM_INERTIA parameter, which has a unit of [PU/(pu/s^2)]. However, the number you are using [InertiaEstimate_Aperkrpm] in a different unit and is calculated with the following formula:

    gMotorVars.SpinTAC.InertiaEstimate_Aperkrpm = _IQmpy(STVELCTL_getInertia(stObj->velCtlHandle), _IQ(ST_SPEED_PU_PER_KRPM * USER_IQ_FULL_SCALE_CURRENT_A));

    #define ST_SPEED_PU_PER_KRPM (USER_MOTOR_NUM_POLE_PAIRS / (0.001 * 60.0 * USER_IQ_FULL_SCALE_FREQ_Hz))

    Based on these formula, a correct formula for calculating would be

    0.258812*(60)/(1000) *(0.021/(2*pi)) = 5.19e-5 (kg_M^2)

    Thanks.

    Han
  • David,

    Do you have any further concern on this topic? If you agree to my answer, I will mark this thread as resolved. Thanks.

    Han
  • Han, I am confused on how you arrived at this formula.

    USER_IQ_FULL_SCALE_FREQ_Hz is equal to 800 isn't it? (according to my file it is)?

    What happened to the pole pairs? And isn't there a factor of 2pi missing?

    Can you please write out the solution in terms of all of the units so I can follow the derivation of the formula?

    Thanks,

    Dave
  • David,

    The inertia data you are using is calculated with the following formula

    (1) InertiaEstimate_Aperkrpm = USER_SYSTEM_INERTIA * ST_SPEED_PU_PER_KRPM * USER_IQ_FULL_SCALE_CURRENT_A

    (2) ST_SPEED_PU_PER_KRPM = USER_MOTOR_NUM_POLE_PAIRS / (0.001 * 60.0 * USER_IQ_FULL_SCALE_FREQ_Hz)

    =>

    (3) InertiaEstimate_Aperkrpm = USER_SYSTEM_INERTIA * USER_MOTOR_NUM_POLE_PAIRS / (0.001 * 60.0 * USER_IQ_FULL_SCALE_FREQ_Hz) * USER_IQ_FULL_SCALE_CURRENT_A

    =>

    (4) USER_SYSTEM_INERTIA = InertiaEstimate_Aperkrpm / USER_MOTOR_NUM_POLE_PAIRS *(0.001 * 60.0 * USER_IQ_FULL_SCALE_FREQ_Hz) / USER_IQ_FULL_SCALE_CURRENT_A


    And based on the original formula in 10.5 is

    (5) Inertia[Kg M^2] = USER_SYSTEM_INERTIA * (USER_MOTOR_RATED_FLUX * USER_IQ_FULL_SCALE_CURRENT_A * USER_MOTOR_NUM_POLE_PAIRS) / (USER_IQ_FULL_SCALE_FREQ_Hz * 2 * pi)

    Combining equations (4) and (5) we have

    (6) Inertia[Kg M^2] = InertiaEstimate_Aperkrpm / USER_MOTOR_NUM_POLE_PAIRS *(0.001 * 60.0 * USER_IQ_FULL_SCALE_FREQ_Hz) / USER_IQ_FULL_SCALE_CURRENT_A * (USER_MOTOR_RATED_FLUX * USER_IQ_FULL_SCALE_CURRENT_A * USER_MOTOR_NUM_POLE_PAIRS) / (USER_IQ_FULL_SCALE_FREQ_Hz * 2 * pi)
    = InertiaEstimate_Aperkrpm *(0.001 * 60.0) * USER_MOTOR_RATED_FLUX / (2 * pi)

    In your case, this comes to

    0.258812*(0.001 * 60.0) *0.021/ (2*pi) = 5.19e-5 (kg_M^2)

    Hope this explanation is clear to you. Thanks.

    Han