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.

MCF8329EVM: Improving startup under load

Part Number: MCF8329EVM

I have the EVM driving a motor attached to an electromagnetic brake for testing load conditions. When the motor is up to speed it easily handles the load even with the brake at it's maximum setting, but it has trouble starting up with even a small amount of load applied. I've tried all the different startup methods and played with the parameters but have not been successful. Could someone form TI provide some tips on the recommended path for this scenario?

  • Hi Ian,

    When there is initial load, both stationary startup configurations and open loop configurations will determine whether the device can spin up the motor successfully.

    Stationary Startup Options
     - this is when the device determines the initial rotor position due to lack of sensors

    • If using Align, Double Align, you'll need to make sure the Align current is configured high enough to overcome the load that's being applied. You can simply observe whether your motor moves a little after a speed command is provided. Also try increasing the Align Time to make sure that the rotor also has enough time to settle to the align vector.
    • If using IPD, then the rotor position estimation shouldn't be affected due to external load, so if IPD is reliable without load, I would look at changing Open Loop options.

    Open Loop Options
     - this is when the device blindly commutates the motor without any rotor position feedback because there's not enough BEMF generated yet

    • I would increase the OL_ILIMIT to make sure that the device is applying sufficient torque to overcome the load. You can also try decreasing the open loop acceleration coefficients A1 and A2 to decrease the likelihood of the rotor losing sync.

    Regards,
    Eric C.

  • I can get IPD to work reliably without load. Increasing OL_ILIMIT doesn't help when there is a load and also makes it stop working without load.

    With Align, increasing the OL_ILIMIT and ALIGN_OR_SLOW_ILIMIT got the motor moving but then it would get stuck during handoff. Disabling auto handoff seems to fix the problem and it starts up fine now. Can you provide any guidance for tuning the handoff parameters? The defaults seem to work but I want to make sure I'm choosing them correctly.

  • Hi Ian,

    Please give me one day to compile my suggestions for optimizing handoff parameters, and I'll get back to you by end of tomorrow.

    Regards,
    Eric C.

  • Hi Ian,

    If you want to try using auto-hand off, please try increasing the [AUTO_HANDOFF_MIN_BEMF] so that the device will wait until the motor accelerates in open loop until sufficient BEMF is generated before transitioning into closed loop.

    If you stick with manual handoff, then the device will transition when the motor speed reaches the [OPN_CL_HANDOFF_THR] (percentage of [MAX_SPEED]). Typically we want to enter closed loop as soon as possible during startup, so I would lower the handoff threshold as much as possible while still reliably transitioning into closed loop.

    Another option to achieve smoother open-to-closed loop transition and avoid speed transients, is to enable the [IQ_RAM_EN] so that the device will lower Iq_ref before entering closed loop. This is particularly useful for when open loop current limit is set pretty high.

    Lastly, you can also use [THETA_ERROR_RAMP_RATE] to configure the ramp rate of the device reducing theta_error (Ɵgen - Ɵest). Lowering the Ramp rate may result in smoother transition.

    Regards,
    Eric C.

  • Took some time adjusting those values but I was able to get it to work.

    Something that caused me some issues is that during failed startups where the motor would draw a lot of current I would sometimes get an APP_RESET fault and undervoltage on the bus observed with an oscilloscope. That must have put the board is some odd state as I was getting very strange behavior even after adjusting values to what I thought they should be. Power cycling the board and starting fresh from the json file resolved this. Hopefully this saves someone from getting tripped up by the same thing.