In the previous article, we explained the implementation design and calibration of the compass. In this article, which is FC10, we will cover the barometer (pressure sensor). It is a critical sensor that enables altitude hold even in environments where GNSS altitude accuracy is low, but the core of the design lies in countermeasures against three types of disturbances: airflow, temperature, and electrical noise.
Why a barometer is necessary for an FC
Altitude control is a basic function of drone flight, but GNSS altitude accuracy is lower than horizontal accuracy, and because the vertical DOP (Dilution of Precision) is large, errors of about ±3 to 5m are common. This is further exacerbated in urban areas or near buildings due to multipath effects.
A barometer estimates altitude from atmospheric pressure. In the standard atmosphere, there is a relationship where atmospheric pressure drops by about 1 Pa for every 8.5m increase in altitude, and high-resolution pressure sensors can measure pressure changes with a resolution of 1 Pa or less. This corresponds to an altitude resolution of about 8.5cm or less.
ArduPilot's EKF integrates barometer and GNSS altitude using an algorithm to achieve altitude estimation that leverages the strengths of each. In environments where GNSS is normal, it places weight on GNSS, and when GNSS is unstable, it relies on the barometer. In environments where GNSS cannot reach, such as indoors or under bridges, short-term altitude hold is possible through the integration of the barometer and accelerometer (barometric altimeter + IMU).
Comparison of major barometer ICs
We will compare the major pressure sensors used in FC design.
The MS5611 is a standard barometer from Measurement Specialties that has a proven track record of being adopted in the Pixhawk series for many years. It features a resolution of 0.012 mbar (about 10cm altitude resolution), supports SPI/I2C, and has an operating voltage of 1.8 to 3.6V. It has built-in temperature compensation coefficients, and the ArduPilot driver is the most mature. However, compared to its successors, it has higher noise, so successors are chosen for high-precision applications.
The BMP388 is manufactured by Bosch and has been adopted in many FCs as a successor to the MS5611. It features a resolution of 0.005 Pa (about 4cm altitude resolution), a built-in IIR filter, supports SPI/I2C, and has low current consumption (3.4µA @ 1Hz). The ArduPilot driver is complete, making it the current standard choice.
The SPL06-001 is manufactured by Goertek and has specs equivalent to the BMP388. It supports SPI/I2C, has a built-in IIR filter, and has been easier to obtain than the BMP388 at times, leading to its adoption in multiple FC designs.
The ICP-10111 is a high-precision barometer from TDK InvenSense with a resolution of 0.2 Pa or less and better noise characteristics than the BMP388. It supports SPI/I2C and is intended for aircraft that require high-precision altitude control. The ArduPilot driver is already supported.
The MS5607 is a low-altitude range version of the MS5611, with improved accuracy at high altitudes (4000m or higher). It is an option for high-altitude operation drones (mountain surveying, high-altitude platforms).
Three causes of pressure disturbance
Disturbances that disrupt the barometer output are classified into three types: airflow, temperature, and electrical noise. Countermeasures differ for each.
Airflow disturbance occurs when propeller downwash and wind hit the sensor opening. The downward airflow created by the rotation of the propellers creates a local high-pressure region, and the sensor misidentifies this as 'altitude has decreased.' When the aircraft approaches the ground, the downwash strengthens due to ground effect, causing 'barometer bounce,' where the aircraft unexpectedly stops or rises during landing.
When outdoor crosswinds pass through the opening of the FC enclosure, the Bernoulli effect causes the local pressure to drop, leading to a misidentification that 'altitude has increased.' Depending on the shape of the enclosure and the position of the opening, an error equivalent to several meters can occur.
Temperature disturbance occurs when heat-generating components such as the MCU, ESC, or DC-DC converter change the ambient temperature around the barometer. Although the pressure sensor performs internal temperature compensation, if the rate of temperature change is fast (rapid ascent, rapid descent, sunlight exposure), the compensation cannot keep up, resulting in errors.
Electrical noise is a phenomenon where noise from switching power supplies or ESCs enters the barometer's ADC through the power lines. Because the barometer's measurement resolution is extremely high, even slight power supply noise appears in the output.
Countermeasures for airflow disturbance—foam shield
The most effective airflow countermeasure is a foam shield. This involves covering the barometer with a soft open-cell foam material (such as polyurethane foam) to create a structure that blocks direct airflow while still transmitting static pressure.
The key to foam shield design is material selection. Open-cell foam transmits air pressure while blocking airflow. Closed-cell foam is unsuitable because it blocks air pressure. Lower density and softer materials provide better airflow blocking, but if the density is too low, the blocking effect is insufficient. Soft polyurethane with a Shore 00 scale of around 20-40 is common.
The foam thickness should be at least 3mm, preferably 5mm or more. The black foam cover used in the Pixhawk series is a standard example of this design, and many FC manufacturers use it as a reference.
As a PCB design technique, placing the barometer closer to the center of the board rather than the edge, and adding small walls around the barometer (such as raised resist or part of a shield case), prevents direct airflow. On the enclosure side, directing the barometer opening toward the negative pressure side of the airframe or a surface with calm airflow can reduce disturbances.
Countermeasures for Temperature Disturbances
Similar to IMU vibration countermeasures, the fundamental approach to barometer temperature disturbance is isolation from heat sources.
In the PCB layout, insert thermal vias or cuts in the copper foil between the barometer and the MCU/DC-DC converter to block heat conduction. As FC miniaturization progresses, maintaining this distance becomes difficult, leading to design trade-offs.
As an approach in enclosure design, a small heater can be placed near the barometer to keep the temperature constant during flight. In cold climate operations, ensuring a warm-up time from power-on to flight is also effective. ArduPilot's temperature compensation function (BARO_TEMP_COMP) performs bias correction based on the difference between the ambient temperature and the internal temperature sensor.
ArduPilot's barometer filter setting (BARO_FILTER) sets the time constant for the barometer output. The default is 0 (no filter), and setting a value greater than 0 applies a low-pass filter, smoothing out instantaneous fluctuations. However, since altitude responsiveness decreases, it should only be used in environments with strong temperature fluctuations.
Countermeasures for Electrical Noise
Similar to the IMU, the countermeasure for barometer power supply noise is to clean it using an LDO. Do not supply power directly from the switching power supply; instead, supply it to the VDD after passing it through a dedicated LDO.
Furthermore, place 0.1µF and 1µF MLCCs in close proximity to the barometer's VDD. Insert series resistors (around 22Ω) into the SPI/I2C signal lines to soften the signal edges and reduce radiated noise.
The barometer's GND connection is also important. Separate the power GND and analog GND, and connect the barometer's GND to a clean path using a star connection. Design the layout so that digital current returns do not pass through the barometer's GND path.
Redundant Barometer Design
Industrial FCs are equipped with redundant barometers. ArduPilot natively supports barometer redundancy, integrating multiple barometer outputs to generate the best estimate.
When placing redundant barometers, it is important not to place the two barometers in the same heat source or airflow conditions. If two are mounted on the FC board, place them on different sides or in locations with different thermal environments to avoid common failure modes. A configuration where one is built into the FC and the other is mounted on the GPS module is also common.
Failure detection monitors the output difference between the barometers. ArduPilot issues a warning to the GCS if multiple barometers deviate significantly and automatically selects the more reliable one.
An example of a redundant barometer definition in hwdef.dat is as follows:
# バロメータ1(SPI接続)
BARO BMP388 SPI:bmp388_0
# バロメータ2(I2C接続)
BARO MS5611 I2C:0:0x77
copy**
Verification Method for Altitude Estimation
Design validity is verified through log analysis. ArduPilot's BARO message records the raw barometer output and temperature.
An empirical guideline is that if the standard deviation of the BARO during hovering is 0.5m or less, the airflow countermeasures are sufficient; 0.5–1.5m indicates room for improvement; and 1.5m or more requires a review of the foam shield.
By observing the divergence between the EKF altitude estimate (CTUN.Alt) and the raw barometer value (BARO.Alt), you can confirm how much the EKF trusts the barometer. If a large divergence persists, it indicates that the barometer noise is high and the EKF is relying on the GNSS or accelerometer instead.
Summary
The barometer is an essential sensor that complements GNSS altitude accuracy, but it requires appropriate countermeasures against three types of disturbances: airflow, temperature, and electrical noise. By combining airflow shielding with foam, isolation from heat sources, and power supply cleaning using a dedicated LDO, highly reliable altitude estimation can be achieved. The inclusion of redundant barometers and fault detection logic is the standard configuration for industrial flight controllers. In the next installment, FC11, we will explain GPS antenna placement—design guidelines for maximizing GNSS reception performance.
