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.

BOOSTXL-DRV8305EVM: Estimated Rs value much bigger then datasheet value

Part Number: BOOSTXL-DRV8305EVM
Other Parts Discussed in Thread: DRV8305

Hello,

I am using the BOOSTXL-DRV8305EVM with a relatively small motor with max. current 2A

If I use the standard settings:

#define USER_IQ_FULL_SCALE_CURRENT_A         (24) // BOOSTXL-DRV8305EVM = 24.0 A
#define USER_ADC_FULL_SCALE_CURRENT_A        (47.14)  // BOOSTXL-DRV8305EVM = 47.14 A

gDrvSpi8305Vars.Ctrl_Reg_0A.GAIN_CS1 = Gain1_10VpV;
gDrvSpi8305Vars.Ctrl_Reg_0A.GAIN_CS2 = Gain2_10VpV;
gDrvSpi8305Vars.Ctrl_Reg_0A.GAIN_CS3 = Gain3_10VpV;

the identification is good, I get a value for Rs ~ 1Ohm and Ls ~ 0.05mH.

Now, becaue the max. current of the motor is so low, I want to change the gain of the current amplifier to 80VpV:

#define USER_IQ_FULL_SCALE_CURRENT_A         (3) // BOOSTXL-DRV8305EVM = 24.0 A
#define USER_ADC_FULL_SCALE_CURRENT_A        (5.89)  // BOOSTXL-DRV8305EVM = 47.14 A

gDrvSpi8305Vars.Ctrl_Reg_0A.GAIN_CS1 = Gain1_80VpV;
gDrvSpi8305Vars.Ctrl_Reg_0A.GAIN_CS2 = Gain2_80VpV;
gDrvSpi8305Vars.Ctrl_Reg_0A.GAIN_CS3 = Gain3_80VpV;

If I try this, the identified values are way off. Obviously I am missing some other changes necessary? What else do i have to change?

Thank you in advance!

Stefan

  • Stefan,
    USER_ADC refers to the actual hardware circuitry. If you are gong to change the measurement to 5.89A peak to peak you need to actually change the hardware scaling, not just the variable value.

    you may want to ask about the gain change on the Motor Drive forum.
  • The DRV8305 has software selectable current amplifier gain, standard is 10V/V.

    With 3.3V max ADC voltage and 0.007Ohm on the DRV8305 dev board gives (3.3V/10V/V)/0.007Ohm = 47.14A full scale current.

    If I change the gain to 80V/V, the above equation gives me 5.89A peak to peak current measurement range.

    The question is, where else do I have to set the ADC current conversion factor because it seems like changing USER_ADC_FULL_SCALE_CURRENT_A is not enough.

    I did not find any relevant code in the examples. I guess it should be one of the EST_set... functions?

    Kind regards

    Stefan

  • Stefan,

    Probably just need to configure the DRV8305 correctly:

     

    #ifdef DRV8305_SPI

      // turn on the DRV8305 if present

      HAL_enableDrv(halHandle);

     

      // initialize the DRV8305 interface

      HAL_setupDrvSpi(halHandle,&gDrvSpi8305Vars);

     

      gDrvSpi8305Vars.Ctrl_Reg_0A.GAIN_CS1 = Gain1_80VpV;     // Default value is Gain1_10VpV in project

      gDrvSpi8305Vars.Ctrl_Reg_0A.GAIN_CS2 = Gain2_80VpV;       // Default value is Gain2_10VpV in project

      gDrvSpi8305Vars.Ctrl_Reg_0A.GAIN_CS3 = Gain3_80VpV;       // Default value is Gain3_10VpV in project

     

      gDrvSpi8305Vars.WriteCmd = 1;

     

      HAL_writeDrvData(halHandle,&gDrvSpi8305Vars);

     

      gDrvSpi8305Vars.WriteCmd = 1;

     

    #endif

     

    and then in user.h

    #define USER_IQ_FULL_SCALE_CURRENT_A         (24.0/8.0) // BOOSTXL-DRV8305EVM= 47.14A/8.0, gain=80vpv

    #define USER_ADC_FULL_SCALE_CURRENT_A        (47.14/8.0)  // BOOSTXL-DRV8305EVM = 47.14A/8.0, gain=80vpv

    and of course set USER_MOTOR_MAX_CURRENT <= USER_IQ_FULL_SCALE_CURRENT_A