Index_found immediately True

I’m having some trouble with the encoder index search. I pre-calibrated the axis and saved the configuration. After rebooting the ODrive axis.encoder.index_found is False. However, when I request AXIS_STATE_ENCODER_INDEX_SEARCH, axis.encoder.index_found immediately changes to True without moving the motor. I checked the signal on the oscilloscope, and the encoder is working properly. If I rotate the motor by hand the index is located properly. What could be causing this?

I am using a US Digital EM2.
Checked the following threads:

F0001TEK
AXIS_STATE_IDLE

F0000TEK
AXIS_STATE_CLOSED_LOOP_CONTROL

Do you have startup_encoder_index_search enabled? Maybe it moved a fraction of a turn when it started up and its been sitting there

It’s almost always noise. Add a 22nF decoupling cap to the index pin.

1 Like

True, we had a similar problem. And add ferrite rings. They also help.

You can also try to put a 1kOhm resistor on the z-index. For me, that was the only way to make it work.

If caps in the data lines always helps, why aren’t they just built in at this point?

1 Like

I added the decoupling caps to the index pin, and the index search is working as expected now.

There is still some noise on the index line, but the attenuation seems to be enough. I may also try to add a ferrite bead to the cable, but I don’t have any on hand at the moment. I captured a snapshot of the noise below (one pulse). CH1 is measured at the encoder output and CH2 is at the ODrive input.

F0003TEK

I’m also curious to know why this is not included in the board design.

2 Likes

They are included on S1 and Pro. V3 is end of life… Probably could have spun a rev but too late now

I had the same issue and could only fix it using the differential lines and a rs485 receiver ic.