Hi,
not too happy with my current method of starting a motor on a skatebaord. currently in an open loop i send very high PWM in with acceleration, then use flying start to switch to FAST. It's not a very flexible method to start, and is sometimes giving me unexpected behavior like locking up etc. The flying start is just very hard to get right. So I'd like to try the standard force angle method. And to do it right, I need to align the wheel on the skateboard while under the load of a person. The skate board has enough power to take an adult uphill, so available power itself should not be an issue.
from reading sphruhj and and some post on this forum, my understanding is that i need to align the wheel by injecting power purely to the D-axis for some time, before ForceAngle comes into effect and hands over to FAST. (This means that force angle always starts at the same angle, corresponding to the D-axis, correct?) Functionally i have done that, and with little load it works fine. However, not under human weight. So i think what I need to do is have control over the magnitude of PWM signals during D-axis injection and ForceAngle.
I have EST_setMaxCurrentSlope_pu to 127.99
To increase the PWM while in forceAngle, i have this in the interrupt
if ( EST_getForceAngleStatus(obj->handle){
gPwmData.Tabc.value[0] = _IQmpy(gPwmData.Tabc.value[0] , _IQ(1.3)) //etc.. for the remaining lines
what I cant figure out is how to do something similar for the D-axis injection and alignment phase. I dont know how to test for being in RrRecalc, and beside it seems wrong to manually overwrite PWMwrite vaules while doing RsRecalc. I think i need to figure out ho to do alignment without RsRecalc. It's also limiting that RsRecalc only happens during initiation.
So in terms of gPwmData.Tabc.value[0] , gPwmData.Tabc.value[1] , gPwmData.Tabc.value[2] , what does injection into D-axis look like?