Arduino I2C + 数字式环境光传感器BH1750FVI

BH1750FVI是日本罗姆(ROHM)半导体生产的数字式环境光传感IC。其主要特性有:

  • I2C数字接口,支持速率最大400KHz
  • 输出量为光照度(Illuminance)
  • 测量范围1~65535 lux,分辨率最小到
  • 低功耗(Power down)功能
  • 屏蔽50/60Hz市电频率引起的光照变化干扰
  • 支持两个I2C地址,通过ADDR引脚选择
  • 较小的测量误差(精度误差最大值+-20%)

电路连接

由于模块本身已经带有了3.3V稳压芯片和I2C电平转换电路,因此可将模块直接与UNO板的I2C接口相连。对于UNO板,I2C总线的SDA信号线对应A4管脚,SCL时钟线对应A5管脚。

功能测试

BH1750FVI支持单次或连续两种测量模式,每种测量模式又提供了0.5lux、1lux、4lux三种分辨率供选择。分辨力越高,一次测量所需的时间就越长。在单次测量模式时,每次测量之后传感器都自动进入Power Down模式。

以下代码测试了传感器在One Time H-Resolution Mode模式时的功能。

 1 /*
 2 Measurement of illuminance using the BH1750FVI sensor module
 3 Connection:
 4 Module        UNO
 5 VCC    <----->    5V
 6 GND    <----->    GND
 7 SCL    <----->    A5
 8 SDA    <----->    A4
 9 ADD    <----->    NC
10
11 */
12 #include <Wire.h>
13
14 #define ADDRESS_BH1750FVI 0x23    //ADDR="L" for this module
15 #define ONE_TIME_H_RESOLUTION_MODE 0x20
16 //One Time H-Resolution Mode:
17 //Resolution = 1 lux
18 //Measurement time (max.) = 180ms
19 //Power down after each measurement
20
21 byte highByte = 0;
22 byte lowByte = 0;
23 unsigned int sensorOut = 0;
24 unsigned int illuminance = 0;
25
26
27 void setup()
28 {
29     Wire.begin();
30     Serial.begin(115200);
31 }
32
33 void loop()
34 {
35     Wire.beginTransmission(ADDRESS_BH1750FVI); //"notify" the matching device
36     Wire.write(ONE_TIME_H_RESOLUTION_MODE);     //set operation mode
37     Wire.endTransmission();
38
39     delay(180);
40
41     Wire.requestFrom(ADDRESS_BH1750FVI, 2); //ask Arduino to read back 2 bytes from the sensor
42     highByte = Wire.read();  // get the high byte
43     lowByte = Wire.read(); // get the low byte
44
45     sensorOut = (highByte<<8)|lowByte;
46     illuminance = sensorOut/1.2;
47     Serial.print(illuminance);    Serial.println(" lux");
48
49     delay(1000);
50 }

参考资料

什么是“光照度(Illuminance)”BH1750FVI DatasheetArduino - Wire LibraryI2C Tutorial - SparkFun

时间: 2024-10-27 13:20:54

Arduino I2C + 数字式环境光传感器BH1750FVI的相关文章

Arduino I2C + 温湿度传感器HTS221

主要特性 HTS221是意法半导体(STMicroelectronics)生产的小体积.数字式温湿度传感器IC.该IC目前在官网仍处在“评估”状态.其主要特性: 工作电压:1.7~3.6V 数据输出频率(ODR)可设:1Hz ~ 12.5Hz 低功耗:2μ[email protected] ODR 温度精度:给出误差典型值+/-0.5°C, 15~40°C:但注明“Typical specifications are not guaranteed.”.无误差最大值信息. 湿度精度:给出误差典型值

Arduino I2C + 气压传感器LPS25H

LPS25H是ST生产的MEMS数字气压传感器,一些文档里也叫LPS331AP.主要特性有: 测量范围: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

如何选择一款环境光传感器

