The following image shows project circuit schematic diagram.Īll grounded terminals are connected together.Īs mentioned above, the brushless dc motor is a 3-phase motor.
In this project I’m using the motor shown below, it full name is A2212/13T 1000KV:īrushless dc motor control with Arduino circuit:
Arduino UNO board -> ATmega328P datasheet.So, I used an external chip which is LM339 quad comparator IC. In the above two projects, I used the Atmega328P (Arduino UNO microcontroller) internal analog comparator to detect the zero crossing events of the 3 phases, but it’s not a good idea (may give bad results) to use this comparator and the ADC module because they share the same multiplexer. Sensorless BLDC motor control with Arduino – DIY ESCīrushless DC motor controller using Arduino and IR2101 The following topic shows more details about the BEMF technique: In this project I’m going to make the same controller but a potentiometer is used instead of the two push buttons.
One of these projects shows how to build a simple ESC using Arduino where the speed of the BLDC motor is controlled with two push buttons. In this blog there are many topics show how to control sensored and sensorless brushless DC motors using Arduino and some other PIC microcontrollers. The sensorless BLDC motor control technique is based on the BEMF (Back Electromotive Force) produced in the stator windings. The brushless dc (BLDC) motor is a 3-phase motor comes in two main types: sensored and sensorless. This topic shows how to drive a BLDC motor using Arduino where the speed is controlled with a potentiometer. This controller is called an ESC (Electronic Speed Controller). When both Pin#1 and Pin#0 are low or high motor halts.The brushless dc motor is a three-phase dc motor which requires a controller to power its 3 phases.When Pin#1 is high and Pin#0 is low, motor rotates in anti-clock wise direction.When Pin#0 is high and Pin#1 is low, motor rotates in clock wise direction.Motor rotation according to pin value on port 1. P1=0x00 stops the motor rotation it is important to stop the motor for few milli seconds to dismiss the back emf generated by the motor when it is spinning. Whole of the logic is in continuous while loop to continuously run the motor. P1=0x02 sends 00000010 making Pin#1 high and others low. P1=0x01 sends 00000001 making Pin#0 of Port-1 high and all others low. The statement is making all the Port-1 eight pins low or it is initializing the Port-1 as output. P1=0x00 is sending eight bit value to the Port-1 in hexadecimal its binary equivalent is 00000000. In the main function I use the Port-1, Pin# 0 and 1 for my logic. The delay function is used to give some time to motor to run in a particular direction for some time.
I am using keil ide to write and compile my code for the 8051 microcontroller. The code is also very simple it is same like making an led blink. Only a single chip can perform an H-bridge functionality. Its small in size, no extra components are required with it. L293d contains an H-bridge circuit in it. L293D motor driver IC is a replacement of H-bridge circuit and i am going to use it in the project. Making an H-bridge circuit makes a lots of mess on bread board.
H-bridge circuit can be made by using four transistors or mosfets. I am going to power, rotate and change the direction of motor by utilizing the second method. One more advantage of using H-bridge is, we can change the polarity of the current by changing the input logic, this property of the h-bridge make’s our motor to run in both forward(clockwise) as well as backward(anti clockwise) direction. One another method is to use an h-bridge circuit that can provide much greater amount of current and can be used to control the direction of motors(Dc, stepper, servo). One method is using a transistor or mosfet at output and instead of powering the motor directly from microcontroller pin, power it with an external source connected to collector of transistor or source of mosfet.