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.

TMDSHVMTRINSPIN: motor parameters identification problems => Value to be measured on motor?

Part Number: TMDSHVMTRINSPIN
Other Parts Discussed in Thread: DRV8353RS-EVM

Dear support team.

I'm trying to drive a new motor with TMDSHVMTRINSPIN + TMDSCND280025C.

I'm using universal motor control lab.

Actually automatic identification of the parameter is stopping after ramp up state. It seems to stop in the constant speed state.

Ramp up is clean and smooth, no noise, sinusoidal current but after this state current become unstable and motor stops.

So my idea is to mesure the motor parameters and set those parameters in user_mtr1.h.

Based on alredy identified motors i came to the conclusion than :

USER_MOTOR1_Rs_Ohm is phase to middle point resistor (so half of the resistor measured from phase to phase because my motor is star connected)

USER_MOTOR1_Ls_d_H is phase to phase inductor.

USER_MOTOR1_RATED_FLUX_VpHz was calculated like this : Bemf measured is 121.75V peak to peak at 1188RPM. Motor is 10 poles so electrical frequency is (1188/60)/5=99Hz. I assume that rated flux is peak voltage so = (121.75/2)/99=0.615=USER_MOTOR1_RATED_FLUX_VpHz

Can you please confirm my understanding of the 3 parameter is correct?

For information I set parameters like this and motor is running fine.

