I’m searching for a tiny form factor driver board that is compatible with SimpleFOC for a very small robot arm project. Ideally, the board size is 20x20 or smaller so that it can fit within the footprint of 220X Gimbal motors or smaller. Very low current draw requirements. I think I need current sensing for it to work well in the robot arm application, where the loads are constantly changing. It could be multiple stacked boards if needed.
I haven’t really found any boards that meet these requirements. I have seen the Mosquito board, that has a 20x20mm footprint, but it seems that some of the source files have been taken down? Also, the board did not include current sensing. I would be willing to spend the time (or resources) to develop a miniature board, but I don’t really know where to start. I think my requirements aren’t really out of the ordinary for SimpleFOC applications, so I’m surprised that nothing exists yet.
List of desired features of the tiny driver board:
20x20mm footprint or smaller. Can be 20mm diameter for a bit extra board space. At least 2 mounting holes required.
1-2A current
12-24V operating voltage
On-board SPI encoder (AS5047 or similar)
Current sensing
Integrated MCU
CAN communication and step/dir input
Can anyone point me in the right direction as far as current best practices for component selection and board design? I’m not sure which MCU and driver chip to use to ensure best compatibility and design simplicity.
Mosquito probably is the closest to what you want, but you are correct that it doesn’t have current sense. Valentine took all his designs down some years ago, but there’s an alternate version here to see the components MosquiNo - Yukon concept
The STM32G031 is a little slow for SimpleFOC, though it would probably be fine for the low RPM of a robot arm. G431 is luxury, but the smallest package is 5x5mm instead of 4x4, and a little more expensive.
For the driver, MAX22213 is excellent for small size with current sense, but LCSC doesn’t carry it so you’ll probably have to do the assembly yourself. I use it on my stepstick. And if you’re assembling it yourself, then there’s a better chance you’ll be able to fit a CAN transceiver since you can do full double-sided rather than just the encoder on the back.
Step/dir can be problematic with long wire runs due to the possibility of electrical noise causing false steps, which never get corrected since it’s a purely relative protocol. I2C could work for sending absolute positions without taking up any board space, though it is of course more vulnerable to noise than CAN. But probably fine for a mini-arm.
Thanks for the response. I’ve only done some basic PCB design in the past for much simpler projects. Any chance you could recommend a CAN chip?
Narrowing down the components list:
MCU: STM32G431 (probably the 5x5mm package)
Driver: DRV8313 (for simplicity) or MAX22213 (for current sensing)
Encoder: MT6701
CAN board: ?
Passives/other components: ?
Also wondering about the programming side, will there be a need to customize the firmware for this component stack? Specifically with regard to the CAN integration?
For other components, the Mosquito buck converter is called LMR14006YDDCR (LCSC part number C477919), and it needs a bunch of passives (open that MosquiNo board I linked before in EasyEDA and copy/paste). It’s good for space-limited designs because it switches at higher frequency than most bucks, so it can use a tiny inductor.
If you plan to actually use the robot arm for anything, I’d recommend at least 14-bit encoders. With 12-bit you can always feel a jitter in the motor when holding position, which will wear out bearings over time, in addition to hurting its accuracy. AS5047P is good, and $3.20/pc for 10+. But for 40 cents more, MT6835 is fabulous with 21-bit precision. The difference in jitter is nearly imperceptible to my hands, but visible on the DRO of my milling machine (the axis with MT6835 has a stable micrometer position, whereas AS5047P has a few micrometers of noise).