Different speed depending on the direction of rotation

I have implemented a bldc motor with angle control that works through pulses. as if it were a stepper motor.
With the same number of pulses in one direction it reaches more speed than in the opposite direction.
Could it be the fault of the value of zero_electrical_angle?

When starting the engine I get PP check:fail error.
MOT: Enable driver.
MOT: Align sensor.
MOT: sensor_direction==CW
MOT: PP check: fail - estimated pp: 2.25
MOT: Zero elec. angle: 2.39
MOT: Align current sense.
MOT: Success: 3
MOT: Ready.
Engine ready.

The motor has 2 pairs of poles and a 1000ppr encoder.

Why do it estimate 2.25 instead of 2ppr?

Thanks for your time.

I also experienced this when the zero electric angle is off, but for me this only happens with large pole pair motors (like steppers, 50pp, so the calibration is over a very small physical angle). I would be surprised if even a moderate shift in electric zero for 2pp would cause that type of problem.

I usually have to manually tune the zero angle to get equal top speed in both directions. The calibration procedure needs improvement (approaching from both directions and averaging the readings).

Reversing the calculation from the estimated 2.25pp, total movement was 2.79, whereas it should have been 3.14. So the rotor may be lagging significantly behind the coil field, which is what causes the zero angle to be off. Higher voltage_sensor_align may get it closer, but manual tuning is still better for now.

1 Like

Thank you all very much.
I have already solved the problem.
I have adjusted the value of zero_electrical_angle and now the speed is the same for both directions of rotation.

1 Like