一:模块信息
MPL3115A2是一款紧凑型的压阻式绝对压力传感器,通过I²C数字接口与单片机通信。
它内部集成了MEMS压力传感器和24位高分辨率ADC,能直接输出气压、海拔和温度数据。这意味着从代码中读取到的就是处理好的数值,无需主控芯片(MCU)进行额外的复杂补偿和单位换算,极大地简化了软件开发。
二:主要特性与参数
测量范围:
压力:20kPa 至 110kPa,覆盖地球上所有陆地海拔
温度:工作温度范围 -40°C 至 +85°C。
高精度与高分辨率:
高度:分辨率高达30厘米。
压力:分辨率可达1.5 Pa。
提供20位的压力和高度数据,以及12位的温度数据。
供电与封装:
电源电压:1.95V 至 3.6V。
接口电压:1.6V 至 3.6V,方便与不同电压的单片机连接。
封装:超小型的 3x5x1.1mm LGA 封装。
低功耗:
待机模式:仅 2μA。
低功耗模式:在1Hz采样率下,电流消耗为 8.5μA。
智能功能:
可编程中断:两个可编程中断引脚,支持自动唤醒、阈值检测等。
32采样FIFO:内置FIFO缓冲区,可存储最多32个数据样本,减少主控芯片读取频率。
过采样:支持最高128倍的过采样率,以获取更稳定的数据
三:软件编写步骤:
MPL3115A2内部的工作原理可以简单概括为以下几个步骤:
传感:MEMS压阻式传感器感知外界气压变化,同时内部温度传感器进行温度监测。
转换:传感器信号经多路复用器(MUX)后,由高精度的24位ADC进行模数转换。
处理:数字信号处理(DSP)模块对数据进行温度补偿和校准,最终直接输出以帕斯卡(Pa)和摄氏度(°C)为单位的数字结果
四:软件代码:
#include <Adafruit_MPL3115A2.h>
Adafruit_MPL3115A2 mpl;
void setup() {
Serial.begin(9600);
while(!Serial);
Serial.println("Adafruit_MPL3115A2 test!");
//切换IIC的引脚地址
Wire.begin(2, 1);
if (!mpl.begin()) {
Serial.println("Could not find sensor. Check wiring.");
while(1);
}
// set mode before starting a conversion
Serial.println("Setting mode to barometer (pressure).");
mpl.setMode(MPL3115A2_BAROMETER);
}
void loop() {
// start a conversion
Serial.println("Starting a conversion.");
mpl.startOneShot();
// do something else while waiting
Serial.println("Counting number while waiting...");
int count = 0;
while (!mpl.conversionComplete()) {
count++;
}
Serial.print("Done! Counted to "); Serial.println(count);
// now get results
Serial.print("Pressure = ");
Serial.println(mpl.getLastConversionResults(MPL3115A2_PRESSURE));
Serial.print("Temperature = ");
Serial.println(mpl.getLastConversionResults(MPL3115A2_TEMPERATURE));
Serial.println();
delay(1000);
}实物验证:
串口接收数据图:
无需软件补偿:传感器内部已完成所有补偿,输出即最终结果。
高精度:30厘米的海拔分辨率能满足许多对精度要求较高的应用。
超低功耗:非常适合电池供电的便携式或可穿戴设备。
高度智能化:内置FIFO和中断功能,可显著减轻主控芯片(MCU)的负担
我要赚赏金
