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.

TMS320F28388D: Motor reverse rotation

Part Number: TMS320F28388D

  • Controlling a DC 3-phase motor based on TMS320F28388D
  • When powering on, the motor occasionally rotates in the opposite direction 
    (not controlled in the forward direction).

     

*Note

          - DC-Link voltage is 300V


          - Controlled by torque control method


          - SW and HW verification in progress based on DSP evaluation board

  • What control algorithm are you using? Sensoed or sensorless? FOC or trapezoidal?

    Make sure that the initial position is detected for startup if you are using sensor based solution. Please provide more information of your questions. It's too simply to understand and answer.

  • Hi Luo, sorry for the insufficient information. Here are the details.

     

    Control type

    Sensored FOC (current control in d/q with SVGEN, using TI MotorControl SDK "Dual-Axis Mor Control Using FCL" example as baseline).

    Position feedback: Incremental encoder attached to a motor via QEP

     

    Startup / initial position handling

    I’m using the SDK state machine: ENC_ALIGNMENT → ENC_WAIT_FOR_INDEX → ENC_CALIBRATION_DONE.

    During ENC_ALIGNMENT, I apply Id current (IdRef_start) and set Iq = 0 to align the rotor.

    After alignment, I go to ENC_WAIT_FOR_INDEX and rotate slowly to find the QEP index pulse.

    When index is found, I move to ENC_CALIBRATION_DONE and then do the torque control.

     

    Issue / symptoms

    Sometimes the motor runs in the opposite direction of the torque command (IqRef).

    I had suspected the rotor may not fully aligned/locked because I have some load on the motor, so I had increased IdRef_Start (0.05 to 0.22pu).

    The frequency of this issue reduces but still it happens sometimes.

     

    Could you advise me to get through this issue? Thank you for your support.

     

    p.s. I am using a different motor, TEKNIC_3432PLN08D. The following is the motor parameter I calculated.

    #define M1_RS          (0.273)                // Stator resistance (ohm 0.546(p-p) / 2 = 0.273

    #define M1_RR          (NULL)                // Rotor resistance (ohm)

    #define M1_LS          (0.0006325)            // Stator inductance (H)    1.265 mH(p-p) / 1000 / 2 = 0.0006325

    #define M1_LR          (NULL)                // Rotor inductance (H)

    #define M1_LM          (NULL)                // Magnetizing inductance (H)

    #define M1_FLUX        (0.1037358578)        // BEMF constant (V/Hz)    29.22 * 0.06 / 4 / sqrt(3) = 0.253052622985 -> (x * BASE_FREQ) / BASE_VOLT =  0.1037358578

    #define M1_POLES      (8)                  // Number of poles

    #define M1_ENCODER_LINES  (2000)                // Number of slots in the encoder    8000(quad-counts per rev) / 4(quad-encoder) = 2000

    #define M1_BASE_FREQ    (66)            // About 1000 RPM

    #define M1_BASE_VOLTAGE    (173.2)    //VDC 300 / sqrt(3)

  • 1. Check if the encoder connection and configuration are correct.

    2. Tuning the alignment and startup current as shown in the application note.