How I Developed the Scout Flight Controller, Part 6: Hardware
This article is part of a series documenting the development of a custom quadcopter flight controller from scratch. For a list of the other related articles, please refer to the introductory article found here.
In the past several chapters of this series, we learned:
- The flight controller compares the actual attitude rate of change with the desired attitude rate of change, using inputs from the onboard gyroscope and RC receiver module.
- This discrepancy, known as the error, is passed to several PID Controllers that determine what level of thrust to apply to each of the four motors.
- The flight controller then sets each motor’s speed to the recommendation of the flight controller using pulse width modulation (PWM).
- This cycle is repeated many times per second to achieve stable flight.
The above procedure runs in a continuous loop while in flight. For every second in flight, the Scout Flight controller runs repeats the above loop 250 times (250 Hz). So, for a flight as short as 60 seconds, the thrust of each motor was updated 15,000 times!
Now, with a foundational understanding of how the flight controller software works, let’s take a closer look at the hardware involved.
Frame
The quadcopter structure based on the F450 Frame, a widely used and inexpensive drone frame originally created by DJI.
This lightweight and durable frame comes with an integrated PCB (Power Circuit Board) for convenient power distribution to each of the four motors.
Battery
Scout uses a 3,300 mAh 4S lithium polymer (LiPo) battery. The “4S” designation indicates that the battery consists of four LiPo cells connected in series. Each fully charged LiPo cell provides 4.2V, resulting in a total voltage of 16.8V when all four cells are fully charged (4.2 x 4 = 16.8).
Lithium Polymer batteries offer several advantages over other types of batteries, making them popular in quadcopter applications:
- High energy density: despite their compact size, LiPo batteries can store a significant amount of energy.
- Lightweight: LiPo batteries are lighter compared to other battery types, making them ideal for aviation.
- High discharge rate: LiPo batteries are capable of providing a lot of current at any moment. In other words, they can “empty the gas tank” quite quickly. This is important in quadcopters as this will allow the quadcopter to provide heavy amounts of thrust when needed to maintain stable flight or comply with a pilot’s maneuver.
Motors
Scout is equipped with four XING-E Pro 2207 2750 KV Brushless Motors, known for their exceptional power, particularly when operating at 4S. These motors are commonly used in high-speed and performance-oriented FPV drone racing.
In the full flight controller code, I have limited the maximum throttle for each motor to only 22% of their peak thrust level. Even at this level, the motors provide satisfactory performance and are capable of recovering from moderate dives. With the knowledge I have gained throughout this project, I would have chosen less powerful motors if given the opportunity to make the selection again.
Propellers
Scout uses four 8x4.5 2-blade propellers, with two rotating clockwise and two rotating counterclockwise. The “8x4.5” specification indicates that the propellers have an 8-inch diameter and a pitch angle of 4.5 inches. The pitch represents the theoretical distance the propeller would move forward in one revolution if it were moving through a solid medium.
Propellers come in various configurations, including two-blade, three-blade, and four-blade options (and beyond). After some light research, I decided to use two-blade propellers due to their efficiency. Although three-blade propellers may offer enhanced performance, my project focused on stability rather than pure performance.
Electronic Speed Controllers
As mentioned in the previous chapter on ESCs and PWM, the Scout quadcopter employs four electronic speed controllers (ESCs) to drive each of the four motors. These ESCs are responsible for supplying three-phase power to each motor, as directed by the flight controller through a PWM signal.
One of the challenges in electronics is working with components that operate at different voltages. In this project, the components and their respective nominal operating voltages are as follows:
As seen in the table, apart from the motors, every electronic device operates at a standard 5 volts. This aligns with the common voltage used in consumer electronics. To address this discrepancy, many ESC manufacturers integrate a battery eliminator circuit (BEC) into their designs.
The BEC, a separate circuit within the ESC, provides power to other 5V components on the quadcopter. Instead of needing to install a secondary 5V battery, we can tap into the BEC of one of the ESCs. It handles the conversion from the LiPo’s 16.8V to a stable 5V, which we can utilize to power these devices.
Please note that not every ESC includes a BEC. The ESCs I purchased come with an integrated BEC, but it is essential to verify this feature when selecting ESCs for a quadcopter build.
Microcontroller
The Scout Flight Controller uses a Raspberry Pi Pico as the “brain” of the quadcopter. The Raspberry Pi Pico, priced at only $4, is an inexpensive yet capable microcontroller.
I am overclocking the RP2040’s 125 MHz processor to 250 MHz during flight, providing the necessary computational power to execute the adjustment loop at 250 Hz.
Gyroscope & RC Receiver
As mentioned in previous chapters, the Scout Flight Controller continuously monitors both the actual attitude of the vehicle and the desired attitude from the pilot.
For monitoring the actual attitude, an onboard MPU-6050 gyroscope is employed. The MPU-6050 is a widely used motion-tracking sensor with 6 degrees of freedom.
To capture the desired attitude from the pilot, Scout relies on the FlySky FS-iA6B Receiver. This receiver receives RC commands from the pilot via an RC transmitter.
RC Transmitter
The pilot uses a FlySky FS-i6 to send control commands to the quadcopter. The only modification I made to the FS-i6 transmitter’s out-of-the-box settings was changing the output of the fifth channel. This channel, one of the two auxiliary channels, was altered to output the value of SWA (a switch on the transmitter) instead of VRA (a potentiometer on the transmitter).
The position of the SWA switch is used by the Scout Flight Controller to determine the flight mode, as explained in the previous chapter on the RC receiver.
Wiring
Finally, I have provided an illustration of how all these components are interconnected to form a fully functional quadcopter. Please refer to the wiring diagram below:
Pictures
Scout uses an F450 frame:
The Scout Flight Controller runs on a Raspberry Pi Pico, mounted on a small 3D-printed tray, attached to the frame with double sided foam tape. Adjacent to the Raspberry Pi Pico is an FS-IA6B receiver, allowing Scout to receive command input from the pilot via an RC transmitter. Behind the Raspberry Pi Pico is an MPU-6050 which is used as the inertial measurement unit (IMU) that captures in-flight telemetry.
Scout uses two-blade 8-inch propellers on each of its 2750 KV motors. You may notice clear tape on several of the propellers in the image below. This is a propeller balancing measure.
An electronic speed controller (seen in red below) is mounted to each arm and is used to control that arm’s respective motor via 3-phase power, a requirement for brushless motors. I have removed the ESCs from their casings and directly soldered the input and output wires to the board.
A 4S (4 cells in a Series) is stored in the bottom tray of the frame.
Motor Numbering & Prop Direction
I have provided a diagram below illustrating the motor numbering scheme and the required spinning direction for each propeller. It is extremely important to ensure that the PWM signals are correctly mapped to the corresponding motor and that the propellers spin in the direction shown below.
What’s next?
With the hardware assembled and the components properly wired together, the next step is to flash the Scout Flight Controller software onto the microcontroller. In the next chapter, we will dissect the complete code of the Scout Flight Controller, gaining a comprehensive understanding of its functionality.