您是否想知道您的遥控飞机到达的高度、您驶过的山口的海拔高度,或者您和您的远足伙伴在上次跋涉时达到了多高;廉价的MS5611气压传感器/高度计可以满足您的需求。
硬件概述 该模块的核心是一个非常小、速度极快、精确、低功耗、低噪声的气压传感器,来自瑞士MEAS – MS5611。
MS5611可以测量10mbar到1200mbar的大气压力,在450到1100mbar的压力范围内绝对精度为±1.5mbar。 在该气压范围之外,保证精度为± 2.5 mbar。
该气压传感器针对高度计和变差计进行了优化,高度分辨率为0.012mbar,相当于大约10厘米的高度。
MS5611有一个片上温度传感器,可用于补偿环境变化和校准测量值。 这是一个相当精确的温度传感器,可测量-40˚C 至 +85˚C 范围内的芯片温度,精度为±0.8˚C。
电源 该模块带有MIC5205 3.3V精密稳压器和电压电平转换器,因此您可以放心地与您最喜欢的3.3V或5V微控制器一起使用。
MS5611在测量期间功耗小于1.4mA,在待机模式下功耗小于0.15µA。 这种低功耗允许在手机、可穿戴设备或智能手表等电池驱动设备中实施。
数字接口 MS5611通过I2C或SPI进行通信。PS(协议选择)引脚决定哪个接口是可操作的。
将PS引脚拉低选择SPI接口,将PS拉高选择I2C接口。模块上有一个1K的上拉电阻将此引脚拉高,因此默认选择I2C接口。
I2C接口 传感器使用I2C接口与Arduino进行通信。 它支持两个独立的I2C地址:0x77H和0x76。 这允许两个MS5611模块在同一总线上使用或避免与总线上的另一个设备发生地址冲突。
CSB 引脚决定模块的I2C地址。 该管脚内置2.2K下拉电阻。 因此,当您不连接CSB引脚时,默认I2C地址为0x77H,当您将其连接到VCC时,该线被拉高,I2C地址变为0x76H。
SPI接口 该传感器也能够通过SPI进行通信! 要启用SPI接口,请将PS(协议选择)引脚接地。
MS5611模块引脚排列 现在让我们看一下引脚排列。
电源引脚: VCC 是电源引脚。 您可以将它连接到Arduino的5V输出。 GND 是电源和逻辑引脚的公共地。
SPI逻辑引脚: SCL 是SPI时钟引脚,它是芯片的输入。 SDA 是串行数据输入 (MOSI) 引脚,用于将数据从微控制器发送到MS5611。 CSB 是片选引脚。 SDO 是串行数据输出 (MISO) 引脚,用于将数据从MS5611发送到您的微控制器。 PS 是协议选择引脚。 将其拉低以启用SPI通信。
I2C逻辑引脚: SCL 也是I2C时钟引脚,连接到单片机I2C时钟线。 SDA 也是I2C数据引脚,连接到单片机I2 数据线。 CSB 引脚决定了模块I2C地址。 PS 是协议选择引脚。 使其悬空以启用I2C通信。
将MS5611模块连接到Arduino 现在我们已经了解了关于模块的一切,可以开始将它连接到Arduino了!
首先将VCC引脚连接到电源,3V-5V 就可以了。将GND连接到公共地。
将SCL引脚连接到I2C时钟引脚,将SDA引脚连接到Arduino上的I2C数据引脚。在Arduino UNO R3开发板上,SDA和 SCL位于靠近AREF引脚的排针上。 它们也被称为 A5 (SCL) 和 A4 (SDA)。
一旦您的模块连接到Arduino,就可以编写一些代码了!
库安装 要开始读取传感器数据,您需要安装MS5611库。 它可以从Arduino库管理器获取。
要安装库,请导航至 Sketch > Include Library > Manage Libraries…等待库管理器下载库索引并更新已安装库的列表。
输入ms5611过滤搜索结果并安装库。
Arduino代码 - 读取气压和温度 下面是一个基本的Arduino草图。 将其上传到您的Arduino。然后应该在串口监视器上看到气压值和温度值。 - #include "MS5611.h"
- MS5611 MS5611(0x77);
- void setup() {
- Serial.begin(115200);
- while(!Serial);
- if (!MS5611.begin()) {
- Serial.println("MS5611 not found, check wiring!");
- while (1);
- }
- }
- void loop() {
- MS5611.read();
- Serial.print("Temperature: ");
- Serial.print(MS5611.getTemperature(), 2);
- Serial.print("\tPressure: ");
- Serial.print(MS5611.getPressure(), 2);
- Serial.println();
- delay(1000);
- }
复制代码
请注意,您需要将串口监视器设置为115200波特率。然后会看到很多显示气压和温度值的数据。 尝试四处移动传感器并注意数据如何变化。
代码说明 代码非常简单。首先包含了MS5611.h库,在全局空间中创建了一个对象MS5611 MS5611(0x77)。 请注意,该对象是使用I2C地址作为参数构造的。 - #include <Wire.h>
- MS5611 MS5611(0x77);
复制代码
在setup()函数中,我们初始化与PC的串口通信并调用begin()函数。
MS5611.begin() 函数初始化I2C接口并检查芯片ID是否正确。 然后它使用软复位重置芯片并等待传感器在唤醒后进行校准。 - void setup() {
- Serial.begin(115200);
- while(!Serial);
- if (!MS5611.begin()) {
- Serial.println("MS5611 not found, check wiring!");
- while (1);
- }
- }
复制代码
在loop()函数中,我们调用MS5611.read() 函数来执行读取。 完成后,我们可以使用点运算符访问对象 (MS5611) 的方法。 MS5611.getTemperature() 返回温度读数。 MS5611.getPressure() 返回气压读数。 - void loop() {
- MS5611.read();
- Serial.print("Temperature: ");
- Serial.print(MS5611.getTemperature(), 2);
- Serial.print("\tPressure: ");
- Serial.print(MS5611.getPressure(), 2);
- Serial.println();
- delay(1000);
- }
复制代码
|