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.

TMS320F28069F: The problem of abnormal restart after DC bus voltage reduction

Part Number: TMS320F28069F
Other Parts Discussed in Thread: MOTORWARE

TI expert: I'm doing the experiment of motorware lab10, and I have a strange problem that needs help. My control board and the main circuit are powered separately. After the motor operates normally, turn off the DC main circuit power supply, and the motor stops running (because the undervoltage protection is set). When the DC voltage is lower than very low (about 5V), turn on the DC main circuit power supply again (at this time, the control circuit still remains powered). When the motor is started, the motor operates abnormally, the motor is unstable, generates high-frequency noise, and the motor current and voltage oscillate, However, if the DC voltage value is higher than a certain value (about 5V), then turn on the DC main circuit power again, and the motor operates normally. gMotorVars.Flag_ enableOffsetcalc/gMotorVars.Flag_ EnableRsRecalc is true by default. View offset_ I/V does not change after the DC main circuit is closed. I cannot further check the relevant status in the while (gMotorVars. Flag_enableSys) loop, because it involves the est function. Can you give me the reason and how to solve it?

Thanks!

Quan

  • Add:If the DC bus voltage is zero, run the for (;;) loop, and then turn on the DC bus power, the same problem will occur.

  • Hi,

    The expert on MotorWare SDK is out of office today. He will get back to you next week.

    Regards, Santosh

  • Ok,Thanks! Waiting for expert.

    Regards

    Quan

  • By default, the InstaSPIN labs do the ADC offset calibration every time when start the motor. So you need to make sure that the dc bus voltage is higher enough when start the motor, or you can disable the offset calibration and set the correct values in the initialization code.

  • Hi Luo: Thank you for your reply!

    1. According to my experiment, set ADC offset calibration=false. If the DC voltage is lower than a certain value, the program will enter while (gMotorVars. Flag_enableSys), and the starting motor will generate abnormal noise. But if the DC voltage is lower than a certain value, the program will jump out of while (gMotorVars. Flag_enableSys), and then enter while (gMotorVars. Flag_enableSys) after the voltage is higher than a certain value, and the starting motor will operate normally, While ADC offset calibration=false/true, it only affects the stability of the motor at low speed, and will not produce high-frequency noise. Therefore, the cause of high-frequency noise should be CTRL_setup (ctrlHandle) in the main interrupt function Caused , CTRL_ Setup (ctrlHandle) is due to CTRL_ RunTraj (handle) causes, I wonder if I'm right?

    2. In order to solve Q1, the simplest way is to exit the while (gMotorVars. Flag_enableSys) loop and wait for the DC voltage to recover before entering the loop. However, there is a new problem, that is, there is a waiting time after entering the cycle. The default value is 5s, which does not meet the working requirements. How can I save the last ADC offset calibration value and set gMotorVars. Flag_ EnableRsRecalc=false, and modify pUserParams ->ctrlWaitTime [CTRL_State_OffLine]=0, what can I do?

    Regards

    Quan

  • I wonder if I'm right?

    If you want to set the ADC offset calibration=false, you need to set the correct initial offset in your code as mentioned below.

    what can I do?

    Yes, it's better to check the dc bus voltage and then exit the wait loop to enable the offset calibration and start to run the motor.

    Or set the correct value in user.h as below and set gMotorVars.Flag_enableOffsetcalc to "false".

    //! \brief ADC current offsets for A, B, and C phases
    //! \brief One-time hardware dependent, though the calibration can be done at run-time as well
    //! \brief After initial board calibration these values should be updated for your specific hardware so they are available after compile in the binary to be loaded to the controller
    #define I_A_offset (0.9939797521)
    #define I_B_offset (1.014363647)
    #define I_C_offset (1.005615234)

    //! \brief ADC voltage offsets for A, B, and C phases
    //! \brief One-time hardware dependent, though the calibration can be done at run-time as well
    //! \brief After initial board calibration these values should be updated for your specific hardware so they are available after compile in the binary to be loaded to the controller
    #define V_A_offset (0.5020679235)
    #define V_B_offset (0.4977650046)
    #define V_C_offset (0.4986107945)

  • Hi Luo: Thank you for your reply! I have solved this problem, and now it works well.

    Regards

    Quan