Arduino I2C + 气压传感器LPS25H

LPS25H是ST生产的MEMS数字气压传感器。主要特性有:
- 测量范围:260 ~ 1260 hPa绝对气压
- 分辨率:均方根1 Pa
- 工作电压:1.7 ~ 3.6 V
- 功耗:4μA(低分辨率模式)~25μA(高分辨率模式)
- 数据刷新频率:1 ~ 25 Hz可选择
- 接口:I2C,三线制/四线制SPI
- 内置温度补偿
- 内置24位ADC
- 内置先入先出(FIFO)存储器
- 封装:2.5 x 2.5 x 1.0 mm HCLGA-10L
管脚定义


- VDD:电源,1.7~3.6V
- GND:地
- VDD_IO:IO口供电脚,电压小于等于VDD
- GND_IO:IO口接地脚,需与GND相连
- Reserved:与GND相连
- CS:I2C接口(CS=1)选择,或SPI接口片选脚(CS=0)
- SCL/SPC:I2C接口或SPI接口的时钟线,通过CS脚选择
- SDA/SDI/SDIO:I2C接口或SPI接口的数据线
- SA0/SDO:I2C接口地址选择脚,或者SPI接口的数据线
- INT1:中断输出脚,可编程其触发条件,参见CTRL_REG4寄存器设置
与Arduino的连接
因为传感器IC大多工作在3.3V附近,因此干脆用工作于3.3V/8MHz版本的Arduino Pro Mini进行调试,避免了用UNO时接口电平转换的麻烦。采用I2C接口进行通讯。未利用INT1和FIFO的功能。

LPS25H Pro Mini 3.3V/8MHz
VDD <------> 3.3V
GND <------> GND
SCL <------> A5 (SCL)
SDA <------> A4 (SDA)
测试代码
/*
Barometer based on LPS25H sensor and Arduino Pro Mini(3.3V)
*/ #include <Wire.h> #define ADDRESS_LPS25H 0x5D
#define CTRL_REG1 0x20
#define CTRL_REG2 0x21
#define PRESS_OUT_XL 0x28 byte buffer[]; boolean ready = false;
int tempOut;
long presOut;
float tempVal;
float presVal; void setup()
{
Wire.begin();
Serial.begin(); //power down the device (clean start)
Wire.beginTransmission(ADDRESS_LPS25H);
Wire.write(CTRL_REG1);
Wire.write(0x00);
Wire.endTransmission(); //turn on the sensor, set the one-shot mode, and set the BDU bit
Wire.beginTransmission(ADDRESS_LPS25H);
Wire.write(CTRL_REG1);
Wire.write(0x84);
Wire.endTransmission();
} void loop()
{
//run one-shot measurement
Wire.beginTransmission(ADDRESS_LPS25H);
Wire.write(CTRL_REG2);
Wire.write(0x01);
Wire.endTransmission(); //wait until the measurement is completed
while (ready == false)
{
delay(); //conversion time: ~37ms
Wire.beginTransmission(ADDRESS_LPS25H);
Wire.write(CTRL_REG2);
Wire.endTransmission();
Wire.requestFrom(ADDRESS_LPS25H, );
if (Wire.read() == 0x00)
{
ready = true;
}
// Serial.println("waiting...");
} //read the result
Wire.beginTransmission(ADDRESS_LPS25H);
Wire.write(PRESS_OUT_XL | 0x80); //read multiple bytes
Wire.endTransmission(); Wire.requestFrom(ADDRESS_LPS25H, );
if (Wire.available() >= )
{
for (int i = ; i < ; i++)
{
buffer[i] = Wire.read();
}
}
ready = false; //calculation
presOut = (long(buffer[]) << ) | (long(buffer[]) << ) | long(buffer[]);
presOut = (presOut << ) >> ; //PRESS_OUT_H/_L/_XL and is represented as 2’s complement
presVal = presOut/4096.0; tempOut = (buffer[] << ) | buffer[];
tempVal = 42.5 + tempOut/480.0; Serial.print(presVal); Serial.print(" hPa\t");
Serial.print(tempVal); Serial.println(" `C"); delay();
}
MCU每隔两秒测量一次气压和温度数据,并通过串口打印结果。

