I’ve finished my version 5 motor driver board, and it’s working well with my Robomaster M3508 P19 motor (and Robomaster M2006 P36 motor). I would like to try out some other motors, but unfortunately I’ve searched the internet quite a lot and couldn’t find anything else I’m happy with (under $200).
The reason for this is probably because the motor sensor port on my motor driver only currently supports 2 kinds of sensors, sin/cos encoder (AKA analog hall sensors), and incremental encoder. There could also be other types of encoders which are compatible with my board, but I am unaware of. Most motors out there are either sensorless or only have hall sensors, and motors with incremental encoders or sin/cos encoders are really expensive (around $500 range), and sometimes use differential signaling which makes them incompatible.
I’m looking for a motor under $200 with some kind of high resolution, low latency position sensor. So no hall sensors because they are low resolution and no magnetic sensors with SPI or I2C because they have high latency and reading them wastes too many CPU cycles. I’d like a motor without a gearbox, as I want to work on making my motor driver quieter. I don’t really have any requirements for speed and torque.
What motors have other people have been using and would recommend?
Would adding an encoder or analog hall sensors to a motor yourself be practical? Any recommendations on which types motors would work best if I were to do this?
1 Like
Very nice board design.
I use cubemars gl60 55kv, sensor myself with as5047p. Disagree on low resolution and latency. What is your use case needing more than 200ns sampling rate, 1us SPI latency and 14bits resolution?
Cheers,
Valentine
Propagation delay via SPI is 90-110us per the datasheet. It is very long if your motor is spinning at 125000ERPM or 2KHz electrical frequency (which the Robomaster M2006 P36 is capable of reaching).
The magnetic encoder is a really good option but only if you use the ABI interface which is much less laggy.
Comment about low resolution only applies to hall sensors, as they only give you 6 steps per electrical revolution.
Actually this is without error correction if I understand. Perhaps your read differs than mine.
Error corrected is between 1 and 2 us.
In any event I do not have other suggestion for encoder, unless you go for optical encoders which are really expensive and don’t fall into hobby grade solutions. What you want can easily get anywhere between $$$ to $$$$.
Cheers,
Valentine
I thought the error correction only applies to ABI and UVW interfaces?
How do you mount the magnetic encoder and magnet to the motor reliably?
Yes you are correct, however, my understanding is that the SPI gives you error corrected result to compensate the core delay depending on the rpm. I could be wrong but please read carefully the error correction portion of the datasheet. I read id long time ago and could be mistaken.
I design my own holders with 3d parts and use engineering grade epoxy.
The encoder is my custom PCB.
Motor sensoring is sometimes more expensive than the motor.
Cheers,
Valentine
So the dynamic error correction offers near 0 latency, I remembered correctly.
Cheers,
Valentine
1 Like
It very strongly depends on your setup, but for many setups adding an encoder is practical.
Magnetic encoders are generally the smallest solutions, and as you have pointed out they come with ABZ interfaces as well as digital ones.
There’s also capacitive encoders like those from CUI devices which can go around the shaft, or inductive ones like Incoders.
Those are also available with sin/cos outputs, as are some magnetic ones too.
So lots of options which don’t need SPI, really.
It’s worth noting that the real problem is the time between the current sense measurement and the encoder read. You want those to happen at as near as is practical the same time.
Many SPI encoders latch the position into the read register when the nCS line is pulled low. So if you initiate the encoder read immediately after the adc read then you’ve done very well to minimize the lag between the two measurements.
On the actual topic, I don’t have any suggestions but am curious what others suggest. I’ve been adding encoders to various motors myself, usually via 3d printed parts and superglue/epoxy.