When working with the BMP390 in dynamic applications like a rocket altimeter, the sensor configuration plays a crucial role in ensuring accuracy and responsiveness. In your current setup, the oversampling and IIR filter settings are likely introducing too much lag, which explains why your readings diverge significantly from the commercial altimeter once you get past the first 10 meters.
A good balance between noise reduction and responsiveness is to lower the pressure oversampling to 8x or 16x. Very high oversampling (like 32x) produces smoother data but slows the sensor response dramatically, which isn’t ideal for rapid altitude changes.
Next, you should reduce the IIR filter coefficient to 3 or 7. Higher IIR values (like 15) are excellent for slow environmental monitoring but add significant lag in dynamic scenarios. Using a smaller coefficient gives you better tracking of altitude while still filtering out high-frequency noise.
It’s also recommended to keep the output data rate (ODR) at 50 Hz or higher. If your microcontroller can handle it, running the BMP390 at 100 Hz ensures you capture the fast pressure changes that occur during launch and ascent without aliasing effects.
Another critical point is thermal settling. The BMP390, like other MEMS pressure sensors, drifts with temperature. After power-up, give the sensor a 30–60 second warm-up period before locking in your baseline calibration. Without this step, you’ll introduce offset errors that grow with altitude.
For more background on barometric pressure sensors, calibration, and interfacing with MCUs, you can check out this helpful guide on how to interface the BMP180 air pressure sensor with Raspberry Pi 4
https://www.theengineeringprojects.com/2023/06/how-to-interface-bmp180-air-pressure-sensor-with-pi-4.htmlEven though it uses the BMP180, the concepts of oversampling, filtering, and calibration apply equally to the BMP390.