To design the hardware for a flight controller you first need to understand what the firmware running on it actually does. The main problem a flight controller solves is that quadcopters, like any multirotor UAV, are naturally unstable. Physical imbalances, slight differences between motors and frame vibrations constantly push the drone away from its intended orientation.
Running all motors at the same speed won’t keep it level. The flight controller’s core job is computing individual throttle values for each motor to continuously correct for these disturbances.
That a drone needs this to stay level and hold its position is obvious. What people miss is that FPV drones in acro mode also need active stabilization. The distinction comes down to two layers of control. To keep the drone level we control its angle. When flying FPV we control the angular rate. When we let go of the sticks we want the drone to stay at the exact angle we left it at. In that case the flight controller works against inertia and outside factors like wind.
Both rate control and angle control are PID controllers. The flight controller reads the drone’s actual angular rate and angle and compares them with the setpoint. From the error it generates a throttle output for each motor that minimizes the error smoothly. It computes these throttle outputs up to 8000 times per second, giving a PID loop frequency of up to .
The following illustration shows both the rate and angle control loop.
From these control loops we can identify the core components a flight controller needs.
We need a microcontroller to run the PID loop computations. This is the chip where Betaflight or similar firmware executes. When talking about a microcontroller many people picture an Arduino or ESP32 dev board. In our context the MCU is the bare chip. The surrounding circuitry those dev boards provide is what we’re going to design ourselves.
The first step in the PID loop is measuring the drone’s rotational rate and orientation. The IMU provides raw gyroscope and accelerometer data which the firmware fuses to estimate orientation. Like the MCU the IMU is a single chip that we place on the board.
The PID controller needs a setpoint: the target rates or angles dictated by the pilot’s transmitter. This usually comes from a separate radio receiver module connected to the flight controller via a dedicated connector or solder pads.
The MCU computes throttle values for each motor and sends them to the ESCs through solder pads or a connector on the board. Typically the flight controller receives power through this same connector.
This is just the start. Unlock every chapter, the interactive board files, and all future updates.
Unlock the full guide