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.

flying start Startup problem

Evaluation board:  drv8301-hc-evm revd

Lab 10e Flying Start

Using the same motor parameters and PI parameters as Lab10a, almost all parameters are set the same, why Lab10a can start smoothly and run normally at 200~2000rpm, but Lab 10e cannot start smoothly and only run normally after shaking for a few seconds, why? Which parameters should be modified to solve the smooth startup problem of Lab 10e?

  • Xiong,

    This is a question for the C2000 Instaspin team, I will move your post.

    Regards,

    -Adam
  • I think the issue you faced in lab10e comes from the offset calibration. The current and voltage offset recalibration is enabled by default in lab10a. But lab10e has some issue on offset recalibration.

    You have two options for fixing this problem.

    Option 1: Disable offset recalibration and use default offset values.

      Step 1) Get the offset values in gMotorVars.I_bias.value[0~2] and gMotorVars.V_bias.value[0~2] in lab10a. 

      Step 2) Put the offset values to the following #defines.

    #define   I_A_offset   
    #define   I_B_offset   
    #define   I_C_offset   

    #define   V_A_offset   
    #define   V_B_offset   
    #define   V_C_offset 

      Step 3) Disable offset recalibration by putting the following code in initialization before going to while() loop.

             " Vars.Flag_enableOffsetcalc = 0 "
      

    Option 2: Fixing directly a bug lab10e has by change the following code in mainISR()

    [Before]

    if(gMotorVars.Flag_RunState == false)
      {
     gPwmData.Tabc.value[0] = _IQ(0.0);
     gPwmData.Tabc.value[1] = _IQ(0.0);
     gPwmData.Tabc.value[2] = _IQ(0.0);

     // disable the PWM
     HAL_disablePwm(halHandle);
      }

    [After]

      if((gMotorVars.Flag_RunState == false) && (gMotorVars.Flag_enableOffsetcalc == false))
      {
        gPwmData.Tabc.value[0] = _IQ(0.0);
        gPwmData.Tabc.value[1] = _IQ(0.0);
        gPwmData.Tabc.value[2] = _IQ(0.0);

        // disable the PWM
        HAL_disablePwm(halHandle);
      }