I have two hub motors with built in hall encoders connected to M0 and M1 of an Odrive 3.6 board. Calibrating and setting axis 0 to closed loop control allows control of that axis, and the same goes for axis 1. However, setting axis 1 to closed loop control makes the axis 0 encoder very erratic and useless, varying around the current value by +/- 2. Setting axis 1 state to idle makes encoder work again. (work := axisN.encoder.shadow count is updated on rotation)
Odrive reports encoder error of type “no response”
Switching places of the motors makes both work fine. Would very much prefer the original setup.
What gives? What kind of troubleshooting can be done here? Wires are short and minimal crossovers.
Yeah that happens sometimes. Try swapping the motors, using ferrite rings, hall encoder capacitors (22nF), etc. Unfortunately this is just a hardware issue with 3.6 that occasionally pops up for users (usually with hub motors for whatever reason)
Thanks for confirming. Will switch motors and make software changes. I don’t suppose this has been observed in nextgen ODrive hardware?
Wires crossing at 90 degrees don’t usually get much interference from each other. If they run parallel, like in a conduit, for a distance then they will pick up interference. Try seperating the wires, even if you have to use longer wires.
If you have access to an oscilloscope, you may be able to view the interference spikes and that goes a long way to tracking down the source.
The suggested solutions are all hardware solutions. Software is unlikely to fix it.
Nextgen only controls a single axis