本帖最后由 roc2 于 2018-6-13 10:10 编辑
转载自:零知lab
1、简介
不区分光源数字型环境光强度传感器BH1750FVI是日本RHOM株式会社近些年推出的一种两线式串行总线接口的集成电路,可以根据收集的光线强度数据来进行环境监测,其具有1~65535 lx的高分辨率,可支持较大范围的光强度变化。它是为适应以移动电话手机为首的便携式机器和液晶电视等的要求而开发出的具有优良光谱灵敏特性、16bit精度串行输出的单片数字照度传感器,其结构框图如下:
注:这里的光强度是以 lx,下面给出一些常见的参考数据:
晚上: 0.001-0.02;
月夜: 0.02-0.3;
多云室内: 5-50;
多云室外: 50-500;
晴天室内: 100-1000;
夏天中午光照下: 大约10*6能量;
阅读书籍时的照明度: 50-60;
家庭录像标准照明度:1400;
2、编程示例参考
BH1750工作模式有6种,分为一次型和连续型两类,两类中有分别包含高精度1,、高精度2、低精度模式,一次型模式在读取一次数据后就会进入到power down模式。几种模式的测量时间和精度如下:
根据我们自己的需求我们选用合适的测量模式即可,具体的参数寄存器配置要参考技术手册(附件中可下载)。
程序参考源码如下:
(1)初始化:
- void bh1750_init(void)
- {
- twi_init(); //I2C 初始化
- //BH1750 按照手册进行上电操作时序
- nrf_gpio_cfg_output(DVI_PIN);
- nrf_gpio_pin_clear(DVI_PIN);
- nrf_delay_us(2);
- nrf_gpio_pin_set(DVI_PIN);
-
- uint8_t write_buff[1] = {0};
-
- write_buff[0] = 0x10; //连续,高精度模式
-
- //这里我在硬件上把 ADDR 脚接地了,因此,BH1750_ADDR=0x46>>1
- twi_write(BH1750_ADDR, write_buff, 1);
- }
复制代码 (2)数据采集
- void bh1750_get_sample(void)
- {
- uint8_t read_buff[2] = {0};
复制代码
|