I'm trying to use Arduino to control brushless motors with Makerfire BLHeli_S ESC through Servo library. However, I've encountered the following issue.

First, when the Mega board was updating ESC writing in microsecond loop, and the drone sometimes went thorough explainable "bump"/shock, as if there's something wrong with the single.

 ESC1.writeMicroseconds(O_1 + 1000);

Second, it turns out that the ESC need to be calibrated before use. However, since I'm using an arduino, it's kind of tricks as there's no direct software works for it.


  1. Will fast updates of ESC speed on Arduino affect the output single which ESC receives in a problematic way? i.e. blanks between singles. or does is just switch to the new PWM instantly?

  2. How to calibrate the BLHei_S ESC on Arduino?

Update about calibration:

I accidentally bumped into a way to calibrate the ESC. It might be helpful to some people. After reading several different ways to update the ESC, and some accidents, here's a way I found to update ESC manually with an Arduino only! Here's how it's done.

  1. When everything has been powered up and ESC seemed to be ready, unplug the single wire (the single wire that's not ground) connect to the ESC.

  2. Adjust the power output on Arduino to maximum. i.e. something that will result a ESC1.writeMicroseconds(2000);

  3. Connect the single wire of the ESC back to Arduino when everything was still on.

  4. Wait until it start to make crazy noise.

  5. Adjust the power out put on Arduino to minimum.

Then within couple of second, the ESC would be calibrated! No software, or additional electronic pieces required.

However, I still didn't quite understand what happened. Could you explain a little bit how that procedure actually worked?

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.