Control Brushless Motor using Arduino

Ever thought to  control Brushless Motor with ESC  without a Transmitter and Receiver or have a Project in which you want to control Brushless Motor speed using a simple Circuit or Arduino ,then there is a way we can do it with Arduino Micro-controller.This involves the use of PWM signal from arduino to control brushless motor speed with a ESC.This will save you the money to buy a servo tester or a RC Transmitter and receiver.So Lets Get started!!

Things you need:

  • Arduino(I will be using a UNO)
  • Potentiometer
  • Lipo Battery(Which is able to supply Sufficient Current)
  • ESC(Make sure that the motor draws less current than mentioned on the ESC)
  • Brushless Motor(In my case a A2212)

Arduino Brushless Motor Code

In this code we are simply mapping or refering the maximum(1023) and minimum(0) Analog values at pin A0 to the required maximum(2000) and minimum(1000) values to operate and control the speed of the ESC.You may require to change the max an min values of the ESC i.e 1000 and 2000 to different values in other words you may need to caliberate it,Because Diffrent ESC’s may have diffrent start point and end point.

#include <Servo.h>//Using servo library to control ESC

Servo esc; //Creating a servo class with name as esc

void setup()


esc.attach(8); //Specify the esc signal pin,Here as D8

esc.writeMicroseconds(1000); //initialize the signal to 1000



void loop()


int val; //Creating a variable val

val= analogRead(A0); //Read input from analog pin a0 and store in val

val= map(val, 0, 1023,1000,2000); //mapping val to minimum and maximum(Change if needed) 

esc.writeMicroseconds(val); //using val as the signal to esc


Wiring up the Circuit

First connect the three terminals of Brushless motor to the the three terminals of the ESC.Screw the Motor to a heavy wooden plank anything similar so that it remains stable at high RPM.Download and Flash the code available at the bottom of the page to the arduino using a usb cable(Code is explained in the further part of this page). Connect the signal wire of ESC mostly white or yellow colour to any PWM pin Arduino,I connected it to the D8 pin and specified it a Pin 8 in the Arduino Sketch.You can use more than one pins for controlling many motors.

Connect the Potentiometer to the vcc or 5v pin of the Arduino and the Ground.

Connect the third terminal that is the variable pin to the Analog pin A0 You can power the Arduino using the BEC(Battery Eliminator Circuit)Present in your ESC.To use the BEC just connect the red thick wire to the Vin Pin of Arduino .It can provide 5V.Not all ESC’s have a BEC,in this case you can use a external 5v power supply.After Powering the Arduino now connect the Lipo battery to your ESC.

Arduino Brushless Motor
Arduino Brushless Motor

You are Done!!Now slowly turn the Potentiometer Knob to start and increase the speed of the Motor.

visit my Instructables-

Watch my Youtube video on this Subject

You May Also Like

10 thoughts on “Control Brushless Motor using Arduino

  1. Great video! Thanks a lot!

    I used the same set up, but the motor won’t spin. Instead, it only beeps. Do you have any idea why that might be?

    Kind regards,

    1. Pedro,

      I had the same issue, a quick check of the net showed I had wired up the potentiometer back to front. Try swapping the 2 outside wires the other way.

      Also the code needs to be watched. On the code it says esc.write(9) whereas it should be esc.write(8) as the piece says to connect pin D8.

    2. Hi, I have encountered the same problem, I am sure it is the same setup and same code, did you manage to solved the problem?

  2. Undeniably believe that which you said. Your favourite reason appeared to be at the
    net the easiest factor to take note of. I say to you, I certainly
    get irked whilst other folks think about worries that
    they plainly do not know about. You managed to hit the nail
    upon the top and defined out the entire thing
    without having side-effects , folks could take a signal.

    Will likely be again to get more. Thanks

  3. Hey There,

    This tutorial worked like a charm. To the extra people alway asking for more information, research it, the answers are out there.

Leave a Reply

Your email address will not be published. Required fields are marked *

Show Buttons
Hide Buttons