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.

DRV8301-69M-KIT: The maximum current of the motor is too low

Genius 3095 points
Part Number: DRV8301-69M-KIT

Dear Yanming:

One of my customer uses lab03a for experiments. At present, the motor can realize software speed regulation. However, as the speed increases (to 4000 rpm), the current will not increase any more(No load condition:1Krpm: 0.8A; 2Krpm: 1.6; 4Krpm: max 3.4A), that makes his motor not able to carry enough load (They have finished the product, the current can reach 7A!).

Is this a software problem or a hardware problem? How to improve this situation?

Best regards

  • 1. Please check if the output of the speed controller (ctrl.spd_out) is close to the maximum torque current setting value (USER_MOTOR_MAX_CURRENT/USER_IQ_FULL_SCALE_CURRENT_A). If yes, try to increase USER_MOTOR_MAX_CURRENT in user.h.

    2. Please check if the value of the voltage vector (gMotorVars.Vs) is over or close to USER_MAX_VS_MAG_PU. If yes, you need to implement over-modulation as lab10a.

  • Dear Yanming:

    According to your prompt, I observed two variables you said:

    1. The value of gmotorvar. Vs is always 0;

    2、 ctrl.spd_ Out is about 0.86, and it really reaches the set value of (USER_MOTOR_MAX_CURRENT/USER_IQ_FULL_SCALE_CURRENT_A). 

    Here I explain:

    I have changed the resistance of current feedback on the kit. The resistance at the original operation amplifier of the kit is 1K and 20K, that is, under the 20x magnification and 2m ohm sampling resistance, the value of USER_ADC_FULL_SCALE_CURRENT_A is 82.5, the value of USER_IQ_FULL_SCALE_CURRENT_A is 41.25.

    Because the actual maximum current of the compressor I use is only 7a, so in order to sample more clearly, I have enlarged the multiple, and changed it to the combination of 1K and 71.5k. So the value of USER_ADC_FULL_SCALE_CURRENT_A is 23 in my user.h, and the value of USER_IQ_FULL_SCALE_CURRENT_A is 11.5. And the USER_MOTOR_MAX_CURRENT is set to10.

    Now, when running, ctrl.spd_ Out is 0.86, which is about 10 / 11.5. However, USER_MOTOR_MAX_CURRENT cannot be increased, or it will be greater than USER_IQ_FULL_SCALE_CURRENT_A, And it will lead to an error.

  • 1. Check if there is below code in the updateGlobalVariables_motor() function, if no, add them to monitor the gMotorVars.Vs.

    // read Vd and Vq vectors per units
    gMotorVars.Vd = CTRL_getVd_out_pu(ctrlHandle);
    gMotorVars.Vq = CTRL_getVq_out_pu(ctrlHandle);

    // calculate vector Vs in per units
    gMotorVars.Vs = _IQsqrt(_IQmpy(gMotorVars.Vd, gMotorVars.Vd) + _IQmpy(gMotorVars.Vq, gMotorVars.Vq));

    2. Increase the dc bus voltage to see what happens if the output of the speed controller (ctrl.spd_out) is close to the maximum torque current setting value (USER_MOTOR_MAX_CURRENT/USER_IQ_FULL_SCALE_CURRENT_A) 

    3. It seems like the USER_ADC_FULL_SCALE_CURRENT_A is too small for the USER_MOTOR_MAX_CURRENT, that should be at least 3~ 5 times of the USER_MOTOR_MAX_CURRENT, otherwise, the current sensing value will be over the range of the ADC.