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.

DRV8353RS-EVM: DRV8353RS-EVM: Universal Motor Control Lab more module overcurrent faults.

Part Number: DRV8353RS-EVM
Other Parts Discussed in Thread: LAUNCHXL-F280025C, DRV8305

I am utilizing LAUNCHXL-F2800025C and a DRV8353RS-EVM to work through the Universal Motor Control Lab.  In the Universal Motor Control Lab incremental build level 2.  I am getting moduleOvercurrent faults.  I have successfully completed the lab through build level 1.  The DRV8353EVM does not indicate a fault nor do the registers from the 8353.

  • Hi Carl,

    Let me forward this to the C2000 since this uses the Universal Motor Control Lab with LAUNCHXL-F280025C.

    Thanks,
    Aaron

  • Which motor is connected to the inverter board? Or any load is adding to the motor? Did you try to run the lab without connecting the motor first or without adding the load?

    If you are not using the example motor in user_mtr1.h, you need to follow the guide to set the right v/f profile, maximum current and over current limitation parameters according to the spec. of your own motor.

    #define USER_MOTOR1_MAX_CURRENT_A          (6.0f)          // A

    #define USER_MOTOR1_OVER_CURRENT_A         (6.5f)           // A

     

    #define USER_MOTOR1_FREQ_LOW_HZ                                (10.0)                        // Hz - suggested to set to 10% of rated motor frequency

    #define USER_MOTOR1_FREQ_HIGH_HZ                               (100.0)                        // Hz - suggested to set to 100% of rated motor frequency

    #define USER_MOTOR1_VOLT_MIN_V                                 (3.0)                        // Volt - suggested to set to 15% of rated motor voltage

    #define USER_MOTOR1_VOLT_MAX_V                                 (18.0)                        // Volt - suggested to set to 100% of rated motor voltage

  • Yanming, Thanks for your response.  I changed the above parameters to what they should be for my motor.  And have the same results.  Also, could you please provide a link to the guide you are referring to that has what all these parameters should be set to?  Many appear to be redundant and that makes it confusing.  I will post my settings below and a screen shot of the overcurrent fault below.  Why is the CMPLLATCH bit being set?

    #define USER_MOTOR1_TYPE                   MOTOR_TYPE_PM
    #define USER_MOTOR1_NUM_POLE_PAIRS         (2)
    #define USER_MOTOR1_Rr_Ohm                 (NULL)
    #define USER_MOTOR1_Rs_Ohm                 (NULL)
    #define USER_MOTOR1_Ls_d_H                 (NULL)
    #define USER_MOTOR1_Ls_q_H                 (NULL)
    #define USER_MOTOR1_RATED_FLUX_VpHz        (NULL)
    #define USER_MOTOR1_MAGNETIZING_CURRENT_A  (NULL)
    #define USER_MOTOR1_RES_EST_CURRENT_A      (2.0f)
    #define USER_MOTOR1_IND_EST_CURRENT_A      (-1.5f)
    #define USER_MOTOR1_MAX_CURRENT_A          (10.0f)
    #define USER_MOTOR1_FLUX_EXC_FREQ_Hz       (40.0f)
    
    // Number of lines on the motor's quadrature encoder
    #define USER_MOTOR1_NUM_ENC_SLOTS          (NULL)
    
    #define USER_MOTOR1_INERTIA_Kgm2           (7.06154e-06)
    
    #define USER_MOTOR1_FREQ_NEARZEROLIMIT_Hz  (5.0f)          // Hz
    
    #define USER_MOTOR1_RATED_VOLTAGE_V        (36.0f)
    #define USER_MOTOR1_RATED_SPEED_KRPM       (3.0f)
    
    #define USER_MOTOR1_FREQ_MIN_HZ            (9.0f)          // Hz
    #define USER_MOTOR1_FREQ_MAX_HZ            (600.0f)         // Hz
    
    #define USER_MOTOR1_FREQ_LOW_HZ            (5.0f)            // Hz
    #define USER_MOTOR1_FREQ_HIGH_HZ           (100.0f)          // Hz
    #define USER_MOTOR1_VOLT_MIN_V             (5.0f)            // Volt
    #define USER_MOTOR1_VOLT_MAX_V             (36.0f)           // Volt
    
    #define USER_MOTOR1_FORCE_DELTA_A          (0.05f)          // A
    #define USER_MOTOR1_ALIGN_DELTA_A          (0.01f)          // A
    #define USER_MOTOR1_FLUX_CURRENT_A         (0.5f)           // A
    #define USER_MOTOR1_ALIGN_CURRENT_A        (1.5f)           // A
    #define USER_MOTOR1_STARTUP_CURRENT_A      (11.0f)           // A
    #define USER_MOTOR1_TORQUE_CURRENT_A       (2.0f)           // A
    #define USER_MOTOR1_OVER_CURRENT_A         (12.0f)           // A
    
    #define USER_MOTOR1_BRAKE_CURRENT_A        (1.0f)           // A
    #define USER_MOTOR1_BRAKE_TIME_DELAY       (12000U)        // 60s/5ms
    
    #define USER_MOTOR1_SPEED_START_Hz         (30.0f)
    #define USER_MOTOR1_SPEED_FORCE_Hz         (25.0f)
    #define USER_MOTOR1_ACCEL_START_Hzps       (10.0f)
    #define USER_MOTOR1_ACCEL_MAX_Hzps         (20.0f)
    
    #define USER_MOTOR1_SPEED_FS_Hz            (3.0f)
    
    // only for encoder
    #define USER_MOTOR1_ENC_POS_MAX            (USER_MOTOR1_NUM_ENC_SLOTS * 4 - 1)
    #define USER_MOTOR1_ENC_POS_OFFSET         (668)
    
    // Only for eSMO
    #define USER_MOTOR1_KSLIDE_MAX             (0.75f)      //
    #define USER_MOTOR1_KSLIDE_MIN             (0.15f)
    
    #define USER_MOTOR1_PLL_KP_MAX             (6.75f)      //
    #define USER_MOTOR1_PLL_KP_MIN             (0.75f)
    #define USER_MOTOR1_PLL_KP_SF              (5.0f)
    
    #define USER_MOTOR1_BEMF_THRESHOLD         (0.5f)
    #define USER_MOTOR1_BEMF_KSLF_FC_Hz        (1.0f)
    #define USER_MOTOR1_THETA_OFFSET_SF        (1.0f)
    #define USER_MOTOR1_SPEED_LPF_FC_Hz        (200.0f)
    
    // for IS-BLDC
    #define USER_MOTOR1_RAMP_START_Hz           (3.0f)
    #define USER_MOTOR1_RAMP_END_Hz             (30.0f)
    #define USER_MOTOR1_RAMP_DELAY              (5)
    
    #define USER_MOTOR1_ISBLDC_INT_MAX          (0.015f)
    #define USER_MOTOR1_ISBLDC_INT_MIN          (0.010f)
    
    // for Rs online calibration
    #define USER_MOTOR1_RSONLINE_WAIT_TIME      (60000U)    // 5min/300s at 5ms base
    #define USER_MOTOR1_RSONLINE_WORK_TIME      (24000U)     //2min/120s at 5ms base
    

  • Which motor are you using? Please post the spec. datasheet of your motor, and try to run the motor first without adding load.

    Why is the CMPLLATCH bit being set?

    That means there is over current fault because the incorrect the v/f profile. You might try to set motorVars_M1.flagClearFaults to "1" to clear the faults, and then to re-start run the motor.

    Or you might skip the build level 2 to run the build level 3 or 4 since you are using the kit supported in the lab.

  • Yanming,

    I wanted to give you an update.  I ran build level 3 and 4 and I did not get the moduleOverCurrent faults.  But now I am getting motorLostPhase indication as shown below.  I assumed that it might be a bad connection but I checked that.  I have had the same motor running with a F280069M and a drv8305.  But I am setting up a different motor to test with just to rule it out.  I just wanted to keep this thread going.  Any insight would be appreciated.

  • This fault has been blocked and it is not used in this lab, it's just for debugging.

    You might change the following parameters in user_mtr1.h file for this fault detection.

    //! \brief motor lost phase current threshold
    #define USER_M1_LOST_PHASE_CURRENT_A        (0.05f)      // A

    //! \brief Defines the number of lost phase setting time
    //!  timer base = 5ms, 10s
    #define USER_M1_LOST_PHASE_TIME_SET             (5000)

  • Hey,

    I am having exactly the same issue. For me does not get clear how it was solved.

    Can you summarize what to do?

    Thanks

  • It's not totally resolved for me.  I tested it with a different smaller motor and determined it was not the kit.  I now have to figure out the appropriate settings for the motor parameters.  Unfortunately, I can not find any documentation on how to determine the appropriate values for all these seemingly redundant parameters.  Deriving them from nameplate info seems impossible.  I had both of my problem motors spinning with the old labs which had a lot fewer parameters to configure.  Now, these new parameters have to be set and I can not find any documentation on how to do that.

  • If you are using the TI hardware kits supporting in this universal lab, you don't need to run the motor with build level 2, you can directly run the build level 4 to identify and run the motor, and see what happens.

  • Hey,

    I am using a different motor for the development.

    The motor parameters are below.

    The Phase current is measured @ 2.78A per phase and that triggers ModuleOvercurrent. Tracking the nFault pin no fault is set by the driver and also the driver registers are not showing any fault.

    What triggers the Module overcurrent, like the case above? I have the same and it is not a fult coming from the 8323 DRV.

    Can you help?

  • I was able to get one of the motors or one very close to one of the motors listed in the headers files and I am able to get that to work.  So my dev kit is functional.  I have it working with all levels.  My problem now is to get it to work on the actual motor for my project.  The motor is bldc 3000 rpm 36V 200W motor.  I need to know how to go from that information to all the 50 undocumented parameters to get it to spin.  I am able to spin them with the old insta-spin firmware.  But I want to use the current SDK and LAUNCHXL-F280025C.

  • All of the used parameters have been described in the user_mtr1.h, and only the documented parameters are used for the motor control with FAST estimator. You can still refer to the InstaSPIN user's guide for these parameters if you want to implement InstaSPIN-FOC with FAST for motor control. The other parameters are only used for fault protection as the commented description in the header file.

    InstaSPIN-FOC and InstaSPIN-MOTION User's Guide

    http://www.ti.com/lit/ug/spruhj1h/spruhj1h.pdf

    The motor is bldc 3000 rpm 36V 200W motor.

    You only need to change the motor parameters, maximum current and over current value in the current example lab for your motor.

    #define USER_MOTOR1_TYPE                   MOTOR_TYPE_PM
    #define USER_MOTOR1_NUM_POLE_PAIRS         (4)
    #define USER_MOTOR1_Rr_Ohm                 (NULL)
    #define USER_MOTOR1_Rs_Ohm                 (0.38157931f)
    #define USER_MOTOR1_Ls_d_H                 (0.000188295482f)
    #define USER_MOTOR1_Ls_q_H                 (0.000188295482f)
    #define USER_MOTOR1_RATED_FLUX_VpHz        (0.0396642499f)
    #define USER_MOTOR1_MAGNETIZING_CURRENT_A  (NULL)
    #define USER_MOTOR1_RES_EST_CURRENT_A      (1.5f)
    #define USER_MOTOR1_IND_EST_CURRENT_A      (-1.0f)
    #define USER_MOTOR1_MAX_CURRENT_A          (6.0f)
    #define USER_MOTOR1_FLUX_EXC_FREQ_Hz       (40.0f)
    #define USER_MOTOR1_INERTIA_Kgm2           (7.06154e-06)

    #define USER_MOTOR1_OVER_CURRENT_A         (6.5f)           // A

  • I have changed those parameters but I am getting a lost phase fault because the motor is not spinning.  This is repeatable on 2 different motors that are similar one is a 200 watt and the other is a 100 watt.  But if I use a smaller motor with the kit everything is fine.  What parameters should I look at?

  • As mentioned above. The lost phase fault is disabled in the lab by default as the following definition code in "motor_common.h". There are only over current, over voltage, and under voltage faults are enabled in the lab.

    #define MTR1_FAULT_MASK_SET             MTR_FAULT_ENABLE_OC_OUV

    You might change the values for the following parameters if you want to enable this lost phase fault protection, like increasing the value of USER_M1_LOST_PHASE_TIME_SET.

    //! \brief motor lost phase current threshold
    #define USER_M1_LOST_PHASE_CURRENT_A        (0.02f)

    //! \brief Defines the number of lost phase setting time
    //!  timer base = 5ms, 10s
    #define USER_M1_LOST_PHASE_TIME_SET             (2000)