标题: 【Arduino】108种传感器模块系列实验(129)---BH1750光照传感器 [打印本页]
作者: eagler8 时间: 2019-9-22 15:20
标题: 【Arduino】108种传感器模块系列实验(129)---BH1750光照传感器
37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手试试做实验,不管成功与否,都会记录下来---小小的进步或是搞不定的问题,希望能够抛砖引玉。
【Arduino】108种传感器模块系列实验(资料+代码+图形+仿真)
实验一百二十九:GY-302 数字量光强度检测 光照传感器 BH1750FVI 光线检测模块
作者: eagler8 时间: 2019-9-27 18:20
作者: eagler8 时间: 2019-9-27 18:25
作者: eagler8 时间: 2019-9-27 18:28
作者: eagler8 时间: 2019-9-27 18:32
作者: eagler8 时间: 2019-9-27 18:36
作者: eagler8 时间: 2019-9-27 18:40
模块描述
1 ROHM原装BH1750FVI芯片
2.电源:3-5v
3.光强范围:0-65535 lx
4.传感器内置16bitAD转换器
5.直接数字输出,省略复杂计算,省略校准
6.不区分环境光,接近光谱特性的视觉灵敏度
7.可以在很宽的亮度范围内进行1 lux的高精度测量
8.标准NXP IIC通信协议
9.模块包含通信级转换,5v微控制器直接连接
作者: eagler8 时间: 2019-9-27 18:44
模块电原理图
作者: eagler8 时间: 2019-9-27 18:57
光亮度
光亮度(luminance)又称发光率,是指一个表面的明亮程度,以L表示, 即从一个表面反射出来的光通量。或者说是指在某方向上单位投影面积的面光源沿该方向的发光强度。不同物体对光有不同的反射系数或吸收系数。光亮度是表示发光面明亮程度的,指发光表面在指定方向的发光强度与垂直于指定方向的发光面的面积之比,单位是坎德拉/平方米。对于一个漫散射面,尽管各个方向的光强和光通量不同,但各个方向的亮度都是相等的。电视机的荧光屏就是近似于这样的漫散射面,所以从各个方向上观看图像,都有相同的亮度感。亮度和照度的关系,最常用的照度单位是呎烛光(footcandle)。1呎烛光是在距离标准烛光一英尺远的一平方英尺平面上接受的光通量。如果按公制单位,则以米为标准,照度就用米烛光(metrecandle)来表示,即1米烛光是距离标准烛光一米远的一平方米面积上的照度。
1米烛光等于0.0929呎烛光。
我们不难理解亮度和照度之间的关系,其关系为:
L=R×E
式中L为亮度,R为反射系数,E为照度。
因此,当我们知道一个物体表面的反射系数及其表面的照度时,便可推算出它的亮度。
作者: eagler8 时间: 2019-9-27 19:05
BH1750FVI是日本罗姆(ROHM)半导体生产的数字式环境光传感IC。其主要特性有:
- I2C数字接口,支持速率最大400Kbps
- 输出量为光照度(Illuminance)
- 测量范围1~65535 lux,分辨率最小到1lux
- 低功耗(Power down)功能
- 屏蔽50/60Hz市电频率引起的光照变化干扰
- 支持两个I2C地址,通过ADDR引脚选择
- 较小的测量误差(精度误差最大值+/-20%)
作者: eagler8 时间: 2019-9-27 19:18
- /*
- 【Arduino】108种传感器模块系列实验(资料+代码+图形+仿真)
- 实验一百二十九:GY-302 数字量光强度检测 光照传感器 BH1750FVI 光线检测模块
- 项目:测试环境光亮度
- Module UNO
- 5 VCC —— 5V
- 6 GND —— GND
- 7 SCL —— A5
- 8 SDA —— A4
- 9 ADD —— NC
- */
- #include <Wire.h>
- #define ADDRESS_BH1750FVI 0x23 //ADDR="L" for this module
- #define ONE_TIME_H_RESOLUTION_MODE 0x20
- //One Time H-Resolution Mode:
- //Resolution = 1 lux
- //Measurement time (max.) = 180ms
- //Power down after each measurement
-
- byte highByte = 0;
- byte lowByte = 0;
- unsigned int sensorOut = 0;
- unsigned int illuminance = 0;
- void setup()
- {
- Wire.begin();
- Serial.begin(115200);
- }
-
- void loop()
- {
- Wire.beginTransmission(ADDRESS_BH1750FVI); //"notify" the matching device
- Wire.write(ONE_TIME_H_RESOLUTION_MODE); //set operation mode
- Wire.endTransmission();
-
- delay(180);
-
- Wire.requestFrom(ADDRESS_BH1750FVI, 2); //ask Arduino to read back 2 bytes from the sensor
- highByte = Wire.read(); // get the high byte
- lowByte = Wire.read(); // get the low byte
-
- sensorOut = (highByte<<8)|lowByte;
- illuminance = sensorOut/1.2;
- Serial.print(illuminance); Serial.println(" lux");
-
- delay(1000);
- }
复制代码
作者: eagler8 时间: 2019-9-27 19:23
光亮度数据参考
晚上: 0.001-0.02;
月夜: 0.02-0.3;
多云室内: 5-50;
多云室外: 50-500;
晴天室内: 100-1000;
夏天中午光照下: 大约10*6能量;
阅读书籍时的照明度:50-60;
家庭录像标准照明度:1400
作者: eagler8 时间: 2019-9-27 19:33
作者: eagler8 时间: 2019-9-27 19:36
打开台灯后的光亮度波形,提高了400多倍
|
作者: eagler8 时间: 2019-9-27 19:39
作者: eagler8 时间: 2019-9-27 19:50
作者: eagler8 时间: 2019-9-27 19:51
作者: eagler8 时间: 2019-9-27 20:07
欢迎光临 (http://www.51hei.com/bbs/) |
Powered by Discuz! X3.1 |