在这个项目中,我将向您展示如何与Arduino接口BMP180气压和温度传感器。在此过程中,您将看到典型压力传感器的功能和规范以及BMP180 Arduino界面的工作方式。
我们将看到如何将该传感器与Arduino Uno板连接起来,安装必要的软件库并从传感器中获取数据。
介绍
气压压力(也称为大气压)是在给定点上施加的空气的力。用于测量大气压力的设备称为气压计(因此是气压压力)。
大气压力与海拔或高度成反比,即随着海拔的增加,大气压降低。因此,山顶上的气压小于海平面的气压。
海气压的测量值非常重要,因为它在地球上的点之间变化,并且有助于研究,分析和预测天气和气候。
我们知道压力的SI单位是Pascal,它是单位面积的力(1 pa = 1 n/m2)但是,气压通常在海hoccascal(1 HPA = 100 PA)或Millibar(1 MBAR = 100 PA = 1 HPA)中表示。
在海平面,平均大气压约为101,325 PA(≈1,013mbar或1,013 HPA)。这被称为标准气氛(ATM = 101,325 PA)。
关于物理学的足够讲座。让我们继续使用BMP180Arduino界面。首先,让我们了解有关BMP180气压传感器的一些信息。
BMP180传感器的简短说明
BMP180是Bosch的数字气压传感器。它是基于压电电阻MEMS设备的超低动力设备。它可以测量300 hPa至1100 hPa的大气压。
除压力外,BMP180传感器还可以测量0的温度0C至650C.通过测量压力,您也可以扣除点的高度(因为它们都是相关的)。
实际的BMP180传感器是一个微型设备,尺寸为3.6mm x 3.8mm。它可在7 PIN LGA包中使用,并通过I与微控制器进行通信2C或SPI(最终传感器中只有一个)。
传感器的一个重要点是其校准。传感器需要正确校准以产生可接受的结果。幸运的是,所有Bosch BMP180气压传感器均已出厂校准,以便它们可以使用。
BMP180模块
许多第三方模块和传感器制造商都采用了小型BMP180传感器,并设计了一个小模块,非常适合Arduino和其他DIY项目。今天可用的大多数模块使用i2C沟通。
如果您想查看BMP180模块的引脚,则将其打印在PCB的背面。此版本的传感器通过i通信2C,因此该模块仅由4个引脚组成。
- Vin
- gnd
- SCL
- SDA
模块的示意图
由于BMP180传感器在3.3V上工作,因此该模块由板载3.3V电压调节器组成,因此您可以直接从Arduino等5V板上为模块供电。如果您想要该模块的完整示意图,请查看下一个图像。
从示意图,i的SCL和SDA引脚中可以看到2C通信分别使用两个4.7kΩ电阻来升高。您不必再担心上拉电阻了。
重要的提示:那里似乎有太多的假或错误或错误校准的Bosch BM180传感器(至少根据我的经验)。我为这个项目购买了3个不同的模块(来自三个不同的供应商)。因此,从知名的卖家那里购买。
将BMP180与Arduino连接
现在,我们已经看到了一些有关BMP180传感器及其功能的信息,让我们继续进行BMP180 Arduino Connection。BMP180传感器必须是Arduino可用的最简单传感器之一。
为了开始使用BMP180,您只需要一个Arduino Uno,一个BMP180传感器,一束连接电线和PC(或笔记本电脑)。而已。您可以建立几个简单的连接,并从Arduino IDE的串行显示器上获取传感器的数据。
但是,为了使事情变得有趣,我使用了一个特定于16×2字符LCD的LCD模块,以显示传感器的结果。
这样做的原因是,您可以将这个简单的项目扩展到一个全面的气象站项目中,因为BMP180可以测量压力,温度和高度,并且通过LCD显示屏,实施气象站将更加直观。
需要组件
- Arduino Uno
- BMP180压力传感器
- 16×2 LCD
- PCF8574 i2C LCD模块(可选)
- 面包板
- 连接电线
- 面包板电源(可选)
电路原理图
下图显示了将BMP180与Arduino接口的电路图。我选择了一个我2C LCD作为传感器也基于I2C沟通。您可以查看有关接口的更多信息2c lcd与arduino这里。
代码
在进入代码之前,您必须下载BMP180传感器的库。有三个选择:
- Adafruit BMP085库
- Adafruit BMP085统一图书馆
- Sparkfun的BMP180突破Arduino图书馆
我选择了“ Adafruit BMP085库”的简单性。您总是可以尝试其他库。是的,图书馆说“ BMP085”。这是因为BMP180是上一代BMP085传感器的替代品。
在软件方面没有差异,您可以为两个传感器使用相同的库。
重要的提示:我相信即使是BMP180传感器也被Bosch停用,并由BME280取代。因此,我的下一个项目将基于BME280传感器。
要下载库,请打开Arduino IDE并转到工具 - >管理库…
在搜索栏中,键入BMP180并点击Enter。选择“ Adafruit BMP085库”,然后单击“安装”。
就代码而言,我只是使用库来读取传感器的压力和温度读数并将其显示在LCD上。
在职的
BMP180的数据表清楚地说明了如何从传感器中提取压力和温度数据。此处介绍的所有信息都是从数据表本身获取的。
下图显示了要遵循的步骤顺序以读取传感器的数据。在这里,UT是16位温度数据,UP为16位 - 19位压力数据。
在此过程中,您必须执行许多复杂的数学计算。例如,看看BMP180传感器的温度和压力所涉及的数学。
这只是完整逻辑的一部分,数据表为您提供完整的信息。
感谢Arduino库,因为它们在幕后进行了所有必要且复杂的计算,并为您提供简单的API。一些有用的API表格Adafruit BMP085库是:
- readtemperature();
- readPressure();
- readsealevelpressure();
- readaltitude();
- readrawtemperature();
- ReadRawPressure();
有关API的更多信息,请访问库的GitHub页面。
结论
在这个项目中,您了解了如何与Arduino接口BMP180传感器并测量压力和温度值。在未来的项目中,我将向您展示如何与Arduino连接更好,高级的BME280传感器。