SimpleFOC with 3 phases stepper motor and as5600

I have 3 phases stepper motor (1.2 deg, 24N.m NEMA54).

I use RP2040 and ikcm15h60ga as the driver module.
AS5600 as the feedback.

I can run in velocity openloop, but I have to limit the pwm (a.k.a voltage) to 5V. They can reach 2 rad/s as well.

The current readout was checked and the RP2040 can sense current correctly for both Q and D phase.

However, I have no luck in setting for closed loop control.
I’m not sure that is it because AS5600 provide a low encoder position per step?
Has anyone have the experience on this?

BTW, the pole pair is strange, it running to be 56.89 but I set it to 60.
the 3 phase stepper should have 360/1.2 = 200 steps, is it 200 poles?

Thank you

I have fixed the problems.
It’s appear to be serveral problems summing up.

  1. The resolution of the magnetic is quite low compare to the number of pole, therefor the pole-pair calculation is inaccuracy, just ignore them and fixed to 50.
  2. The noise from the magnetic encoder will be considered high, compares with the step. Then, when apply to PID algorithm, both velocity and position, the P gain will amplify the noise, as well as the D gain which amplify more.
    2.2 To reduce the cogging of the motor, as the result from the noise, I gain must be high to act as integrator, which will cause the overshoot. (we will try to fix that later)
  3. The max speed is limit by the max voltage. Therefore, increasing voltage allows the PID to reach its desiered speed.

As mention, still, the overshoot is needed to be fixed by limiting and use a path planning. That’s all.

1 Like