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.

Incorrect Rs calculations and difference between Coarse and Fine RS calculations

Other Parts Discussed in Thread: DRV8301

Am working on controlling an induction motor with a modified 8301 high current kit and having a question regarding the Rs calculations.

The software is based on the proj_lab04 project.  

The controller is a piccolo 28069F.

The calculated Rs values are on the range of 1.0e-11 to 1.0e -4.

In the coarse Rs estimation, the value gMotorVars.Rs_ohm is calculated as 0.0175.  This seems to be in reasonable range for the configuration in user.h.

When the fine Rs estimation starts, the value decreases to a value in the range above during the period of the fine estimation.

I experimented with longer and shorter times for the coarse and fine estimation.  It appeared that the longer that the fine estimation runs (for example 10 - 20 seconds), the smaller the calculated value.

I varied the USER_MOTOR_RES_EST_CURRENT value from 5 - 15 amps with similar results.  The current values measured on the scope were correct.

What parameters are used in the coarse versus the fine calculations? 

And what might account for the difference in the coarse and fine calculations.

Other notes on testing and configuration:

- The current and voltage supplied to the motor were almost identical during the coarse and fine calculations.  This was observed in adc values as well as with a scope/current meter and volt meter.

In user.h:

#define USER_IQ_FULL_SCALE_FREQ_Hz (400.0)

#define USER_IQ_FULL_SCALE_VOLTAGE_V (70)

#define USER_ADC_FULL_SCALE_VOLTAGE_V (120)

#define USER_IQ_FULL_SCALE_CURRENT_A (80)

#define USER_ADC_FULL_SCALE_CURRENT_A (165)

#define USER_MOTOR_MAGNETIZING_CURRENT (10.0)
#define USER_MOTOR_RES_EST_CURRENT (15.0)

Thanks in advance for help on this topic.

Allan

  • This needs to be >= to half the ADC current

    #define USER_IQ_FULL_SCALE_CURRENT_A (82.5)

    You are showing that you are measuring 120 V. Why? The drv8301 can take a maximum of 60v. This is reducing your voltage resolution and could be effecting  the results depending on your motor parameters.

  • Thanks, I will change the USER_IQ_FULL_SCALE_CURRENT_A TO 82.5 and test it.

    Regarding the voltage limits, custom hardware is being used instead of the drv8301 which is supports higher voltage. Although it is a modified drv8301 board, the drv8301 is not being used.

    Regards,

    Allan
  • Thanks again for the information. I tested with the USER_IQ_FULL_SCALE_CURRENT_A >= to half the ADC current:

    #define USER_IQ_FULL_SCALE_CURRENT_A (82.5)

    This also resulted in extremely low RS fine adjustment values.

    Another change that I made is in the macros that calculate the voltage scale factor and current scale factor. These appear to round down to the closest integer and then convert to float in user.h:

    #define USER_VOLTAGE_SF ((float_t)((USER_ADC_FULL_SCALE_VOLTAGE_V)/(USER_IQ_FULL_SCALE_VOLTAGE_V)))
    #define USER_CURRENT_SF ((float_t)((USER_ADC_FULL_SCALE_CURRENT_A)/(USER_IQ_FULL_SCALE_CURRENT_A)))

    I changed these to convert to float and then divide to calculate a fractional value:

    #define USER_VOLTAGE_SF (((float_t)(USER_ADC_FULL_SCALE_VOLTAGE_V))/((float_t)(USER_IQ_FULL_SCALE_VOLTAGE_V)))
    #define USER_CURRENT_SF (((float_t)(USER_ADC_FULL_SCALE_CURRENT_A))/((float_t)(USER_IQ_FULL_SCALE_CURRENT_A)))

    Should it use the version that rounds down?


    The following may be a related problem:

    "Puzzling voltage_sf_Low error"

    e2e.ti.com/.../430022

    Thanks,

    Allan
  • don't change the user.h, what was there was correct.

    the link you sent is to a customer with a USER_error code, nothing to do with your issue.

    I suggest there is something wrong with your hardware or with how you are defining the scale in your software.

    You may also not have enough voltage or current resolution with the scale you have if you are looking at small currents or voltages in your system.

    What is your motor rated voltage and current?
  • Thank you again for considering this problem.

    The estimated motor rated voltage is 100 volts and the estimated rated current is 140 amps.

    The measured resistance between two of the 3 power connectors to the motor is 0.017 ohms. (This is measured with a 4 - wire resistance measurement). This is close to the coarse estimation value of 0.0175 ohms).

    Regards,

    Allan
  • how modified is this board?

    most motors of this current rating would be using in line phase current sensing (LEM is a popular brand) instead of low-side shunt. The low side shunts in this power range are too expensive, aren't very accurate, and of course lead to large losses.

    my thinking is that your sensor feedback, scale/resolution, combined with the very high short circuit current / current ripple from this motor is making it difficult to get good current feedback values into the control system.

  • A higher voltage/current power module is used to control the motor.

    The voltage divider circuit to supply input to the ADCs is scaled to 120 volts and the shunt and op amp are scaled to 165 amps or approximately 40 ma per adc unit.

    Since the coarse estimate of 0.0175 ohms is close to the measured value of 0.017 ohms, is it reasonable to use a value in this range?  

    Regards,

    Allan

     

  • yes, it seems reasonable to set your USER_MOTOR_RESISTANCE to (0.0175), but I feel like there is a root problem that is causing this that will just cause more problems in the next steps.
  • yes, it seems reasonable to set your USER_MOTOR_RESISTANCE to (0.0175), but I feel like there is a root problem that is causing this that will just cause more problems in the next steps.

    Thank you - I will use this for right now and look at other steps in the estimation process when doing further testing on the estimation process.