A drone is an unmanned aerial vehicle (UAV) that uses a microcontroller flight controller to read inertial sensor data and adjust brushless motor speeds via electronic speed controllers (ESCs) to maintain stable flight. What this architecture changes in a real circuit is the shift from direct, proportional analog control (like old mechanical RC helicopters) to a high-frequency, software-defined stabilization loop running at up to 32kHz. When learning how do drones work at the component level, beginners commonly confuse the flight controller (the logic brain) with the ESC (the power muscle), or mistakenly assume GPS is required for basic hovering when it is actually the onboard IMU (Inertial Measurement Unit) doing the heavy lifting for stabilization.

The Hardware Stack: FC, ESC, and Brushless Motors

To understand drone flight, you have to look at the embedded hardware stack. Modern flight controllers (FCs) are essentially specialized development boards built around ARM Cortex-M microcontrollers. The most common chips in 2026 are the STM32F722 for mid-range builds and the STM32H743 for high-end autonomous rigs. These chips are chosen for their floating-point math performance and Direct Memory Access (DMA) capabilities, which allow them to read sensors and send motor commands without bogging down the main CPU.

The Sensor Hierarchy:
GPS gives you global position (meters), but it updates too slowly (10Hz) for stabilization. The IMU (like the ICM-42688P) gives you angular velocity and acceleration, updating at 8kHz or higher. The FC uses the IMU to keep the drone level, and only uses GPS to hold a specific coordinate.

The FC does not drive the motors directly. It sends digital pulses to the ESCs. Historically, this was done via analog PWM (Pulse Width Modulation), but modern drones use digital protocols like DShot600 or Bidirectional DShot. These protocols send a binary packet representing the throttle value, completely eliminating the signal jitter and latency inherent in analog PWM.

Worked Numeric Example: Sizing Power and Thrust

Let's run the numbers for a standard 5-inch freestyle FPV drone to see how the electrical requirements scale. We need to calculate the required thrust, which directly dictates the current draw and the ESC/Battery sizing.

ParameterValueNotes
All-Up Weight (AUW)750gIncludes frame, motors, FC, 6S LiPo
Target Thrust-to-Weight8:1Standard for aggressive freestyle aerobatics
Total Required Thrust6000g (6kg)750g × 8
Thrust Per Motor1500g6000g / 4 motors
Motor Selection2207 1950KVOptimized for 6S (22.2V nominal) voltage
Max Current Per Motor~35ADrawn at 100% throttle to achieve 1500g thrust
Total Burst Current140A35A × 4 motors simultaneously

Based on this math, a 4-in-1 ESC rated for 45A continuous per motor is the minimum safe specification, providing a small buffer. The battery must be a 6S (6-cell) LiPo with a high C-rating; a 1300mAh 100C pack can theoretically deliver 130A continuous, which is close enough for short punch-outs without triggering severe voltage sag.

Where You Meet This In Practice: Embedded Subsystems

If you are building or debugging drones, you will interact with several distinct communication buses on the flight controller PCB:

  1. SPI (Serial Peripheral Interface): Used exclusively for the IMU gyroscope and accelerometer. SPI is chosen over I2C because it supports the massive 8kHz polling rates required for the PID loop without bus contention.
  2. UART (Universal Asynchronous Receiver-Transmitter): Used for telemetry and receivers. A modern ExpressLRS (ELRS) receiver communicates via UART at up to 420,000 baud, sending RC stick commands and telemetry data back to the radio.
  3. I2C (Inter-Integrated Circuit): Used for slower, secondary sensors like the barometer (for altitude hold) and the magnetometer (compass heading for GPS rescue).
  4. Motor Pads (Timer/DMA outputs): These pins output the DShot digital signal. In bidirectional DShot, the ESC sends RPM telemetry back to the FC on the same wire by modulating the signal during the off-time of the pulse.

For deeper dives into configuring these specific UART and SPI mappings, the Betaflight GitHub Wiki remains the definitive reference for target-specific pinouts and resource allocation.

Scenario Walkthrough: The Desync Crash and the Capacitor Fix

Theory is clean, but high-current embedded systems are messy. Here is a real-world failure mode that plagues drone builders.

Setup: A builder assembles a 5-inch drone using a 6S 1100mAh LiPo, a 4-in-1 50A ESC, and 2207 motors. To save weight and space, they omit the main power electrolytic capacitor, relying solely on the small ceramic decoupling capacitors on the ESC board.

Numbers: The drone weighs 700g. During a test flight, the pilot executes a "punch-out" (100% throttle straight up). The motors instantly demand 130A from the 22.2V battery.

Outcome: Halfway through the ascent, Motor 3 suddenly stops spinning. The flight controller attempts to compensate by over-spinning the other three motors, but the asymmetrical thrust causes the drone to violently flip and crash into the grass.

What went wrong: This is a classic motor desync caused by voltage ripple. Brushless motors are highly inductive loads. When the ESC's MOSFETs switch off, the collapsing magnetic field generates inductive kickback (voltage spikes). Without a large, low-ESR (Equivalent Series Resistance) electrolytic capacitor on the main battery leads to act as a local energy reservoir and filter, this ripple bounces back into the ESC's logic rail. The voltage on the ESC's 3.3V logic regulator momentarily dipped below the microcontroller's brownout threshold. The ESC's MCU rebooted mid-commutation, lost the rotor's position, and failed to drive the motor phases in the correct sequence. The fix is simple: always solder a 1000µF 35V low-ESR capacitor directly across the main battery pads to absorb high-frequency inductive spikes, a practice heavily documented in Oscar Liang's ESC capacitor guides.

Frequently Asked Questions

Can I use a standard Arduino Uno as a flight controller?

Technically yes, but practically no. The ATmega328P on an Arduino Uno lacks the processing speed, hardware floating-point unit, and DMA (Direct Memory Access) required to run a 4kHz PID loop while simultaneously reading an IMU and outputting PWM signals. While early autonomous drones used Arduino Mega boards running ArduPilot, modern implementations use dedicated 32-bit ARM Cortex chips (like the STM32 series) to handle the intense math and real-time interrupt requirements.

What is RPM filtering and why does it matter?

RPM filtering is a software feature that uses bidirectional DShot telemetry to read the exact rotational speed (RPM) of each motor in real-time. The flight controller then applies a dynamic notch filter to the gyroscope data, stripping out the specific vibration frequencies generated by the motors. This prevents motor noise from entering the PID loop, resulting in a smoother flight, cooler motors, and longer flight times.

Why do drones use 3-blade or 5-blade propellers instead of 2-blade?

While 2-blade propellers are the most electrically efficient (drawing the least current for a given thrust), they produce less "grip" in the air during rapid directional changes. Multi-blade props (3, 4, or 5 blades) generate more thrust at lower RPMs and provide better cornering authority, which is why freestyle and racing drones favor them despite the slight penalty to battery life and current draw.