I have been using an ODrive 48V V3.5 to control a big PMS motor using the incremental output from an AS5047P.
This has been working well and I have been playing with the anticogging feature in the devel branch.
After quite a bit of tuning of the gains I managed to get the anticogging working. It makes a huge difference.
Anyway, as well as the ABI and SPI interface the AS5047P has a PWM interface where the absolute position is encoded the as a pulse width signal. This is shown in the AS5047P datasheet:
This interface can be enabled as well as the ABI interface using SPI. The configuration can be made permanent using the OTP configuration write. While setting this I figure I may as well move from ‘decimal’ mode to ‘binary’ mode for the tiny bit more resolution (4000CPR -> 4096CPR),
While you cant get access to the full 14bit resolution you would normally get when using SPI, you can still get 12 bits assuming that you can measure the pulse width sufficiently accurately.
The idea would be that you connect this signal to the Z encoder channel and read the absolute position at startup to get the initial motor position. After that you just use the quadrature signal as normal.
This means that you can still use a 5 wire interface to the encoder.
I have not started on the code for this yet, I will start that next week. I am still not extremely familiar with the firmware so I will have some questions about the best implementation. I think that github may be a better place for that discussion.
So, any thoughts?
Tobin.