Overview
Hermes is designed to function as the base flight control system responsible for guidance, navigation and control of a fixed-wing UAV - but general enough for most other vehicles.
Aims
- Design a complete flight control system from scratch (hardware, software, control systems, navigation algorithms, ground control station, etc..)
- Goal: Complete system consisting of standardised hardware and basic but robust software framework.
- Focus on developing and testing novel algorithms - not writing low-level code!
Hardware Requirements
- Standard set of sensors (e.g. IMU, barometer & airspeed sensor)
- Expansion and interface capabilities via various IOs.
- Power distribution for servos.
- Processing power.
- Affordability!
Hardware Specification
Bill of Materials
S/N | Component | Qty | Description | Unit Price (CAD) | Price (CAD) |
---|---|---|---|---|---|
1 | RP2040 | 2 | Flight Control Computer: Main MCU for polling IMU and Radio PPM for control loop Navigation Computer: Secondary MCU handling onboard guidance & navigation algorithms + extras | $1.45 | $2.90 |
2 | Invensense MPU6050 | 1 | 6DOF MEMS IMU (Gyroscope + Accelerometer) | $3.50 | $3.50 |
3 | NXP MPL3115A2 | 1 | Absolute pressure sensor with an I²C digital interface | $3.50 | $3.50 |
Datasheets
- RP2040
- Dual ARM Cortex-M0+ @ 133MHz
- MPU6050
- 6-axis MotionTracking device that combines a 3-axis gyroscope, 3-axis accelerometer, and a Digital Motion Processor™ (DMP)
- MPL3115A2
- I²C precision pressure sensor with altimetry
Block Diagram
Technical Documentation
This MCU is responsible for polling IMU sensors at a high-rate, listening for incoming radio commands and actively stabilizing the aircraft about a desired setpoint.
The Flight Control Computer (FCC) is based on the RP2040 microcontroller clocked @ 133MHz this is fast enough to run the external PID control loop as well handle all the calculations needed for reliable attitude estimation.
Hardware Design
The Flight Control System consists of:
:::note The datasheets for all the components used can be found here :::
Power
The RP2040 chip requires two different voltage supplies 3.3V (for I/O's) and 1.1V (for the chips digital core). The main power source for this embedded system is a 3-6S LiPo Battery. Both MCU's are powered via a single 5V USB connection despite needing seperate USB connectors to program, this done to aid debugging.
Requirements
- Step-down LiPo 11.2-26V DC Input to 5V for actuators
- Supply both MCU's with 3.3V from either USB_VBUS or VCC.
Battery & 5V Power Supply
To step down 11.2V from the LiPo Battery to 5V a DC/DC Buck Regulator rated to a max. of 28V is needed.
The Micrel MIC26903 is used to supply 5V @ 8A to all the actuators and 3.3V regulators.
Figure 1: Battery |
Figure 2: Buck Regulator input filtering |
Figure 3: Buck Regulator |
Figure 4: Buck Regulator output filtering |
3.3V Power
Both USB ports are connected to a LDO providing 3.3V @2A to both MCU's and their peripherals.
Figure 5: Solder-jumper for LiPo 5V input |
Figure 6: 3.3V Low Dropout Voltage Regulator (LDO) |
Crystal Oscillator
Load capacitance calculation
Where C_s is the stray capacitance in the oscillator circuit, and can be estimated to 5pF.
Figure 7: 12MHz 16pF Crystal Oscillator |
Flash Storage
In order to be able to store program code which RP2040 can boot and run from, we need to use a flash memory, specifically, a quad SPI flash memory. The device chosen here is an W25Q128JVS device, which is a 128Mbit chip (16Mbyte). This is the largest memory size that RP2040 can support.
Figure 8: W25Q128JVS 128Mbit flash (16Mbyte) |
MCU
RP2040 is a 56 pin, 7x7mm QFN (Quad Flat No-leads) package with a small pitch (0.4mm pin-to-pin spacing).
Figure 9: RP2040 |
Sensors
Invensense MPU6050 is the accelerometer/gyroscope sensor.
NXP MPL3115A2 is the barometric pressure sensor chosen to estimate altitude.
Figure 10: Invensense MPU6050 |
Figure 11: NXP MPL3115A2 |
Radio
The Flysky FS-iA10B receiver is used to receive RC control input signals via PPM.
Get the Flysky FS-iA10B here
Figure 12: Connectors |
Before First Boot
After assembling all the components.
Solder jumper JP2 & JP3 only after ensuring 3.3V is the nominal voltage.
This supplies power to the MCU and peripheral components (eg. Sensors and Flash)
Figure 13: Bridge 3V_MCU_EN & 3V_IO_EN pads |
After soldering JP2 & JP3, it is safe to power the board and begin flashing firmware.
Below is a brief video showing the FC booting and completing it's LED boot sequence.
Resources
All Design files and resources can be found here