Comparison of SimonK and BLHeli 14.6 on an Afro30 ESC

Plans are being made to build another copter using a Seriously Pro F3 Flight Controller, and drive options are being considered.

Since this is a high performance flight controller with faster loop times, and Oneshot125 is used on the ESCs for faster response, an ESC that exhibits fast response is warranted to fully explore the benefits of faster loop times.

Most stock ESCs are quite slow, though with replacement firmware they can perform much better.

Though I have dismissed BLHeli for several reasons in the past, I have a set of Hobbywing Skywalker 40A Silabs based ESCs which will run BLHeli and not SimonK, so review of the current version (14.6) of BLHeli is warranted.

Dowloading 55MB of bloatware and updating the firmware using a Silabs Sticktool / C2 interface (which itself is quite fast and convenient as I have added permanent cables for the C2 interface), reminded me of most of the bad things of BLHeliSuite. Despite falling foul of the traps too many times, I achieved the desired result


This article documents some comparison tests of:

  • SimonK commit 1f75da384e5c83f83916aa752819ca6eed712565 afro_nfet.hex; and
  • BLHeli v14.6 for Hobbywing Skywalker 40A.

In the SimonK case, default configuration was used, and 3s battery used for tests.

Screenshot - 09_07_16 , 12_50_26

Above, the BLHeli configuration.

The motor used for the test was a Hobbyking 4822-690Kv. This motor has been mentioned in reports of sync problems with SimonK, though in my experience they have been fairly good on recent releases on other ESCs than this one.

The tests comprise a set of throttle variations driven from a script on Arduino RC servo ramp generator and Eagle Tree logger (using a rpm detector connected to the motor wires).

The part of the script shown in the graphics in this article is:

//rapid mid range test
ramp(300/(RATE*0.05),RATE*0.05); //quick up to 1400
  ramp(200/(RATE*0.05),RATE*0.05); //quick up to 1600
  ramp(-200/(RATE*0.05),RATE*0.05); //quick down to 1400
ramp(-300/(RATE*0.1),RATE*0.1); //quick down to 1100

//other tests
ramp(900/(RATE*2),RATE*2); //slow up ramp to max
ramp(-150/(RATE*0.5),RATE*0.5); //quick down to 1850
  ramp(-650/(RATE*0.5),RATE*0.5); //quick down to 1200
  ramp(650/(RATE*0.5),RATE*0.5); //quick up to 1850
  ramp(-250/(RATE*0.2),RATE*0.2); //quick down to 1200
  ramp(250/(RATE*0.2),RATE*0.2); //quick up to 1850
  ramp(-850/(RATE*0.5),RATE*0.5); //quick down to 1000
  ramp(400/(RATE*0.2),RATE*0.2); //quick up to 400
  ramp(450/(RATE*0.2),RATE*0.2); //quick up to 1850



Above is the current and rpm plot from the entire test window.

Note the very large current spike at the start where the motor responds to the jump test.


Above zooms in on a small part of the test to explore response time to rapid and large transients. Everything is pretty much consistent with earlier tests and seems to be operating properly.



Above is the current and rpm plot from the entire test window.

Note that the jump test at 4s shows no visible current spike, but them some weak motor drive that is sensed by the rpm detector as rotation when in fact the motor did not rotate at all.


Above zooms in on a small part of the test to explore response time to rapid and large transients. Everything is pretty much consistent with earlier tests. Note though the anomalous bumps in the rpm curve to the right. There is negligible motor current, yet some drive has disrupted detection of the rpm and caused these bumps. This is probably caused by the BLHeli ESC, it is never evident on repeated tests with the SimonK ESC, and always present on repeated tests with the BLHeli ESC.


The SimonK ESC gave a significant response to the initial jump test and handled it well, the BLHeli ESC almost ignored it (it has a rated limiting filter on the input) and them produced some drive leading to anomalous rpm indication.

On the second part of the test, both ESCs performed similarly, except that again during the later part of deceleration, BLHeli appears to have produced some anomalous drive.


SimonK shows mostly faster response (though there are parts of the test where BLHeli shows faster response) and less anomalous behaviour, and will be used  in the first instance on the new SP F3 based copter.