With best regards.

  • What type of the motor are you using? Currently, the lan only supports the identification for PMSM.

    You may try to tune the identification variables in user_mtr1.h file according to the specification of the motor.  And don't add any load on the motor when run this lab for motor parameters identification, to ensure that the motor spins smoothly during Flux measurement and Ls identification states.

    #define USER_MOTOR1_RES_EST_CURRENT_A       (1.0f)            // A - 10-30% of rated current of the motor

    #define USER_MOTOR1_IND_EST_CURRENT_A       (-1.0f)            // A - 10-30% of rated current of the motor, just enough to enable rotation

    #define USER_MOTOR1_MAX_CURRENT_A              (5.0)               // A - 30~150% of rated current of the motor

    #define USER_MOTOR1_FLUX_EXC_FREQ_Hz          (40.0f)          // Hz - 10~30% rated frequency of the motor

  • Dear Yanming Luo,

    Motor is a PMSM and there is no load on the shaft.

    I have already tuned different motors with different kits (TMDSHVMTRINSPIN and DRV8353RS-EVM). From my experience, it was always more difficult to have the parameters identified when I was using the HV kit (but I don't know why).

    I already spent some times to tune the identification variables you show me but without any big improvments, I will retry today but please confirm or correct how we should measure the motor parameters (see original post) because in final applications, it would be very easier to enter directly motors parameters.

    With best regards.

  • Do you have the datasheet of the motor? Is it a high voltage motor for TMDSHVMTRINSPIN? What dc bus voltage are you adding to TMDSHVMTRINSPIN?

  • We are the manufacturer of the motor (no real datasheet available but whe can measure the parameters by ourselves). The actual motor I'm working on is:

    -outer rotor brushless

    -12 stator slot

    -10 magnet pole

    -around 500W

    -around 1300RPM at full load and DC link around 80Vdc 

    HVkit is powered at 80Vdc, LV jumper (J1,J2,J3,J4) are populated to have a voltage range closer to my need and predefined symbol LV_JUMPER_EN is declared.

    The motor parameters I directly set in user_mtr1.h based on measurments are:

    #define USER_MOTOR1_TYPE MOTOR_TYPE_PM
    #define USER_MOTOR1_NUM_POLE_PAIRS (5)
    #define USER_MOTOR1_Rr_Ohm (NULL)
    #define USER_MOTOR1_Rs_Ohm (0.8)
    #define USER_MOTOR1_Ls_d_H (0.00504)
    #define USER_MOTOR1_Ls_q_H (0.00504)
    #define USER_MOTOR1_RATED_FLUX_VpHz (0.615)
    #define USER_MOTOR1_MAGNETIZING_CURRENT_A (NULL)
    #define USER_MOTOR1_RES_EST_CURRENT_A (1.0f)
    #define USER_MOTOR1_IND_EST_CURRENT_A (-0.8f)
    #define USER_MOTOR1_MAX_CURRENT_A (7.5f)
    #define USER_MOTOR1_FLUX_EXC_FREQ_Hz (60.0f)
    #define USER_MOTOR1_OVER_CURRENT_A (9.0f) // A
    #define USER_MOTOR1_RATED_VOLTAGE_V (110.0f)

    This give some good results (parameter for identification are some I use for another motor, not this one).

    As a reminder, of course it will be interesting for us to understand why and what to tune for a good identification but this is not my main question. Main question is related to how to measure the parameter using measurment equipment to be sure that what I directly set in user_mtr1.h is correct.

    Regards.

  • 1. Select the right inverter kit to achieve a good current and voltage sensing resolution, that means the current and voltage ADC full scale value are close to the maximum value of the motor.

    2. Identify the motor without adding any load, and tune the identification variables as mentioned above.

  • Dear Yanming Luo,

    Please read the original post.

    I only have one question and you didn't answer it.

    My question is about understanding and measuring of motor parameters in order to directly enter the parameters in user_mtr1.h (phase/middle point or phase/phase value, flux calculation using peak voltage? rms voltage? peak to peak voltage, etc...).

    Please consider thate there are some applications where identification is hard to do.

    Or if it is not possible to direclty enter the motor parameters (using measurment tools) and if the only way is to have it identified by the kit so also let me know.

    With best regards.

  • My question is about understanding and measuring of motor parameters in order to directly enter the parameters in user_mtr1.h (phase/middle point or phase/phase value, flux calculation using peak voltage? rms voltage? peak to peak voltage, etc...).

    Rs, phase to neutral resistance in a Y equivalent circuit. (ohm)

    Ls, stator inductance in a Y equivalent circuit. (H)

    Flux, total flux linkage between the rotor and the stator (V/Hz)

    You may talk a loot at Section 6.9 "Setting PMSM Motor Parameters in user.h" in InstaSPIN-FOC and InstaSPIN-MOTION User's Guide for more details

    https://www.ti.com/lit/spruhj1

  • Thank you for pointing this document. This answer original question.

    For information, in the same time I have been abble to identify easily using DRV8353RS-EVM (but not using HVkit).

    The ADC range for voltage and current are very close in both config I use (low voltage enabled for HVkit, gain=20 to have a close current range).

    The identified parameters and measured are very close for resistance and flux but are different for inductance:

    identified : 4mH

    measured Phase/phase : between 5.5mH to 6.5mH depending on rotor position (I assume Ls_d and Ls_q are different)=> this give 2.75mH to 3.25mH phase/neutral

    Based on your experience, ar you used to have such difference between identified and measured?

    Regards.

  • The difference should be very small if the hardware parameters are setting correctly in the lab project. 

    If you want to run a low voltage motor with the high voltage kit, you should populate a jumper on J1, J2, J3 and J4 to bypass the 820k resistors for phase and dc bus voltages sensing. And set the parameters in user_mtr1.h as below. It's not recommend ro run a low voltage motor with high current and low inductance on the high voltage kit.

    // Bypass the 820k resistor for low voltage motor on this kit
    #define LV_JUMPER_EN // Bypass the 820k resistor


    #ifndef LV_JUMPER_EN
    //! \brief Defines the nominal DC bus voltage, V
    //!
    #define USER_M1_NOMINAL_DC_BUS_VOLTAGE_V (220.0f)

    //! \brief Defines the maximum voltage at the AD converter
    // Full scale voltage of AD converter, not the current voltage
    #define USER_M1_ADC_FULL_SCALE_VOLTAGE_V (409.90f)

    //! \brief Defines the analog voltage filter pole location, Hz
    //!
    #define USER_M1_VOLTAGE_FILTER_POLE_Hz (375.55f)

    #else // Populate jumpers on J1/J2/J3/J4 for short R20/R23/R26/R37 for low voltage motor
    //! \brief Defines the nominal DC bus voltage, V
    //!
    #define USER_M1_NOMINAL_DC_BUS_VOLTAGE_V (24.0f)

    //! \brief Defines the maximum voltage at the AD converter
    // Full scale voltage of AD converter, not the current voltage
    #define USER_M1_ADC_FULL_SCALE_VOLTAGE_V (112.21f)

    //! \brief Defines the analog voltage filter pole location, Hz
    //!
    #define USER_M1_VOLTAGE_FILTER_POLE_Hz (381.15f)
    #endif