Redesigning multirotor ESC's


It's been quiet on my front, but that was because I was redesigning ESC's (for multirotors and AP's).

Most of the ESC's for multirotor use the SimonK firmware on a relatively simple Atmel microcontroller. There's a single control wire running from the autopilot to the ESC, which is a signal proportionally dictates how long the mosfets are left open and as such command the torque on the motors.

And that's pretty much all there is to an ESC... No signal/wire coming back to tell the autopilot how that particular motor is doing or what the rpm or current is, it's just a "command wire". That sounds a bit antiquated for 2014.

So this picture is of an ESC dev board I first started on, here using the Allegro A4960 chip for simplicity. Shipping to Brazil takes time, so before it arrived the design already morphed into something new, so that's why the board looks unused. Both the MCU and driver chip changed on the newest development board version and I introduced testing points for oscilloscope readings; this project is about to get serious!

What are the features that I think an ESC for a modern multirotor should have?

1. Send the rpm back to the AP; for logging. I see people posting logs to request help figuring out what went wrong, but the log only states the "pwm out" for each motor, which is in no way a guarantee that the motor actually did that. So we need some feedback that states what the motor was actually doing, not what it was commanded to do.
2. Overload detection; the ESC's know what the current is and warn for overload situations.
3. Current & velocity control; neither current nor rpm is actively controlled as a proportional measure to the input PWM signal. So the control loop for the AP spans the IMU, motors, ESC and props, which is a large loop with lots of variables. This ESC will run one or two 'inner loops' and become responsible for achieving either torque or lift and run at a much higher frequency than 500Hz. What you get is that some variables no longer impact the control loop of the AP directly, which should make the vehicle more stable and likely more responsive.
4. Field Oriented Control; The flyback diodes next to mosfets typically burn energy in trapezoidal drive implementations, which  increases the heat on those mosfets. This happens because the mosfets close suddenly. The motor coil wants to resist that change, so you have a current that has nowhere to go except through that diode. In sinusoidal control, there's always one mosfet open for any coil, so the current always has somewhere to go, which means the flyback diodes won't get used, so you don't lose the heat.
5. FOC; better efficiency, because the current is always perpendicular to the magnetic field. This may come at the cost of max. torque (related to motor inductance and then only about 5%).
6. FOC; lower torque ripple (1/2-1/3) vs. trapezoidal drive, so hopefully less vibrations, less whistling.
7. Send current readings back to the AP; another opportunity for precisely logging what goes on near the motors. This could be helpful to detect ESC/motor/prop health (bad bearings, prop drag, etc)
8. Configuration; the AP can reconfigure ESC's prior to flight or when in maintenance to tune it for a specific motor.
9. Motor monitoring; if the motor stopped, shorted or the mosfets misbehaved, the ESC can shut down immediately and advise the AP. The AP can then take additional action.
10. Opportunities for automated ESC tuning specific to the motor/prop in use.

The way I see this ESC make a difference is when abnormal situations occur. The current AP's cannot be informed of failure, so it would simply send a signal to "run faster", which, guaranteed, has a disastrous effect to mosfet or motor and could therefore worsen the situation. Soon as the AP is informed something is wrong, it could sound an alarm, activate a chute, disable the counter motor... you suddenly have options!

To spur innovation in this area, I'm considering to setup a kickstarter and actually manufacture around 1.000 or so at a professional PCB house. Aren't these features indispensable for an ESC made in 2014? Would you back it?

E-mail me when people leave their comments –

You need to be a member of diydrones to add comments!

Join diydrones


  • Really impressive work! This could increase efficiency and safety massively, which is everything I've been looking for for a very long time from speed controllers. If you ever make a kickstarter, make a post and let me know! I have a lot of people and groups that would love to have these. I run a research lab at my school in an area with a lot of very restricted and controlled airspace, and reliability and problem detection have been big concerns with the people we have to get approval from, and having failure data would put a lot of people at ease.

    For interfacing, I can think of a few things. The most immediate would be I2C with a central board that combines all streams into one stream, similar to PPM, or a CAN bus with something similar. Do you have something figured out? Keep going, this is great work?

  • This sounds like a great project, I might suggest going to an alternate crowdfunding platform like Indiegogo.  Most folks don't care which you use, Dragon innovations is another one that might be appropriate.  

    I can't ethically use kickstarter which is a real bummer, because of their business arrangement with Amazon.  

  • Planes need ESC RPM & Power feedback too.  Plane autopilots need to know motor RPM and Power when flying the plane (takeoff-landing-cruise) and also when analyzing the air frame performance (Lift to drag ratio). The airplane cannot be properly controlled without this feedback.

    Recommend using the Pixhawk CAN bus interface.  CAN bus is better suited than I2C for ESC feedback because it's more electrical noise.  Especially for new advanced ESC designs the correct bus (CAN) should be chosen.

    My twin motor plane has two 80 amp ESC's.  I'd buy your product.  Likely, I'd also help fund your "Kick starter" project.

  • AR Drone is doing something like this... it has feedback from the ESCs, and if the drone hits something, all 4 motors stop and the drone just drops. This is nice in some situations, but not others...

  • Interesting, I have been working on something similar for last month or so:

    - Freescale's DSP for controll

    - opto input for PWM

    - CAN

    - TTL RS232

    - support for analog hall sensor input

    - FOC control

    - 300A MOSFETs

    - Driver with integrated protection for MOSFETs

    - Voltage up to 50V, 60V max. so could use 12S

    - Automotive grade components

    size is 100mm x 50mm on a double layered board, with four layers could probably get a few mm less.

    By staggering, you can introduce a situation where the bell of the motor is alway under torque (no deadspots between magnets)

    With traditional trapezoidal control you divide electrical turn into six steps and consequently you get pulsating torque. With FOC, you are always sensing position of the rotor and setting current in such a way that there is always required torque on the rotor, so the motor runs smoother - no deadspots.

    I think you have raised a very interesting idea, namely the antiquated communication/control mechanisms between different rc components. At the heart of everything just about including ESC is PWM/PPM, which are almost analog things and certainly not digital. Improve the communication layer and devices can get smarter and more interactive.

    Car manufacturers are using CAN for communication between different subsystems. I see no reason to reinvent the wheel, use protocol like CANOpen and slap it on every piece of electronics. Additional cost is negligible, benefits (three wires that connect every piece of electronics to AP) certanly worth it.

    FOC is also not needed for the freewheeling because also with trapezoidal it is possible to switch the FETS in complementary mode than the diodes are not used and you get active braking for free.

    With FOC you can drive motor in generator mode so you dont have to waste braking energy as heat and you can brake with same torque as you accelerate the motor.

  • Would I fund it? Yes, because it sounds cool. Would I buy it? Cost is king. How much?

  • Gerard -

    Really cool! I think crowdfunding is a great idea. Definitely post this some other places as well. You could also look at partnering with a manufacturer (like 3DR) for optimal integration, since those features aren't useful unless the FC can utilize them.

  • T3

    Very cool idea, but as with all things, price is king.  Any ideas on how much they will cost?

  • The picture at the top is of the previous version, already obsolete when I received it. The new version will use two current shunts on two phases plus phase voltage measurement on all three. The goal is to make the size equivalent to regular ESC's, but it will probably become a bit longer, there are some extra components.

  • I think size also matters for the typcal quadrocopters (not for the big hexa's). I looked a bit closer to your picture and only see one sense resistor is that correct ? How to you measure the phase current, or do you calculated the phase current from the bus current ?

    I don't use any heatsink, with heatsink much more amps will be possible, the fets are 1.3mohm.

This reply was deleted.