Encoder Connected to ODrive and Arduino

I want to use the same encoder to output to both the odrive and an arduino at the same time. Encoder works fine when only connected to Odrive or only connected to Arduino board, but not when the signal is shared. The encoder error I get is “ERROR_NO_RESPONSE = 0x04”

I assume this is a pull-up resistor problem, I know odrive has on-board pull-up resistors, but not sure how arduino pins are set. Arduino is running pre-compiled firmware, so I don’t have access to modify the pull-up settings.

Any advice? Should I try to remove the pull-ups on Odrive?



There are 20K pullup resistors built into the Atmega chip that can be accessed from software.
These built-in pullup resistors are accessed by setting the pinMode() as INPUT_PULLUP.

Example : pinMode(8, INPUT_PULLUP);

The default configuration for a pin is NO pullup resistor.

Which Arduino Board do you use and which pin in Arduino do you use for encoder ?

1 Like

Using Arduino Uno. Pins 2,3 as they are the only two with interrupt capability.

@Julien_Lacombe are you referring to the 20K pullups on the Arduino? I though the pullups on the Odrive board are like 3.3K and are soldered to the board.

Yes I’m referring to the internal 20K pullup resistor on the Arduino.

The Odrive board got 3.3K pullup resistor R9 to R11 for M0 encoder and R32 to R34 for M1 encoder.

If you didn’t force the Arduino pinMode with configuration INPUT_PULLUP, pullup resistor on the Odrive should be ok to have encoder on both device Arduino and Odrive.

Which Encoder are you using ? AMT-102 ?

OK, I will try that, not sure why I didn’t try that last night.

Encoder is cheap rotary encoder of amazon