参考资料
Arduino I2C + 气压传感器LPS25H的更多相关文章
- Arduino I2C + 三轴加速度计LIS3DH
LIS3DH是ST公司生产的MEMS三轴加速度计芯片,实现运动传感的功能.主要特性有: 宽工作电压范围:1.71 ~ 3.6V 功耗:低功耗模式2μA:正常工作模式.ODR = 50Hz时功耗11μA ...
- Arduino I2C + 温湿度传感器Si7021
Si7021是Silicon Labs生产的温湿度传感器芯片.其主要特性: 湿度精度:误差典型值+/-2%RH,最大值+/-3%RH(0~80%RH),出厂已校正 温度精度:误差典型值+/-0.3 ...
- Arduino I2C + 温湿度传感器AM2321
(2015.5.17:本日志的内容有所更新,参见<使用Arduino Wire Library读取温湿度传感器AM2321>.) AM2321是广州奥松电子生产的数字式温湿度传感器.虽是国 ...
- Arduino I2C + 三轴加速度计ADXL345
ADXL345是ADI公司生产的三轴数字加速度计芯片,与ST的LIS3DH功能接近.主要特性有: 工作电压:2.0 ~ 3.6V 功耗:待机功耗0.1μA:工作时与数据输出频率(ODR)有关,如ODR ...
- Arduino I2C + 温湿度传感器HTS221
主要特性 HTS221是意法半导体(STMicroelectronics)生产的小体积.数字式温湿度传感器IC.该IC目前在官网仍处在“评估”状态.其主要特性: 工作电压:1.7~3.6V 数据输出频 ...
- Arduino I2C + AC24C32 EEPROM
主要特性 AC24C32是Atmel的两线制串行EEPROM芯片,根据工作电压的不同,有-2.7.-1.8两种类型.主要特性有: 工作范围:-2.7类型范围4.5~5.5V,-1.8类型1.8~5.5 ...
- Arduino I2C + DS1307实时时钟
主要特性 DS1307是Maxim的串行.I2C实时时钟芯片.主要特性有: 工作电压:主电源电压4.5~5.5V,电池电压2.0~3.5V 功耗:电池供电.备份模式时<500nA 接口:I2C, ...
- Arduino I2C + 数字式环境光传感器BH1750FVI
BH1750FVI是日本罗姆(ROHM)半导体生产的数字式环境光传感IC.其主要特性有: I2C数字接口,支持速率最大400Kbps 输出量为光照度(Illuminance) 测量范围1~65535 ...
- Arduino通过I2C(SSD1306)驱动0.96寸12864OLED
I2C驱动的128x64 OLED I2C (Inter-Integrated Circuit) 集成电路总线是I2CBus的简称, 是一种串行通信总线, 使用多主从架构. 飞利浦公司在1980年代为 ...
随机推荐
- YUV图像合成原理<转>
YUV图像合成原理 引言:在视频监控中最常用的就是图像拼接和字符叠加,25FPS的视频流,如果每隔40MS就从各个通道中取一幅图像来合成,则可以看到一个实时的合成视频.合成的过程也就是原始图像的拼接. ...
- dart 命名规范
1.类型 首字母大写 譬如 abstract class Shape 2.变量 驼峰式命名,首字母小写 class Article { String headUrl; String user; Str ...
- Python编辑器IDLE傻瓜入门
转自:http://bbs.csdn.net/topics/390451617 下载python进行安装,默认自带此工具开始->程序->Python 2.*/3.*-> IDLE ( ...
- quartz的配置文件
quartz在运行时默认加载的是工程目录下的quartz.properties文件,如果工程目录下没有quartz.properties文件,它就会去读取quartz jar包下的quartz.pro ...
- java 蓝桥杯基础练习 01字串 进制转换
问题描述 对于长度为5位的一个01串,每一位都可能是0或1,一共有32种可能.它们的前几个是: 请按从小到大的顺序输出这32种01串. 输入格式 本试题没有输入. 输出格式 输出32行,按从小到大的顺 ...
- git 撤销 merging
当我们在合代码的时候经常会遇到一些问题,这时候分支就处于merging状态,这时候可以用下面的命令撤销 $ git reset --hard HEAD (or sha_1) 不知道有没有更好的办法,希 ...
- Excel VBA入门(七)注释、宏按钮及错误处理
系统性的知识前面已经讲完,从本章开始,本系列教程涉及的将会是一些相对凌散的内容. 1. 注释 代码注释是一件利人利己的事,为了方便自己在代码需要更新修改时,依然能够快速地看懂自己完的每一行代码到底是什 ...
- 01-MySQL优化大的思路
首先不是看它的表结构等等.从整体上去观察,不断去看它的状态.这个状态往往不是一两个小时可以看出来的,得写一个脚本,观察它的24小时的周期性变化,不断刷新它的脚本,观察它的Status.主要是看它有没有 ...
- 【HDU4405】Aeroplane_chess
题意 飞行棋.有n+1格,开始时在0号格子,每一步都要扔一个dice(六个面,概率相同)哪一面朝上他就会向前走x+i步.当x+i大于等于N的时候,游戏结束.另外,地图上有m条航线.第i条航线可以直接从 ...
- Spring在代码中获取bean的几种方式(转)
获取spring中bean的方式总结: 方法一:在初始化时保存ApplicationContext对象 ApplicationContext ac = new FileSystemXmlApplica ...