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: [Lab02a] customer motor will stop in RatedFlux state

Part Number: TMS320F28069M
Other Parts Discussed in Thread: DRV8301

Hi Champs,

I get my customer motor and motor SPEC is 6000rpm @ 48V. I used DRV8301+69M controlCARD. DC input is 48v. I ran Lab02a/Lab02c and get different current waveform. I found out that RS value is very small value after RS state. However, I check the Rhf/Lhf which are not small as RS.  

I found out when I used default PWM freq=45khz, RoverL current waveform looks like weird. I change the PWM freq = 40Khz which RoverL waveform looks like more sinusoidal. However, when controller enter Ramp up state which generated a peak current at first then sinusoidal. Please see current waveform below. After ramp up state, motor stop in RatedFlux state. I change USER_MOTOR_FLUX_EST_FREQ_Hz up to 100 but still failed at RatedFlux state. 

I also change USER_R_OVER_L_EST_FREQ_Hz freq to 100. In DRV8301 project, USER_R_OVER_L_EST_FREQ_Hz default value is 300hz.

I also use Lab02c to did motor ID but also failed at RatedFlux state.

I attached my user.h in post. Could you please tell me which variable should I change to pass motor ID ? thanks !  

There is one more thing I would like to know. When I used Lab02c and PWM freq = 45Khz. RS state current isn't DC and it is Sawtooth wave. Could you please tell me why ?

PWM=45Khz, RoverL current waveform

PWM freq = 40Khz, RoverL waveform

Ramp up peak current at PWM=40khz

EST_State_Rs current @ PWM=45Khz

