最近准备做无人机的气压定高,打算用bmp388模块,用硬件spi进行通信,
翻开他的数据手册,按照他推荐的模式进行配置:
由于我们是用在无人机上,因此将其配置为Normal模式 , standard Resolution(标准精度) , OSR(过采样率):气压计x8,温度x1,ODR(输出频率):50hz,滤波器系数:2。
以下是我的气压计初始化代码:
void BMP388_Init()
{
delay_ms(50);
BMP_writebyte(BMP388_CMD , 0xB6); //restart
delay_ms(50);
BMP_writebyte(BMP388_IF_CONF , 0x00); / spi 4 mode
delay_ms(10);
BMP_writebyte(BMP388_CONFIG , 0x04); /filter config 滤波系数为3
delay_ms(10);
BMP_writebyte(BMP388_ODR , 0x02); ///0x03 25hz sample fre ///0x02 50hz 0x00 200hz
delay_ms(10);
BMP_writebyte(BMP388_OSR , 0x03); ///0x0c over sample rate : Pressure x16 Temp x2 0x03 Pressure x8 Temp x1
delay_ms(20);
BMP_writebyte(BMP388_PWR_CTRL , 0x33); ///normal mode
delay_ms(10);
BMP388_GetCalib_data();
}
通过手动上下移动飞控,将输出的数据打到地面站的示波器上,得到如下曲线:
可以看出,通过该气压计得到的高度数据,在室内的环境下,精度在±15cm左右。
图中,红线是气压计原始高度数据,蓝线是滤波后的高度,下面的红线是滤波速度。
BMP388这款气压计性能也是挺不错的。
并且据说厂家还开发了性能更好的bmp390芯片,以后去试一下。