+/- 1 RPM Resolution using B-G431B-ESC1 Discovery Kit
I have this kit, am using the MCSDK under STM32CubeIDE, and everything seems to be functioning fairly well.
I'm still getting the occasional fail to start issue, but what I'm really trying to do is to be able to specify motor speed +/- 1 RPM, and be able to hold that speed to +/- 0.5 RPM.
As far as speed accuracy, I'm getting better results with a pretty hefty flywheel, and I have the Observer+PLL Variance threshold parameter set to 5% in the Workbench app, but I still have more variance in speed than I'd like. What are the best parameters to tweak / signals / variables to monitor to hold speed better? Would using Hall Effect sensors as an auxilliary sensor help with speed accuracy?
As far as being able to specify the desired speed, I'm defining SPEED_UNIT to be _001HZ, and with the hFinalSpeed parameter to MCI_ExecSpeedRamp being a 16 bit integer, I just don't seem to be able to get 1 RPM granularity at RPM < 1000. Also, the docs / comments do not seem clear that using _001HZ will help with speed granularity, and the math doesn't seem to make a difference in the end, I'm still going to end up with kind of a step function with a granularity > 1 with regards to RPM.
What would really be cool is some sort of "fine adjust", but i don't see anything like that in the API, and there doesn't seem to be any stated capabilities or limitations that would help answer my questions. I was also wondering if there wasn't some base PLL that I could twiddle to tweak things where I need them.
I've watched a bunch of the videos ST has posted on Youtube, but none of them seem to answer my questions, or if they did, I didn't pick up on it.
Does anyone have any pointers on how / if the HW/SDK is capable of such things?