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.

TMS320F280049C: Motor SDK Vbus ADC reference

Guru 54077 points
Part Number: TMS320F280049C

Using our own HV three phase inverter with x49c the ADC scale factor (user.h) values below have little effect to change real time motorVars.VdcBus_V show in debug. The DC is 40v but the real time debug shows 13.4v and SF set 0.15 or any other lower values, this is the highest it will go. Why do the ADC scale values have no bearing as described 14.1.1.5 page 485 SPRUHJ1H–January 2013–Revised June 2019? When ADCINC1 J7 pin 66 is reduced, real time debug value changes. The ADCINC1 divider value 260mV for 38vdc via R1(940k), R2(5.7k) works fine for other TI 12 bit SAR show 41vdc 2MSPS.

Typically run motor 140v-170v but test 24v-40v with new firmware and never are required to change the HV resistor divider/s for EMF or DC bus voltage.

//! \brief Defines the maximum voltage at the AD converter
//!        full scale voltage of AD converter
#define USER_ADC_FULL_SCALE_VOLTAGE_V         ((float32_t)(192.528)) //57.528

//! \brief Defines the direct voltage (Vd) scale factor
//!
#define USER_VD_SF                 ((float32_t)(0.15)) //0.95


//! \brief Defines the voltage scale factor for the system
//!
#define USER_VOLTAGE_SF       (USER_ADC_FULL_SCALE_VOLTAGE_V / (float32_t)4096.0)   // 12 bit ADC, 2^12 = 4096

#define USER_DCBUS_VOLTAGE_SF         (USER_ADC_FULL_SCALE_DCBUS_VOLTAGE_V / (float32_t)4096.0)   

  • FYI: To get +38 motorVars.VdcBus_V the User ADC full scale had to be set to extremely high value. Haven't changed user filter pole but the ADC full scale is a bit excessive. The user voltage SF (0.95) to (0.15) alone only produced 9-10 volts increase. Seems the SF ratio could be better since setting R divider to produce the highest full scale ADC values lead to over voltage transient trips on other MCU class. The example FSV (409.9vdc) and my above R1/R2 values 547vdc was not to far off.   

     //! \brief Defines the maximum voltage at the AD converter
    //!        full scale voltage of AD converter
    #define USER_ADC_FULL_SCALE_VOLTAGE_V         ((float32_t)(547.5106)) //57.528
    
    //! \brief Defines the analog voltage filter pole location, Hz
    //!
    #define USER_VOLTAGE_FILTER_POLE_Hz           ((float32_t)(338.357))

  • Good. We'd like to close this thread since you found the root cause. ADC full-scale value must be calculated according to the voltage sampling circuit. The voltage filter pole value is critical for motor control, it doesn't impact the Vdc sensing value.

  • But you don't think having to make the value 547vdc for 40v supply is a bit high for the R1/R2 divider described?

  • That depends on your hardware board and the motor, don't need to change for the power supply always. Of course, you might change the circuit if you just want to run a low voltage motor on the board and to achieve a better resolution for voltage sensing. 

  • Yanming Luo said:
    Of course, you might change the circuit if you just want to run a low voltage motor on the board and to achieve a better resolution for voltage sensing.

    It was mandatory to reduce divider values as the SF in motor ID produced incorrect parameter values even though DC bus voltage readout was ok. So R1/R2 are now close to BoostXL board and the voltage SF improved but current SF is tripping CCMPx DC faults entering EST_STATE_IDRATED. New thread covers that issue.