There was a recent discussion on Discord about getting a fully integrated board as cheap and small as possible. Got some time over my lunch break and cooked up Hot Dog!
20mm x 20mm, fully integrated, 26v / 10A. Cost to fab is $10/board. Mosfets driven directly by the MCU. Absolutely no protection. Are you scared yet?
Only UART to control and SWD to program it, nothing else.
If anyone is interested in burning their fingers let me know I’ll post it.
My question was mainly theoretical: I’ve read quite some posts here talking about lowering PCB size and BOM, but always to drive more and more powerful motors. So I’ve always wondered: what about low-power motors?
My project is a 2-motor mini gimbal to orient a low-power laser module (weight=20g).
You have a very different problem. Best if you use a fully integrated 3-phase low power driver, not discrete components. Also you need to fab on a thin PCB to lower the weight. Let me check what options are available.
My laser modules come with either 3V or 5V drivers.
My tests show that 5V seems to be enough for the motors.
The battery is external and is not really limited in size, so it can be up to 3S, maybe even 4S.
This is the smallest controller I have ever seen.
But is useless for foc.
In my opinion, ideally having a small controller schematics integrated mcu, driver with inline current sensing, temp protection, can or pwm control.
For which everyone can layout their own pcb
For example my aplication, need a driver with FOC as small as possible up to 1 ampere of consumption 24V with an 2 external encoder, and UAVCAN peripherial.
I will do it anyway, but for now my test board looks like this XD
I made it to test the engine torque and understand simplefoc.
servos cannot be used. they don’t have torque control and pid settings
maybe you’ll have some more time on your next lunch break
but in fact, the schematics of such a driver will be useful to the whole community, because there are no similar drivers for sale
@quentin , the answer is yes - you can make some pretty small drivers for low power… the uESC is pretty cool, but as a BLHeli board you’d have to write some new firmware for it, its doubtful you can run SimpleFOC…
And @Valentine proved it with a design that should be able to run SimpleFOC. His NanoDog looks amazing too.
There’s also this one which I like a lot… GitHub - fishpepper/tinyPEPPER: a tiny 16x16mm hole-to-hole 4in1 brushless ESC running BLHeli_s
It’s a nice project, complete with BOM, design files, and instructions for making your own.
It’s a little bigger, at 2x2cm, but its a 4-in-1 ESC, so I think it wins in terms of board area per motor… Unfortunately it runs on 8051 MCUs, so probably no SimpleFOC on this either.
One of things to watch for is that most integrated drivers want at least 4.5 or 6V, while many micro-motors want a lower voltage than this. The STSPIN233 is a very tiny integrated driver (3x3mm) which can work from 1.8V and up to 1.3A.
Here’s a breakout board (14x14mm) I made for the STSPIN next to a BluePill for size comparison:
Since a low power board won’t need big capacitors, there’s a chance to get it quite small, even with a MCU. But small also means inconvenient to use, because without nice headers or plugs you’ll be doing a lot of soldering onto tiny pads.
Keep in mind that to do closed loop, you have to interface a sensor to the MCU, ideally SPI or ABI, meaning 5 or 6 pins. And you need some way to control it, flash it, and get monitoring data out… so in the end you wind up with a lot of wires coming out of the little board…
May I ask what your use case is for such a tiny driver?
Edit: I see you already answered that!
I’ve been looking into the gan fets which are more power efficient than silicon mosfets. There some new fets from epc that could be used to build a small powerful high efficiency motor driver. Probably the highest efficiency possible with commercially available components.
Each of the 3 gate pairs is around 6mmx6mm and the driver is integrated. BOM cost would be about 60 euro though it should drop over time as same mosfets will be used in power bricks for charging so volume is going to be high. Chip shortage could affect finding current sensing ic.
I’m thinking about a 48v, 10amp driver board that could be used for foc control of a solar drone.
With these mosfets you could build a small high efficiency driver. One research paper using previous generation gan fet shows 3% more power efficiency overall vs silicon mosfet for bldc.
To improve efficiency vertical and horizontal flight, need fast control pitch blades of propeller group. If i can control pitch blades somtimes like it do simplefoc, eVtol can flight up to 4.5 hours in plane mode and 1 hour+ in heli mode.
But now with fixed propeller pitch i have compromise energetic efficiency between two modes and have less than 1 hours flight time :/.
In use cases of tilt mechanics, here u can see how it works
classical rc servo alive in flight less than 1-5 hours after that its broken in flight and i cannot control this process his so random.
For example, resonances arise on a perfectly balanced propeller, complitelly kill mechanics less than one second
Else i cannot read current angular position tilt mechanics with rc servo.
If it possible to use UAVCAN to communicate between Simple FOC and Ardupilot it will solve a lot of problems.
I have low experience in programing, i move really slow But i need to figure it out for move forvard.
They certainly look nice, although a PCB layout example in the data sheet would be nice, as I don’t really understand their layout concept with the low side FET.
I think you could certainly produce a powerful, versatile board based on those, but as you say you’d still have to add current sensing…
It will be a lot bigger than the hot dog though
Nice application! I get it. And while I can’t say whether it would work out in the end, I think it is definitely possible to significantly outperform standard RC-servos with SimpleFOC based brushless servos, so its worth an attempt!
I’m not sure what mechanical system you’d want, I have the feeling you would want some gear-down, maybe even something that can’t be back-driven like a worm gear to help the BLDC against the drag forces when holding positions. Otherwise it might consume a lot of power holding the propeller group in place against the wind. But I don’t actually know anything, I’m just theorizing.
RC-Servos aren’t generally very tough, especially if they’re also light-weight…
Theoretically for sure, but currently I’m not aware of any code out there for this. There are some more basic CAN communication classes, but not UAVCAN. UAVCAN is a bit of a complicated system, but perhaps worth looking into for the Ardupilot use cases!
As it happens I just managed to get my first board with support for CAN ordered for production, so when it comes back in a few weeks, and assuming it works at all, I would be happy to look into what UAVCAN support would mean… if its a realistic amount of work, I say we do it
Programming is where I do have experience, but I still move really slow - work and family obligations if you’re happy to work on it slowly, I’m happy to help slowly
I do not understand the fixation on ultra small boards, when ultimately the wires coming out weigh more that the little saved on space and weight, and dramatic restriction on functionality, just to save 2mm and 2 grams, then use off the shelf motor with metal screws that the screws themselves weigh more than the driver itself.
Designing an ultra small board is more like playing sudoku. Make one, huh, kinda works, wow, whatever, then move on to real work.
I think there is a need for smallish boards - to make smallish robots/devices. But there comes a cut-off point where the size impacts the usability to such a degree that you need a very special use case.
But to be fair, there are the people out there optimizing for flight time, who aren’t using off-the-shelf parts and would never dream of using the standard heavy screws or wires…
Or seen another way: the “generalist component” is perfect for beginners, and learning, and any situation where the parameters required fall nicely “in the middle”. But for the pros out there (not me!) and others further along in optimizing their setups, a “specialist component” can be exactly what they need…
Can you instead control the servo via an analog pin, say, center around 1.65v and split 3.3v for 90 or 180 degrees left or right? Can is very bulky (requires transciever) or pwm control requires very large timeouts especially if you use the RC PWM. With 1024 resolution splitting 3.3v will give you approximately 500 steps in one direction, so approximately 1/5 degree control for 90 degrees and 1/2.5 degree control for 180 degrees in one direction. STM32 has up to 4096 resolution however that’s I unrealistic. 1024 is probably a more realistic control signal density.