Control Brushless DC Motor Using Arduino
Controlling the speed of a Brushless DC Motor(BLDC) without a transmitter is alternatively done using the Arduino microcontroller. This involves the use of PWM signal from Arduino to control the speed of brushless motor with an Electronic Speed Controller(ESC). This will save you the money to buy a servo tester or a RC Transmitter and receiver. Let’s be on the go
Materials you will need;
- A2212/13T BLDC Motor
- ESC (20A)
- Power Source (12V 20A)
Why do we need a ESC?
Typically, each BLDC motor needs some kind of controller to switch the battery’s DC voltage into pulses to power the motor’s phase wires. This controller is referred to as an ESC for the Electronic Speed Controller. The controller’s primary task is to energize the BLDC motor stage wires in order for the motor to turn.
How BLDC works
While BLDC engines are considered DC engines, they work with Pulsed Waves. The Electronic Speed Controller (ESC) transforms the DC voltage from the battery to pulses and applies it to the engine’s 3 wires. Just two stages of the engine will be driven at any given time, so that the current passes through one cycle and exits through another. The coil inside the motor is energized during this process and therefore the magnets on the rotor align themselves with the energized coil. Then the ESC energizes the next two electrodes, this process continues to turn the engine. The speed of the engine depends on how quickly the coil is energized and the position of the motor depends on the order in which the coils are energized.
PWM-based frequency control: By reading the PWM signal given on the Orange cable, the ESC can control the frequency of the BLDC motor. This operates very similar to servo motors, the PWM signal generated should have a 20ms duration, and the service cycle can differ to adjust the BLDC motor speed.
Firmware: Each ESC has a manufacturing firmware program written into it. This firmware strongly influences how your ESC responds. This firmware can also be programmed for users.
Battery Eliminator Circuit (BEC): The Battery Eliminator Circuit (BEC) works with almost all ESCs. As the title indicates, this circuit removes the need for a different microcontroller battery, in this case we don’t need an independent power source to power our Arduino; the ESC itself will provide a controlled + 5V energy which our Arduino can use.
Once the system is turned on, your ESC will make a welcoming sound and keep beeping until the throttle signal is within the threshold limits, simply increase the POT steadily from 0V and avoid the beeping noise, which means that we are now supplying PWM signal above the lower threshold value and as you increase higher, your motor will start turning slowly. The more power you have, the more energy the engine will pick up, the more voltage the engine will quit. After setting up a good system, we transfer a code to our Arduino and then power it all up with the charger, we can use the potentiometer to control the speed of the zero brushless motor to the limit.