I am driving a big propellor with a big motor using TI instapsin on custom PCBs.
It does ok while starting up from zero speed in indoor as well as outdoor windy conditions. the startup is pretty jerky, it starts spinning in the opposite direction on startup but after about half a revolution, it starts rotating in the right direction. This initial half rev in opposite direction during force angle is little concerning to me.
I haven't touched void updateIqRef(CTRL_Handle handle) at all. it what came with motorware
void updateIqRef(CTRL_Handle handle)
{
_iq iq_ref_pu = _IQmpy(gMotorVars.IqRef_A,_IQ(1.0/USER_IQ_FULL_SCALE_CURRENT_A));
// set the speed reference so that the forced angle rotates in the correct direction for startup
if(_IQabs(gMotorVars.Speed_krpm) < _IQ(0.01))
{
if(iq_ref_pu < _IQ(0.0))
{
CTRL_setSpd_ref_krpm(handle,_IQ(-0.01));
}
else if(iq_ref_pu > _IQ(0.0))
{
CTRL_setSpd_ref_krpm(handle,_IQ(0.01));
}
}
// Set the Iq reference that use to come out of the PI speed control
CTRL_setIq_ref_pu(handle, iq_ref_pu);
return;
} // end of updateIqRef() function
But the biggest problem is that when i am trying to change directions ie reduce Iq_ref and then increase iq_ref in the opposite direction, most times in windy conditions , it gets stuck in the force angle mode and never recovers so even when iq_ref is pretty high it keeps spinning at a very small rpm and never speeds up. some times it goes totally unresponsive.
I was curious about trying to use the speed PID ie lab 5b while in the range of 10 rpm to - 10 rpm for zero transition and then use iq_ref directly for higher speeds. what the differences between lab5a and lab 5b and is it safe to transition on the fly between these two modes?
We have to do this in sensorless even when we have an encoder because of various merits and robustness of sensorless compared to sensored.