锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

高精度气压传感器BMP280代码与解析

时间:2022-11-02 18:30:00 传感器bmp280

文章目录

  • 前言
  • 一、传感器简介
  • 二、参数设置
    • 1.工作模式
    • 2.采样设置
    • 3.IIR滤波器
    • 4.推荐设置
  • 三、数据采集
  • 四、总结
  • 五、获取源码


前言

BMP280前身是BMP具有高精度、线性和长期稳定性的特点。本文将分析传感器的使用,并提供它STM32示例代码可移植,过程简单


一、传感器简介

BMP280可使用I2C和SPI本例采用通信方式SPI通信。管脚描述如下:
在这里插入图片描述
BMP280的使用相对简单,采集数据前需要设置的参数包括:工作模式、IIR滤波器、采样数量、采集频率等

二、参数设置

1.工作模式

BMP提供了三种工作模式:

  • 休眠模式(Sleep mode) :传感器进入休眠状态,停止收集数据,但寄存器值保持不变;
  • 强制模式(Forced mode): 数据采集,收集后返回休眠模式;
  • 普通模式(Normal mode):多次循环数据采集。

以下是程序提供的模式设置函数。

/************************************ * 函数功能:工作模式设置推荐 * 参数:mode 0 睡眠模式 * 1 单次测量模式,测量完成后,眠模式 * 2 连续测量模式 * 返回值: 0 设置成功 * 1 设置失败 *************************************/ uint8_t bmp280_setMode(uint8_t mode); 

2.采样设置

BMP280提供温度和气压的过采样设置,它的意义是一次测量多个数据,以求和平均输出值。例如将气压ADC过采样设置为×16.然后一次测量16个数据,平均获得最终输出值。其设置函数如下:

/************************************ * 函数功能:过采样设置 * 参数:temp&press 0 禁用 * 1 过采样×1 * 2 过采样×2 * 3 过采样×4 * .. ... * 5 过采样×16 * 返回值: 0 设置成功 * 1 设置失败 *************************************/ uint8_t bmp280_setOversampling(uint8_t osrs_p,uint8_t osrs_t); 

3.IIR滤波器

BMP280内容自带一个IIR作者对滤波器了解不多。但是,根据手册,滤波器系数可以根据具体的应用场景设置(请继续查看以下内容)。综上所述,低频采样(如环境天气测量)不需要打开滤波器;在连续测量(如实时高度检测)中,滤波器系数更大。
测量时间间隔和滤波器设置的函数如下:

/************************************ * 函数功能:滤波器系数和采样间隔时间设置 * 参数:Standbyt 0 0.5ms filter 0 关闭滤波器 * 1 62.5ms 1 2 * 2 125ms 2 4 * 3 250ms 3 8 * 4 500ms 4 16 * 5 1000ms * 6 2000ms * 7 4000ms * 返回值: 0 设置成功 * 1 设置失败 *************************************/ uint8_t bmp280_setConfig(uint8_t Standbyt,uint8_t filter); 

4.推荐设置

根据官方手册,推荐了几种常见的应用场景和设置,具体参考如下:

三、数据采集

BMP读取的数据是电压通过AD转换后的值不是最终的气压。拟合系数存储在气压和电压曲线上BMP在280寄存器中。测量步骤:1。读取拟合系数;2.读取原始系数;AD数据;3.拟合最终得到气压。具体如下:


例程中提供了两个直接获得温度和气压的函数:

void bmp280_getTemperature(bmp280_calib *calib,double *temperature,int32_t *t_fine); void bmp280_getPressure(bmp280_calib *calib,double *pressure,int32_t *t_fine);

四、总结

相比较于BMP180,BMP280的数据非常稳定。因为是MEMS器件,也存在零偏误差(零偏误差是指即使真实值为0,此时传感器测量到的数值为某一特定的数值)。但比例因子误差应该是非常小的,用于测量高度差是可行的。

五、获取源码

关注下方公众号,回复 “BMP280” 获取源码;若有疑问,请在公众号回复“交流群”,进群一起讨论分享!

锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章