Now that you have selected or designed the UAV frame, selected the motors, rotors, ESC and battery, you can proceed to select the flight controller. A flight controller for a multi-rotor drone is an integrated circuit, usually consisting of a microprocessor, sensors, and input/output contacts. After unpacking, the flight controller does not know what specific type or configuration of the UAV you are using, so you will initially need to set certain parameters in the software, after which the specified configuration is loaded on board. Rather than simply comparing the currently available flight controllers, the approach we’ve taken here lists which PC elements are responsible for which functions, as well as aspects to look out for.
8051 vs AVR vs PIC vs ARM: A family of microcontrollers that form the basis of most modern flight controllers. The Arduino is based on the AVR (ATmel) and the community seems to be focused on the MultiWii as the code of choice. Microchip is the main manufacturer of PIC chips. It’s hard to argue that one is better than the other, it all comes down to what the software can do. ARM (e.g. STM32) uses 16/32-bit architecture, with dozens using 8/16-bit AVRs and PICs. As single board computers become less and less expensive, a new generation of flight controllers are expected that can run full operating systems such as Linux or Android.
CPU: Usually their bit width is a multiple of 8 (8‑bit, 16-bit, 32-bit, 64-bit), which in turn indicates the size of the primary registers in the CPU. Microprocessors can only process a set (maximum) number of bits in memory at a time (cycle). The more bits the microprocessor can process, the more accurate (and faster) the processing will be. For example, processing a 16-bit variable on an 8‑bit processor is much slower than on a 32-bit one. Note that the code must also work with the correct number of bits, and at the time of this writing, few programs use code that is optimized for 32 bits.
Working frequency: The frequency at which the main processor is running. It is also referred to by default as “clock speed”. Frequency is measured in hertz (cycles per second). The higher the operating frequency, the faster the processor can process data.
Program Memory/Flash: Flash memory is where the main code is stored. If the program is complex, it can take up a lot of space. Obviously, the larger the memory, the more information it can store. The memory is also useful for storing in-flight data such as GPS coordinates, flight plans, automatic camera movement, etc. The code loaded on the flash memory remains on the chip even after the power is turned off.
SRAM: SRAM stands for “Static Random Access Memory” and is the space on a chip that is used when performing calculations. Data stored in RAM is lost when the power is turned off. The higher the amount of RAM, the more information will be “easily available” for calculations at any given time.
EEPROM: electrically erasable programmable read-only memory (EEPROM) is typically used to store information that does not change during flight, such as settings, as opposed to data stored in SRAM, which may include sensor readings, etc.
Additional I/O Ports: most microcontrollers have a large number of digital and analog input and output ports, on the flight controller some are used for sensors, others for communication, or for general input and output. RC servos, gimbal systems, buzzers and more can be connected to these additional ports.
Analog-to-digital converter (A/D converter/ADC): If the sensors use an on-board analog voltage (typically 0–3.3V or 0–5V), an A/D converter must convert these readings to digital data. As with the processor, the number of bits that can be processed by the ADC determines the maximum precision. Related to this is the clock rate at which the microprocessor can read data (number of times per second) to make sure no information is lost. However, it is difficult not to lose some data during this conversion, so the higher the bit width of the ADC, the more accurate the readings will be, but it is important that the processor can cope with the speed at which the data is sent.
Often a flight controller specification describes two voltage ranges, the first of which is the input voltage range of the flight controller itself (most operate at a nominal voltage of 5V), and the second is the input voltage range of the main microprocessor (3.3V or 5V). Because the flight controller is an embedded device, you only need to pay attention to the input voltage range of the controller. Most multi-rotor UAV flight controllers operate at 5V, which is the voltage generated by the BEC (see the Powerplant section for more information).
Let’s repeat. Ideally, you don’t need to power the flight controller separately from the main battery. The only exception is if you need a backup battery in case the main battery is putting out so much power that the BEC can’t produce enough current/voltage, causing a power outage/reset. But, in this case, capacitors are often used instead of a backup battery.
In terms of hardware, the flight controller is essentially a regular programmable microcontroller, only with special sensors on board. At a minimum, the flight controller will include a 3‑axis gyroscope, but without auto-levelling. Not all flight controllers are equipped with the following sensors, but they can also include a combination of them:
- Accelerometer: As the name suggests, accelerometers measure linear acceleration along three axes (let’s call them X, Y, and Z). Usually measured in “G (in Russian Zhe)”. The standard (normal) value is g = 9.80665 m/s². To determine the position, the output of the accelerometer can be integrated twice, however, due to the loss in the output, the object may be subject to drift. The most significant characteristic of triaxial accelerometers is that they register gravity, and as such, can know in which direction to “descent”. This plays a major role in ensuring the stability of a multi-rotor UAV. The accelerometer must be mounted on the flight controller so that the linear axes coincide with the main axes of the drone.
- Gyroscope: The gyroscope measures the rate of change of angles along three angular axes (let’s call them: alpha, beta and gamma). Usually measured in degrees per second. Note that the gyroscope does not measure absolute angles directly, but you can iterate to get an angle that, like the accelerometer, favors drift. The output of a real gyroscope tends to be analog or I2C, but in most cases you don’t need to worry about this since all incoming data is handled by the flight controller code. The gyroscope must be installed so that its rotation axes coincide with the axes of the UAV.
- Inertial Measurement Unit (IMU): An IMU is essentially a small board that contains both an accelerometer and a gyroscope (usually multi-axis). Most of them include a 3‑axis accelerometer and a 3‑axis gyroscope, others may include additional sensors, such as a 3‑axis magnetometer, providing a total of 9 measurement axes.
- Compass/Magnetometer: An electronic magnetic compass capable of detecting the Earth’s magnetic field and using this data to determine the direction of the drone’s compass (relative to the north magnetic pole). This sensor is almost always present if the system has GPS input and one to three axes are available.
- Pressure/Barometer: Since atmospheric pressure changes as you move away from sea level, you can use a pressure sensor to get a fairly accurate reading of the UAV’s altitude. To calculate the most accurate altitude, most flight controllers receive data from both a pressure sensor and a satellite navigation system (GPS). When assembling, please note that it is preferable that the hole in the barometer body be covered with a piece of foam rubber, this will reduce the negative effect of wind on the chip.
- GPS: The Global Positioning System (GPS) uses signals from multiple satellites in orbit around the Earth to determine your specific geographic location. The flight controller can have either a built-in GPS module or a cable-connected one. The GPS antenna should not be confused with the GPS module itself, which can look like a small black box or a regular “Duck” antenna. To get accurate location data, the GPS module must receive data from several satellites, and the more the better.
- Distance: Distance sensors are increasingly used on drones because GPS coordinates and pressure sensors cannot tell you how far you are from the ground (hill, mountain, or building) or whether you will collide with an object or not. The downward facing distance sensor can be based on ultrasonic, laser or lidar technology (IR sensors may experience problems in sunlight). Distance sensors are rarely included as standard with a flight controller.
Below is a list of the most popular flight modes, however not all of them may be available on the flight controllers. “Flight Mode” is the way in which the flight controller uses sensors and incoming radio commands to ensure the stabilization and flight of the UAV. If the control equipment used has five or more channels, the user can configure the software, which will allow him to change modes through channel 5 (auxiliary switch) directly during the flight.
- ACRO — usually the default mode, of all available sensors, only the gyroscope is used by the flight controller (the drone cannot automatically align). Relevant for sports (acrobatic) flight.
- ANGLE — stable mode; of all available sensors, the gyroscope and accelerometer are used by the flight controller. corners are limited. Will keep the drone level (but not hold the position).
- HORIZON — combines the stability of the ANGLE mode, when the sticks are near the center and move slowly, and the acrobatics of the ACRO mode, when the sticks are in the extreme positions and move quickly. The flight controller uses only the gyroscope.
- BARO (Altitude Hold) — stable mode; of all available sensors, the flight controller uses a gyroscope, an accelerometer, and a barometer. corners are limited. The barometer is used to hold a certain (fixed) altitude when no commands are given from the control equipment.
- MAG (Heading Hold) — course lock mode (compass direction), the drone will keep Yaw orientation. Of all the available sensors, the flight controller uses a gyroscope, an accelerometer, and a compass.
- HEADFREE (CareFree, Headless, Headless) — eliminates the orientation tracking (Yaw) of the drone and thus allows you to move in the 2D direction according to the movement of the ROLL/PITCH control stick. Of all the available sensors, the flight controller uses a gyroscope, an accelerometer, and a compass.
- GPS/Return to Home — automatically uses the compass and GPS to return to the takeoff point. Of all the available sensors, the flight controller uses a gyroscope, an accelerometer, a compass, and a GPS module.
- GPS/Waypoint — allows the drone to autonomously follow pre-set GPS points. Of all the available sensors, the flight controller uses a gyroscope, an accelerometer, a compass, and a GPS module.
- GPS/Position Hold — Holds the current position using GPS and barometer (if available). Of all the available sensors, the flight controller uses a gyroscope, an accelerometer, a compass, and a GPS module.
- Failsafe (emergency/failsafe mode) — if no other flight modes have been set, the drone switches to Acro mode. Of all the available sensors, only the gyroscope is used by the flight controller. Relevant in case of failures in the drone software, allows you to restore control over the UAV through previously preset commands.
PID controller (appointment and setting)
Proportional Integral Derivate (PID) or Proportional-Integral-Derivative (PID) controller — a piece of flight controller software that reads data from the sensors and calculates how fast the motors must rotate in order to maintain the desired speed of the UAV.
Developers of ready-to-fly UAVs tend to tune the PID controller parameters optimally, so most RTF drones fly perfectly right out of the box. The same cannot be said about custom UAV builds, where the actual use of a universal flight controller suitable for any multi-rotor build, with the ability to adjust the PID values until they correspond to the required flight characteristics of the end user.
Graphical User Interface (GUI) or Graphical User Interface — this is what is used to visually edit the code (using a computer) that will be loaded into the flight controller. The software that comes with flight controllers keeps getting better and better; early flight controllers used mostly text-based interfaces that required users to understand almost all of the code and change certain sections to fit the design. Recently, interactive graphical interfaces have been used in the GUI, in order to make it easier for the user to configure the necessary parameters.
The software used on some flight controllers may have additional features that are not available on others. The choice of a particular flight controller may ultimately depend on what additional features/functionality is offered by the developer. The list of such functions may include:
- Offline waypoint navigation — allows the user to set GPS waypoints that the drone will follow autonomously.
- Oribiting — moving the drone around a given GPS coordinate, where the front of the drone is always directed towards the given coordinate (relevant for shooting).
- follow me — many UAVs have the “Follow Me / Follow me” function, which can be based on satellite positioning (for example, tracking the GPS coordinates of a smartphone, or a GPS module built into the control equipment).
- 3D image — most of the 3D imaging is done after the flight using images and GPS data obtained during the flight.
- open source — software of some flight controllers cannot be changed/configured. Open source products generally allow advanced users to modify the code to suit their specific needs.
Radio control (RC)
Control via radio usually includes an RC transmitter / RC transmitter (in an unmanned hobby — radio control equipment / remote control) and an RC receiver (RC receiver). To interact with the UAV, the user will need at least four (or more) channel RC transmitter. By default, the first four channels are associated with:
- Throttle/Elevation (takeoff and descent)
- Yaw (rotation around its axis left and right)
- Pitch (forward and backward movement)
- Roll (move left and right)
All other available channels can be used for such actions as:
- Arming (Arming or Arm) / Disarming (Disarming or Disarm) — setting / disarming motors.
- Gimbal control (pan up/down, rotate clockwise/counterclockwise, zoom)
- Change of flight modes (ACRO / ANGLE, etc.)
- Activate/Engage payload (parachute, buzzer or other device)
- Any other use
Most users (UAV pilots) prefer manual control, which proves once again that piloting with the help of control equipment is still the number one choice. By itself, the RC receiver simply transmits the values incoming from the RC transmitter, which means it cannot control the drone. The RC receiver must be connected to the flight controller, which in turn must be programmed to receive RC signals. There are very few flight controllers on the market that accept incoming radio commands directly from the receiver, and most PCs even provide power to the receiver from one of the pins. Additional considerations when choosing a remote control include:
- Not all RC transmitters can provide the full range of RC signals from 500ms to 2500ms; some artificially limit this range, as most of the RCs in use are for RC cars, airplanes, and helicopters.
- Range/Max. air range (measured in feet or meters) RC systems — almost never provided by manufacturers, since this parameter is influenced by many factors, such as interference, temperature, humidity, battery power, and others.
- Some RC systems have a receiver that also has a built-in transmitter to transmit data from the sensor (such as GPS coordinates) which will then be displayed on the LCD of the RC transmitter.
Bluetooth and later BLE (Bluetooth Low Energy) products were originally designed to transfer data between devices without the hassle of pairing or matching frequencies. Some flight controllers on the market can send and receive data wirelessly via a Bluetooth connection, making troubleshooting easier in the field.
Wi-Fi control is usually achieved through a Wi-Fi router, computer (including laptop, desktop, tablet) or smartphone. Wi-Fi is able to handle both data transfer and video streaming, but at the same time, this technology is more difficult to set up / implement. As with all Wi-Fi devices, the distance is limited by the Wi-Fi transmitter.
Radio frequency (RF or RF)
Radio frequency (RF) control in this context refers to the wireless transmission of data from a computer or microcontroller to an aircraft using an RF transmitter/receiver (or dual band transceiver). Using a conventional RF unit connected to a computer allows two-way communication over long distances with a high “density” of data (usually in serial format).
Although this is not a type of communication, the very question of how to control a drone using a smartphone is enough to give it a separate section. Modern smartphones are essentially powerful computers that, coincidentally, can also make phone calls. Almost all smartphones have a built-in Bluetooth module as well as a WiFi module, each of which is used to control the drone and/or receive data and/or video.
Infrared radiation (Infrared (IR))
Infrared (something found in every TV remote control) is rarely used to control drones, as even in normal rooms (not to mention open spaces) there is so much infrared interference that they are not very reliable. Although the technology can be used to control UAVs, it cannot be offered as a mainstream option.
Functionality: Flight controller manufacturers usually try to provide as many features as possible — either included by default or purchased separately as options / add-ons. The following are just a few of the many additional features you might want to look at when comparing flight controllers.
Damping: even small vibrations in the frame, usually caused by unbalanced rotors and/or motors, can be detected by the built-in accelerometer, which in turn will send appropriate signals to the main processor, which will take corrective action. These minor fixes are not necessary or desirable for stable flight, and it is best to keep the flight controller vibrating as little as possible. For this reason, vibration dampers/dampers are often used between the flight controller and the frame.
Frame: a protective case around the flight controller can help in a variety of situations. In addition to being more aesthetically pleasing than a bare PCB, the package often provides some level of electrical protection. elements, as well as additional protection in the event of a crash.
Mounting: There are various ways to mount a flight controller to a frame, and not all flight controllers have the same mounting options:
- Four holes 30.5mm or 45mm apart squared.
- Flat bottom for use with a sticker.
- Four holes in a rectangle (standard not established).
Community: Since you are building a custom drone, participating in the online community can help a lot, especially if you run into problems or want advice. Getting recommendations from the community or looking at user feedback on the quality and ease of use of various flight controllers can also be helpful.
Accessories: In order to fully use the product, in addition to the flight controller itself, related items (accessories or options) may be required. Such accessories may include, but are not limited to: a GPS module and/or a GPS antenna; cables; mounting accessories; screen (LCD/OLED);
So with all these different comparisons, what information can you get about a flight controller and what can a flight controller include? We have chosen the Quadrino Nano Flight Controller as an example.
The ATMel used onboard the ATMega2560 is one of the most powerful Arduino compatible ATMel chips. Although it has a total of 100 pins, including 16 A/D channels and five SPI ports, due to its small size and intended use as a flight controller, only a few are present on the board.
- AVR vs PIC: AVR
- Processor: 8‑bit
- Operating frequency: 16MHz
- Program Memory/Flash: 256KB
- SRAM: 8KB
- EEPROM: 4KB
- Additional I/O pins: 3 × I2C; 1 x UART 2 x 10-pin GPIOs; Servo with 5 × outputs; OLED port
- Analog to Digital Converter: 10-bit
The Quadrino Nano includes the MPU9150 IMU chip, which includes a 3‑axis gyroscope, 3‑axis accelerometer, and 3‑axis magnetometer. This helps keep the board small enough without sacrificing sensor quality. The MS5611 barometer provides pressure data and is covered with a piece of foam. Integrated Venus 838FLPx GPS with external GPS antenna (included).
The Quadrino Nano was created specifically to use the latest MultiWii software (Arduino based). Instead of modifying the Arduino code directly, separate, more graphical software was created.
- Direct input from a standard RC receiver.
- Spektrum Dedicated Satellite Receiver Port
- Serial (SBus and/or Bluetooth or 3DR radio)
- Frame: Protective translucent housing included as standard
- Mounting: There are two main ways to attach the Quadrino Nano to your drone: screws and nuts, or a foam rubber sticker.
- Compact design: the controller itself (without taking into account the GPS antenna) has dimensions of 53 × 53mm.