Encoder, I am a bit confused

hi guys,
I got an Odrive board, and a CUI-AMT102-V encoder, which has the incremental output signals { A, B, X }. Signals A and B are in quadrature, while X is the index signal.

The Odrive board is reported to also accept SPI encoders, which have completely different signals, such as MISO, MOSI, CS, CLK.

OK, { A, B, X } and { MISO, MOSI, CS, CLK } are allo digital TTL signals, but this arises me confusion:

  • how the Odrive board is set for a Quadrature encoder rather than for SPI encoder? Do I have to set something on the firmware? Do I have to re-flash it?
  • what have I to set on the software side? Do I have to?

Please let me know.

The documentation says

  • ABI. You can use ABI with the AS5047/AS5048 with the default ODrive firmware.
  • SPI. You can use SPI encoders with the TobinHall’s branch

Thus, I assume that the only way is to reprogram the board.

Quadrature (aka incremental or ABI) encoders are the default. Simply plug them into the A, B, Z pins on the ODrive.

If you want SPI encoders, you’ll need to use devel branch (which includes TobinHall’s branch)

Does TobinHall’s branch also handle ABI? Or only SPI?

The MPU needs to have specific hardware in order to handle a quadrature encoder: is the ABI module muxed with the SPI port? And if so, does the firmware allow a command to select ABI rather than SPI?

Still not clear.

Also, I “simply attached” a CUI-AMT102-V encoder to ODrive board and it doesn’t correctly read the encoder. Values are always equal to 4.

I will give you more details tomorrow.

1 Like


No. Separate pins, separate hardware peripheral on the MCU. You can pick which source you want for each motor (and we plan to have the ability to arbitrarily select up to 2 encoders per axis, one for commutation and one for position control)