Avoiding Index_Search at Power-Up

Hello Folks,
I want to avoid the Index_Search at the each Power-Up.

So I guess, Index_Search serves 2 purpose here:

  • Finding the 0 of encoder
  • Finding some alpha and beta parameters for the motor, which are necessary for commutation

So if I think, I am quite OK with only incremental setup and can make present value to be 0.
And in the function ‘run_index_search’, it runs until index is found.
Can I stop this rotation after sometime say 100ms, so that the alpha and beta parameters will be captured and my motor will not be moved a lot also.

Can you please let me know any implication in doing this.


Hi Saurabh,

What are alpha and beta parameters? I have never heard of them.

Sorry Oskar, I was looking in the some old code, in that value of motor_.enqueue_voltage_timings was being checked during Index Search.

So I thought, if I can run the Index Search for a shorter time, so that this value can be checked and motor doesn’t rotate a lot.
But in the latest software, motor_.enqueue_voltage_timings is not being checked in index_search.

So as per my understanding, index_search is done for finding the Index position and make it 0.

Is it possible, if at power-up, whatever my position is there, I can make it zero, instead of finding the index.

Or please let me know if still Index Search is needed for commutation also?

The index search is mostly used for commutation. You can disable the home function and have 0 reference position be the startup position, but you still need to find index to commutate correctly.

Then I think, Index Search should be needed even if I use Absolute Encoder.
Is that understanding correct?

No, index search is a way to recover the absolute position when you use an incremental encoder. Index search is not used with absolute encoders.

Sorry to again asking, but is the Index_Search is needed for Position finding or commutation.
When you say, index_search is anyway needed with incremental encoder for commutation, I think some parameters are calculated that are needed for motor rotation.
But if that is the case, then those parameters should also be needed if we use Absolute Encoder.

And I guess there should be a good reason that SPI Encoder branch has not been merged with main branch.
Can you please confirm if there are no issues in that branch, or it has been fully tested.

Did this ever get resolved? We are also trying to move towards using absolute encoders to avoid index search at startup, but not sure how that would work for commutation?

Yeah this is resolved - the absolute SPI encoders work well for commutation, actually they work better than Hall sensors and Incremental Encoders - It is simple to find the electrical angle as a function of mechanical angle, if you know both the pole_pairs and cpr.

1 Like