Set up ABI Encoder without calibration or index search

Hello everybody,

this topic has already been discussed several times, but I didn’t find an answer to my specific question.

I have a motor with ABI encoder connected to a gearbox. -> On the output side of that gearbox, there is another encoder (absolute values). -> This encoder is read by a Raspberry. -> the raspberry knows the ratio between absolute encoder counts and ABI encoder counts. -> the raspberry should calculate a PWM signal for the oDrive just on basis of the absolute encoder values.

So is there any way I can ‘hack’ the encoder source code, so I have my encoder ready from startup and always setting it to zero from startup? Because my Raspberry knows the absolute position so I want the oDrive controller just to control the ‘offset’ of that position.

Is there a way I can achieve this without blowing up the oDrive?

Thank you

Hmm… you MIGHT be able to get that to work? We have some very rudimentary absolute encoder support, but typically the absolute encoder is mounted directly to the motor. Typically you’d run the absolute on the motor, decouple the load, and calibrate the motor. Then from then on you don’t have to run the calibration. But if you can figure out the electrical angle adequately (no backlash) through the geartrain, it could work (?)

1 Like

So I get you right that with ignoring the backlash (which can be unprecise, need to experiment :wink: ), I can just run the encoder without further setup, with merely setting the CPR and direction? That would be awesome!
My concern was just that the control algorithm or some other code part needs data from every calibration sequence, but it doesn’t?

Thank you!

Hello @Wetmelon, I am also having similar problem.
I don’t want to run encoder search every power-on.

So is it possible by using an Absolute encoder rather Incremental encoder. Please confirm me on below points:

  1. Do we need to use some other interface than ABI
  2. Do we need to change the firmware for using Absolute encoder
  3. I know with absolute encoder, I may get less accuracy, is it really significantly low

Thanks,
Saurabh

Yes, you want to use an Absolute Encoder. You can use the AS5048 on SPI. This is supported by the RazorsEdge branch.

2 Likes

Hello @Wetmelon, thanks for response.
But need to know 1 thing, is there any good reason, why this branch has not been merged in the master branch of O-Drive.
Does it need more testing or stabilisation?

What is this branch being used for? I googled RazorsEdge only to find barber shops and old tv shows…

Yes just more testing. @naktamello hehe sorry I guess I should have linked it here https://github.com/Wetmelon/ODrive/tree/RazorsEdge

1 Like

I found thislink on digikey for a development kit… is this the right encoder?

There are lower cost dev kits at around $17 each, 5047 will also work.

about AS5047P,how to use this encoder via SPI?