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.

CCS/TMS320F28027: Current drawn is 10 times bigger than expect.

Part Number: TMS320F28027
Other Parts Discussed in Thread: MOTORWARE, DRV8305, DRV8305-Q1EVM

Tool/software: Code Composer Studio

Hello,

I am using DRV8305-Q1EVM for my development. We use Motorware v16. Everything is alright during the development stage. When we are going to production stage, we use another driver chip instead of DRV8305. The motor can spin slowly, but we have found the current drawn is 10 times bigger than our expectation. It seems there is a signal amplifier for the current sensor in the evaluation board, which I am not sure for that and there is not the case in our system. 

Is there any adjustment in c code that I can do to solve the problem.

Thanks a lot.

  • Yes, you need to calculate the USER_ADC_FULL_SCALE_VOLTAGE_V and USER_ADC_FULL_SCALE_CURRENT_A based on your hardware board and the gain of PGA within driver, and set both two parameters in user.h. The detail medication need the schematic of h/w board to calculate these parameters.

    The example project of DRV8305-Q1EVM is based on DRV8305 drive which has 3 internal PGA for current sensing, it's a good solution for low voltage motor control.
  • There a adjustable gain in the internal current sensors in 8305. The gain can be set 10V/V. Maybe the gain you have neglected.
  • Sorry for the question to you all. After more investigation, we are misled by the documentation of the current sensor. We are therefore, installed the sensor in reverse direction. This is the cause of current overdrawn.

    BTW, would like to know, as we are rushing for the project. We try to not change the hardware. We are using motorware, can I assign the current reading to adcData in HAL_readAdcData() from
    pAdcData->I.value[0] = value;
    to pAdcData->I.value[0] = _IQ12mpy(value ,-1) ;
    in this case.
  • Set the coefficient sign per your h/w board in HAL_readAdcData()

      _iq current_sf = HAL_getCurrentScaleFactor(handle);

    or

      _iq current_sf = -HAL_getCurrentScaleFactor(handle);

  • Thanks , your solution seems to be more simpler than mine.