Hey guys, in this post I will show you how to make flight controller with Arduino for drone or quad-copter. The flight controller is a device used to control multi-rotor vehicles such as quad-copters, drones, etc. It is one of the most important devices for it to work properly. It is almost impossible for a person to control multi motors at the same time to keep it stable and turn stable. This is where the flight controller comes in help. However, they are not that cheap. You can make one yourself with Arduino. We will use this flight controller for our Arduino based drone.

So our drone will have these:

Please note the direction of the propeller rotation. It is very important to make the propeller rotate in this direction to cancel the torque and therefore make it stable. We can see that all the motors on every side are rotating in the opposite direction of the adjacent motor. This cancels the torque. Therefore, it is very important to use the same size motors, the same rated speed, voltage current. If any of the motor is different from the other, it will cause a huge problem on the drone. So, make sure you are buying the same type of motor for all.

We will have a receiver based on Arduino, a flight controller also based on Arduino and motor speed controller. We all know that Arduino is a powerful microcontroller for an interesting project. But using it as a drone flight controller is more difficult than you can ever think. The flight controller has to be very reactive to sensible movements in other to adjust the speed of the motors to keep the drone stable. That is also why we are using the 16Mhz version of the Arduino pro mini. It performs its calculations faster. If we use the 8Mhz version, it would probably have some reactive errors. The 16MHz version is quicker as it has a higher frequency clock speed.

we need a microcontroller to control the receiver and also the flight controller. We will control the speed of the motor with N-channel Mosfets by sending a PWM signal from the Arduino to its gate. This will change the average voltage and therefore control the speed of the motors.

Using 2 Arduinos and 3 a circuit like this will make the quadcopter too heavy. As we are using coreless dc motors, our quadcopter has to be as light as possible to create lift. The coreless DC motors are not as powerful as brushless DC motor. Our drone will weight around 100g. So, each motor has to generate 25g of thrust to create lift. So, we will use only one Arduino to control both the receiver and the flight controller. we will reduce it into 2 circuits with one Arduino controlling both. For a more complex drone, such as the drone with brushless motors and lots of sensors, we would use 2 Arduinos as we would require more connections. For brushless Dc motor drone, using two Arduino, which adds more weight won’t affect the drone too much as brushless dc motors are very powerful and can lift heavier weight.

So this is how our control system will look like. For this part, we will concentrate only on the flight controller.

So our circuit will look like this:
So let's design it. I am using easyEDA to design my circuit.

Our Schematic will look like this:
Now, we have to make the schematic of the circuit first which is the connections between components that the software will use to generate a PCB version of the circuit. So, you have to make sure that all the connections are correct. Once you have created your schematics, generate the PCB version. You can now place the components where you want it to be in the circuit and then draw tracks to connect all the components. I recommend using tracks of width hither than 0.4 mm. You can use below 3 mm for places that have no other way to connect.

Note this arrangement. I chose this arrangement to make it as small as possible. The circuit is just
3.3 cm X 4 cm.

Note that I have designed everything in the bottom layer. Since we will have SMD Mosfet and diode and every component will be soldered in one layer, we have to design everything in the bottom layer else the SMD component will be inverted while doing toner transfer.

And we now common all the ground using solid copper.
So this is our final circuit. We just have to export it as a PDF for printing.

We have to print it on glossy paper.


Here is the youtube video for it:
Hope you guys like it... We will make the PCB in the next post.