Recently the Chinese ESC design utilizing the ATMEGA which we have been flashing with Bernard Konze's firmware has been disappearing from the market. This was the push I needed to finally decide to design and build a replacement. Collaborating with a friend, we worked on it over the summer. It is finished and I think it came out pretty well. I call it ESC32:
Design goals:
- Extremely fast implementation of requested throttle setting
- Ability to take high rate input
- Multiple input protocols
- Ease of programming, real-time debugging
- Efficient
- Inexpensive
The final specifications read:
- STM32F103 72Mhz MCU - 32bit ARM
- Firmware written in straight C
- SWD connector for real-time debugging
- Input via PWM IN / UART / I2C
- 1KHz PWM update rate capable
- All N-FET design with gate drivers
- At least 40A continuous with proper cooling, maybe much more
- 2S => 5S battery
- Option to power logic side via UART or PWM IN +5v
- Command Line Interface for testing / parameter modification / back channel
- 8KHz => 64KHz PWM out
- Current sensing / limiting
- Regenerative braking capable
- Closed loop control mode - experimental
- Lots of RAM and CPU cycles available for advanced control techniques
- BOM cost < $20 at quantity
* image courtesy of TC Pictures, LLC.
It is a drop-in replacement for the ESC's that I have been running with AutoQuad and will take standard PWM input up to 450Hz. I will eventually design new high rate PWM timing which will bring this rate up to 1KHz. It is a definite improvement over the ATMEGA design. Your flight controller can ask for large, quick changes in throttle and it is able to implement them very fast. This allows PID output to be tuned to be more aggressive and results in much smoother control.
Start ups are very smooth and I have not yet found a motor it could not start. It uses oversampling techniques which allow it to accurately control a BLDC motor down to 200RPM. Early indications based on some initial head to head testing with other ESC's show the it is very power efficient. This comes from the fast switching of the N-FETs due to the use of gate drivers. Less time is spent in the on-off / off-on transitions, so less power is used, less heat generated. No special heat sinks or cooling should be necessary for typical 10 to 20 amp usage. This also means that you can use higher PWM output rates without too much of a hit to efficiency.
* image courtesy of TC Pictures, LLC.
As the ESC is an extremely important component of multi-rotor UAV's, it is critical that it keeps running, no matter what. So you can imagine the amount of testing necessary before you can start to trust a new design with your expensive machine. There are a handful of people flying the ESC32 now and I myself have perhaps 10 hours without incident so far. There may still be problems, but I am fairly confident that it is trustworthy. It's all I fly now.
Comments
Update
Hi,
I have been reading some comments about the AutoQuad and it looks like a excellent project. I am planning on buying a multicopter and it seems to me the right one, my question is: is there already material available to buy and star put together anf fly?
Thanks and regards,
Manuel
ok, that's HIGH ! :)
The Open BLDC project has maybe so much power, but it seems that it was stopped a year ago
http://open-bldc.org/wiki/V0.3
@thomasb above BL 2.0 /above hercules II ( and fraction of cost of hercules)
Sorry, I've no detailed informations about Bill's ESC production state (or at least if it's planed)
I've only the info about his other project, the autoquad hardware which goes very slow, but they have enough gyros for a lot of boards now (IDG500 are at EOL since first march).
The OpenPilot project has a nice ESC project, but it's closed hardwre till they are ready with it. Sourcecode seems to be in the GIT.
On my website konstantin has a ESC project with I2C and CAN Bus support. But it is in pre beta state (http://www.xkopter.de/en-us/entwicklung/canblc/canblcprojectblog.aspx)
May I ask, what is 'higher current' for you ?
@thomas thanks for explaining it better :). BTW do u know what happened with Bill's plans.... I am keen on opensource esc which support I2C with higher currents. My design excercise is still in its intial phases ( lack of time). Would be great if someone started it ...
With PWM 800 Hz is possible too (with non RC standard length).
One main advantage for I2C is that you can get Informations back (anish named it 'feedback').
So it possible to read values for current consumtion and motor speed.
I2C has the risk of 'hanging' (lock situation), but I read that Bill will use fast PWM for control to ESC communication and I2C for ESC>Control (status values)
All this has to be supported by the flight control. APM has no support for this yet, but Bill's ESC are not available as yet, so it's all theoretical :)
the reasoning is around faster response and feedback. I2C would allow above 400hz response and feedback.
Hmm that is quiet fast 25ms, mine does 120ms (with prop) so I need to improve more. I only use one motor prop combo so for me it is useful to tune it. My controlloop runs at 2,5kHz.
I've not had the time to complete closed loop control, but when playing with it I was able to get around 20ms to 25ms for rise time to target and perhaps another 5ms to settle. That's with a prop, unloaded it would be much faster. The problem I see is that the control loop will have to be tuned for every motor / prop combination so I don't know how useful closed loop mode will ultimately be.