随着近年来在半导体模拟传感器和封装上的进步,现在的最终用户在光传感器上有了更广的选择余地.今天,设计者在消费类产品.汽车.医疗和工业应用中使用了比以往更多的光传感器.这主要有几个原因,包括改进的适光响应.小占位.低功耗.高集成度和易用.通常根据设计者和应用所需要的功能性.性能和环境功能性进行具体的选型. 有几个关键的技术因素可以帮助用户和设计者决定如何选择一款环境光传感器.首先,传感器的输出必须和光强成线性关系,光谱波长敏感度应该非常接近人眼.另外,器件的输出应该直接和照射在集成的光敏二极管上的

Arduino周边模块:传感器部件(温敏、光敏、湿敏)

Arduino周边模块:传感器部件(温敏.光敏.湿敏) Arduino的模数转换 对于Arduino来说,它只认识数字量,模拟量对其来说就是一门"外语". 模拟量:时间与数值上均是连续的物理量. 数字量:时间与数值上均是离散的物理量. 而模数转换电路能够将模拟量转化为数字量. 模数转换原理: 时间上的离散--采样 每隔一定的时间,就对模拟量的大小进行采集.采样的频率越高,模数转换的效果也就越好.一般采样的频率要大于信号频率的两倍. 数值上的离散--量化与编码 例如:3位精度的模数转换器

Arduino连接SHT10温湿度传感器--返回值不正常解决办法

如题目,arduino中连接温湿度传感器,用的是一个github开源项目,地址:点击打开,其实这个就是一个封装好的库,下载后把解压的文件夹复制到Arduino目录下的librarys文件夹内,重启Arduino,到此就算是到库成功了.下面看电路连接图: 注意DATA和SCK两个脚对于Arduino上的数字引脚,在写程序的时候要用到,如图所示:将 SHT15 的 Data 脚接到 pin11, SCK 接到 pin10 电路图片: 导入库的路径: 其实库里面提供了一个实例代码,你可以直接拿过来使用

【Arduino】37种传感器系列实验(4)---振动传感器模块

---恢复内容开始--- 37款传感器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的.鉴于本人手头积累了一些传感器,依照实践(动手试试)出真知的理念,以学习和交流为目的,这里准备逐一做做实验,不管能否成功,都会记录下来---小小的进步或是搞不掂的问题,希望能够抛砖引玉. 实验四:振动传感器模块 手头这模块的实物照片 核心是sw-18015p(18010p) 高灵敏振动传感器 滚珠开关也叫钢珠开关,珠子开关,其实都是震动开关的一种只是叫法不一样是通过珠子滚动接触

【Arduino】66种传感器系列实验(5)---热敏温度传感器模块

37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的.鉴于本人手头积累了一些传感器模块,依照实践(动手试试)出真知的理念,以学习和交流为目的,这里准备逐一做做实验,不管能否成功,都会记录下来---小小的进步或是搞不掂的问题,希望能够抛砖引玉. 实验五:热敏电阻温度传感器模块 手头这模块的实物照片 热敏电阻器是敏感元件的一类,按照温度系数不同分为正温度系数热敏电阻器(PTC)和负温度系数热敏电阻器(NTC).热敏电阻器的典型特点是对温度敏感,不同的温

Arduino I2C + 温湿度传感器Si7021

  Si7021是Silicon Labs生产的温湿度传感器芯片.其主要特性: 湿度精度:误差典型值+/-2%RH,最大值+/-3%RH(0~80%RH),出厂已校正 温度精度:误差典型值+/-0.3%°C,最大值+/-0.4%°C(-10°C~85°C),出厂已校正 测量范围:温度范围0~100%RH:温度范围最大-40°C~125°C 工作电压:1.9~3.6V 低功耗:工作时150μA,待机时60nA 接口:I2C,最大速率支持400kbps 长期稳定性:湿度≤0.25%RH/yr,温度≤

Arduino I2C + DS1307实时时钟

主要特性 DS1307是Maxim的串行.I2C实时时钟芯片.主要特性有: 工作电压:主电源电压4.5~5.5V,电池电压2.0~3.5V 功耗:电池供电.备份模式时<500nA 接口:I2C,最大速率100kbps 可编程方波输出 电源自动切换.失效检测 内置56字节大小.支持电池备份的RAM 管脚定义 X1.X2: 接32.768kHz晶体,要求晶体负载电容12.5pF Vcc:主电源,范围4.5~5.5V.当需要对DS1307读写时,需要接Vcc. VBAT:接电池,范围2.0~3.5V.