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.

BLDC torque ripple at low speeds

I need to run a BLDC motor in torque mode at very low speeds, often stalled. The role of the motor is to maintain tension. The issue that I’m having is that I get ripples in my torque at those low speeds. It seems the motor stops when the poles reach alignment and takes some time to overcome the alignment to continue spinning.

This project is meant to replace a third party controller running the same motor. By comparison, the other controller has almost imperceptible ripple in the same circumstance.

I can see this same issue on the DRV8312EVM as on my hardware, so I don’t believe my setup to be the issue. My application is based on lab12 using an encoder for torque and speed modes, but I’ve also rolled back to lab2a and still see this behavior. This leads me to believe I have something poorly tuned in user.h or that the control needs to be adjusted for this motor. Mu user.h settings were based on the helper speedsheet.

I’ve tried this with and without the force angle enabled. I’m unable to see a difference.

I am setting the alignment during start up with ENC_setZeroOffset.

Looking at my pwm signals during a low speed stall, all three settle to 50% duty when the stator reaches alignment. My Iq reads as the same as Iq_Ref and there is nothing to cause it to overcome the stator alignment.

Below is a graph taken from running at 50rpm. The three phase duty cycle percentages are shown along with the speed of encoder ticks. The velocity loop would ramp up to overcome the settling effect after 200ms of sitting still.