FOC does not start motor

I am running FOC using a custom ST board and using the code of ST. The motor does not rotate on its own we need to do hand push. The scenario is motor is already loaded with around 5Nm, then i give the speed command. Is it recommended to start with trapezoidal switching and then move to FOC once the motor starts spinning. Please advise.

How about that?


That is what I am doing now seriously I need some solution.

1 Like

With hall sensors it’s better to start with trapezoidal because you don’t know the precise angle. Once you are moving you use the extrapolated angle. You could probably also use FOC but set the predicted angle in the middle of the right sector.

1 Like

Thankyou very much I will try and update the results.

The ST code has already some logic i think for starting but it is taking some time. When i measured the time for 3 times

When i give speed command, It is taking around 4.5 seconds , is it possible to reduce the time? This is limitation of hall sensor am i correct nothing much can be done about it. My goal is it shall accelerate very fast on start. The log is from CubeMonitor which i came to know from this group thank you very much for that.

How is your current PID?
Can you add your q axis current to the graph?

i plotted the q axis current after the park transformation.
Ialphabeta = MCM_Clarke(Iab);
Iqd = MCM_Park(Ialphabeta, hElAngle);
g_qcurrent_u16 = Iqd.q + 32767;
Vqd.q = PI_Controller(pPIDIq[M1], (int32_t)(FOCVars[M1].Iqdref.q) - Iqd.q);
Vqd.d = PI_Controller(pPIDId[M1], (int32_t)(FOCVars[M1].Iqdref.d) - Iqd.d);

The slope is really slow no ?

What i have to do to increase can i increase Kp?

The reason for the delay is when i checked the code i used the speedramp of 5seconds, hence the delay is observed. i am not able to put 0 as it gives over current protection, so now i am using 1sec ramp, found some improvement but i have to test thoroughly.

1 Like

I have done several tests with no load, under 3 Nm, 5Nm, 7Nm, 10Nm. The motor starts smoothly in no load, but as the load increases the motor makes lot of noise and struggling to start.
Some of the waveforms i captured, please help me if i can modify any of the logic to start under loaded conditions.

Graph with IqRef. The Iqref goes to a very high value initially but the actual Iq value does not go that value.


The Iqref goes to 0 consistently is it a mistake? the Actual Iq not going to 0. The rotor angle is completely distorted.

similar to this several tests i have performed.
Multiple testing i am doing but not knowing what exactly i have to modify, and what is the root cause. Please help.

Why is electrical angle not changing?

May be it is because of load?