Our mechanical device needs to be index properly at start-up but there is a 5:1 ratio of motor turns to device turns. This means that we have to start the motors in the correct spot at startup otherwise there is a 1/5 chance it will index to the correct spot.
We are considering taking apart an encoder, removing the index point and making it so that the index point is on the mechanical device instead of the motor. This would hopefully allow the mechanical device to index to the same location at startup each time even if the motor has to make several rotations. Any input or ideas?
What about a secondary encoder after the reduction?
That is similar to what we are looking at doing right now, does the odrive support two encoders for one axis? Also, I have a hard time believing I am the only person who has ran into this issue or am the only person that is using odrive in a none-direct drive use case?
I don’t think the odrive supports dual encoders per axis, but perhaps sometime can chime in and correct me. That said, even if there is currently no support, it seems plausible that someone could write custom firmware to read the secondary encoder via SPI.
You’re certainly not the only one with a non-direct drive use case; I think most people use the dual encoder configuration I suggested, with the second encoder being read by a microcontroller that talks to the odrive(s). For simple use cases, limit switches are also an option.
Dual encoder is only available on the RazorsEdge branch right now, and it removes the ability to use the second output.
Just stick a hall effect sensor on the other side of the reduction and tie it to the “index” pin. Alternatively, you can use the Endstops and Homing functions on RazorsEdge
Dual encoders support using absolute SPI for primary and the normal incremental as secondary (or another abs spi) would be brilliant.