406343.user.h

  • 1. Make sure that the output current of dc power supply is enough.
    2. Don't need change USER_R_OVER_L_EST_FREQ_Hz to a lower value since the electrical frequency of motor is 500Hz.
    3. Set USER_MOTOR_FLUX_EST_FREQ_Hz to a low frequency, like 40, 60Hz.
    4. Change USER_MOTOR_RES_EST_CURRENT to make sure the identified resistance is correct first.
    5. And then change USER_MOTOR_IND_EST_CURRENT to a right value to enable motor run smoothly.

    What's the rated power, rated frequency and maximum current of this motor?
  • Hi Yanming,

    1. Make sure that the output current of dc power supply is enough.

    [Lisa]: I checked DC power supply and power is enough
    2. Don't need change USER_R_OVER_L_EST_FREQ_Hz to a lower value since the electrical frequency of motor is 500Hz.

    [Lisa]: OK. I changed back to 300
    3. Set USER_MOTOR_FLUX_EST_FREQ_Hz to a low frequency, like 40, 60Hz.

    [Lisa]: I tried 40/60hz before but still failed at RatedFlux
    4. Change USER_MOTOR_RES_EST_CURRENT to make sure the identified resistance is correct first.

    [Lisa]: I tried different value from 5 to 14. However, RS value always is 3.85476096e-06. Could you please tell me how should I tune this value? Any tips ? 
    5. And then change USER_MOTOR_IND_EST_CURRENT to a right value to enable motor run smoothly.

    [Lisa]: I also change the USER_MOTOR_IND_EST_CURRENT from -5 to -14. Also I tried to set -1. But motor still failed at RatedFlux state. Could you please tell me is there any tip to tune this value?

    I also found out that when I change PWM frequency, resistor value also changed. When PWM = 40Khz, I always get 3.85476096e-06. But when I changed PWM to 30Khz, I got 5.68892538e-05. I changed RES_EST current to 25A , however, RS still is 3.85431667e-06.

    I tried to change the

    pUserParams->RsWaitTime[EST_Rs_State_Fine]         = (uint_least32_t)( 4.0 * USER_EST_FREQ_Hz); //Lisa-1031, 7.0

    I get smaller RES value but still failed at RatedFlux state. Could you please help to point where should I change to get the correct RS value ? thanks

  • Hi Yanming,

    I got the motor SPEC from customer, please see below information. thanks !

    General

    Content

    Data

    Details

    1.     [SPM / IPM]

    IPM - 8P12S

     

    2.     Rated voltage [V]

    48

     

    3.     Min. voltage [V]

    39

     

    4.     Cooling method [Nature / Forced Air / Liquid]

    Nature

     

    5.     temp [0C]

    -20~50

     

    6.     Ipv

    IP65

     

    7.     Length*width [mm]

    ψ168 x 100

     

    8.     Weight [kg]

    6.3

     

    9.     Motor type [Traction / HUB]

    Main Traction Motor

     

    SPEC

    1.     Rated power [kW]

    1.598

     

    1.     Rated speed [rpm]

    3300

     

    2.     Rated Torque [Nm]

    4.6

     

    3.     Max Torque [Nm]

    16.56

     

    4.     Max current [Ap]

    250

     

     

       

    7.     Unload Max Speed [rpm]

    6160

     

     

    10.  Max power [kW]

    2.310 @ 1333rpm, 16.56Nm

    4.000 @ 3300rpm, 11.50Nm

    11.  Phase resistor [mΩ]

    <5mΩ

    Line to line 24mΩ

    12.  KE_L-L  [Vs/rad]

    0.0800 +/-5%

    13.  Kt     [Nm/Arms]

    0.1000 +/-5%

    14.  Kt     [Nm/Ap]

    0.0707 +/-5%

  • Hi Yanming,

    Could you please give me an update ? thanks
  • Lisa,
    none of the Rs values you have are valid. All are much too low to be real.

    are you sure the EVM is not damaged? are you using the correct set of projects for the EVM + controlCARD?

    if you upload your user.h I will assist in make sure it is ok. Running at 15 KHz PWM with TICKS (1) should be fine.
  • Hi Chris,
    i uploaded my user.h is my original post. In DRV8301 + F28069M proj, PWM freq is 45Khz default. I use DRV8301 EVM + anahesim motor and it did spin successfully. Therefore, i think DRV8301 EVM is OK.
  • Lisa,
    Try using this user.h

    first is to see if we can ID the Resistance. Please report back on the Rhf and Rs ID'd in the first 10 seconds.

    After we get a closer value (should be ~0.012) we will try to ID the rest.

    This is a very high current motor, so the trick will be to get the motor to start-up during the RampUp phase.
    I have selected 15A for this as RES_EST_CURRENT
    If the motor doesn't start spinning, and keep spinning during Flux Est state then increase the current up to 30A. If you need to increase it further make sure you also increase #define USER_MOTOR_FLUX_EST_FREQ_Hz (40.0)

    once it keeps spinning insure it keeps spinning for the remainder of the ID process until Ramp Down


    I have ID'd ~100A motors using the same EVM, but never 250A. It may be a limitation of the motor to the EVM.
  • Hi Chris,
    thanks for your reply. Could you please tell me why you change USER_IQ_FULL_SCALE_VOLTAGE_V to (48.0) ? In your user.h, USER_NUM_PWM_TICKS_PER_ISR_TICK also be changed to 1. In default, the value is 3. RoverL frequency also changed to 100hz. however, in previous post, it said electrical frequency of motor is 500Hz. I shouldn't change to 100hz. Also , i tried to change the RoverL to 100hz. But I still can't get correct RS.

    I changed USER_MOTOR_RES_EST_CURRENT to 40. Also i increased USER_MOTOR_FLUX_EST_FREQ_Hz up to 100hz. But motor still stop at RatedFlux state. Motor can be spun up in Ramp up state. But it stop when state changed to RatedFlux.

    Do you mean you set USER_MOTOR_RES_EST_CURRENT up to 100A in drv8301 EVM ? If yes, i will tried to increase motor current up to 60. Because this motor is high current motor. thanks!
  • USER_IQ_FULL_SCALE_V is normally set to the DC input. You only change it for two scenarios:
    1. If you have a large flux motor you plan to run into deep field weakening you must increase to be able to calculate the increased Bemf voltage
    2. if you have a small flux motor there are rare cases you may need to decrease this value to be able to ID the rated flux of the machine. This may be the case with your motor

    USER_NUM_PWM_TICKS_PER_ISR_TICK was lowered to (1) because I lowered USER_PWM_FREQ_kHz (15.0)
    You want the PWM_FREQ / ISR_TICK to be ~ 15
    With this EVM we often have issues with running the PWM higher than 15 KHz, so in this case I'm recommending you limit it to about 15 KHz

    USER_R_OVER_L_EST_FREQ_Hz (100) // 300 Default
    was changed as the 300 Hz is only used for very high speed motors. Your motor is not high speed. 100 Hz should be fine.
    Please keep this value as is
    USER_MOTOR_FLUX_EST_FREQ_Hz (40.0)
    you do not need to run this motor faster during ID


    Use the minimum USER_MOTOR_RES_EST_CURRENT that gets the motor spinning up to the target speed of USER_MOTOR_FLUX_EST_FREQ_Hz

    " you mean you set USER_MOTOR_RES_EST_CURRENT up to 100A in drv8301 EVM ?"
    NO!



    first is to see if we can ID the Resistance. Please report back on the Rhf and Rs ID'd in the first 10 seconds.