Suggestion for a magnetic encoder

Hi I recently bought an odrive v3.6-56V and tried to connect with my motor and encoder.

I have a GM3506 gimbal motor and a magnetic encoder AS5048A which communicates with SPI.

However, it sucks when I try to communicate odrive and the AS5048A.

I’ve tried several solutions on the community but nothing worked for me.

So I decided to just buy a new one with better compatibility.

Does anyone have a good suggestion on magnetic encoders?
It doesn’t need to be SPI but should be a magnetic encoder.
(I’d like to try CAN or RS422 encoders but don’t know if I can use them here)

Also, does odrive have a weak supportability on SPI? Because I see a lot of people suffering from SPI communication.

Hi! SPI is intrinsically a pretty bad idea for anything with motors, since it’s very sensitive to electromagnetic interference (EMI). That being said, it’s the only option for absolute encoders with the v3.6, and can be reliable with proper wiring (routing the communication wires away from the motor, and using a shielded cable / getting some aluminum foil and grounding it). Can you use an AS5047P or AS5047D instead? What do you mean when you say the communication sucks?

CAN encoders are too slow and the v3.6 doesn’t support RS422 unfortunately.

ODrive Pro and S1 supports RS485, which is much more reliable - e.g. ODrive Encoder OA1 - On-Axis Magnetic Encoder with RS485 – ODrive Robotics

Hi! Thanks for the reply

My odrive always makes the ABS_SPI_COM_FAIL error since I power it.
I’ve changed the CS pin to other GPIOs and used a pullup resistor, plugged MOSI into 5V and 3.3V, but couldn’t solve the error.

Since you said SPI is sensitive to EMI, will AS5047p work better even if it uses SPI?

I’ve seen a lot of people using CUI encoders and now I understand why.
My gimbal motor doesn’t have a shaft so that’s why I tried to use a magnetic encoder but maybe I should try a CUI one…

My odrive always makes the ABS_SPI_COM_FAIL error since I power it.

Well, maybe you could post your wiring? Maybe there’s something there that can be solved. Does it make that error whenever the v3.6 is powered, or only when the motor is enabled?

AS5047P is a bit better of an encoder (the AS5048A is terrible), but the SPI interface is likely the same.

I’d recommend using an ODrive S1 if possible, the SPI interface will be more reliable, and you also have the option of using the OA1 instead.