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
This is what I have followed as well. Not to get too technical but what will the ability of the pulse carrier freq be with the maximum voltage applied? I use the lowest frequency. At my work there are VFD's that are 10+ years old and due to electromigration issues they fault indicating a short or a ground fault.
Very interesting indeed !
Do you plan to support also ultra pwm (800Hz) or even more quicker udate rate (1200hz) ?
@Randy I was assuming that uart present on most mcu and some even include sereval of them. In addition bit-banging version is also easily implemented and it even exist for arduino, not to mention that Adruino has a hardware uart as well. Umm in my opinion, the open-sourceness of speed controller software should not be overestimated. I don't think there are many people who would want to modify that kind of software as soon as there are no major bugs. At least I would not :) On the other hand, ability to update firmware would be appreciated.
@Sebastian CAN is certainly very cool and its availability would be nice. In my opinion, CAN is not very real-time-ish. Its message classes may have different priority and lower priority messages will wait until high priority messages are delivered. Also, performance highly depends on traffic on the bus. I think a dedicated bus for a speed controller is more robust (pwm, i2c with proper guards)
Yes I would like to try some. If they do the job as a good price then I don't care if they are open or closed source :)
Please let me know when These will be for Sale They look Awesome!
I would like 8.
Are you planning to make them available commercially? I'd be interested, they look great!
Hi Bill,
Great job ! I have been considering exactly the same idea (high side driver, ARM) as I've used these before in totally unrelated industrial projects, but never got to actually designing it due to lack of time and because it would become work instead of a hobby ;)
If the battery voltage is less than 200 V you're better off with FETs. The voltage drop across an IBGT is typically 1 V or more. E.g. The IR4BC30 has a VCE(on) of 2.2 V at 20 A. At 3s (12 V) you are losing 4.4 V of your battery voltage in the switches just based on DC losses, never mind the switching losses. At 20 A the ESC would be dissipating 88 W. This IBGT is rated at 300 V, which is about as low as they go.
The IRLR7843 FETs would be dissipating 3.2 W based on their RDS(on) of 4.5 mOhm.
I hope they are using IGBT (Insulated Gate Bipolar Transistor) in design for the output.