目录
一、BH1750光照强度传感器简介
BH1750传感器模块是一种数字光强传感器,用于测量光照强度。它基于BH1750芯片,具有高精度和快速响应的特点。其模块实物图如下图1所示:

BH1750传感器模块采用数字输出接口,可以通过I2C总线与微控制器或单片机进行通信。它能够测量0到65535勒克斯(Lux)范围内的光照强度,最小误差变动为±20%,并将结果以数字形式输出。传感器模块内部集成了光敏元件的放大电路和ADC转换电路,能够快速、准确地将光照强度转换为数字信号输出。
BH1750传感器模块广泛应用于室内和室外光照强度监测、自动光照调节、照明系统控制等领域。它可以帮助实现能源节约和环境保护的目标。
二、工作原理
2.1 模块寄存器地址
首先我们来看数据手册中的寄存器地址说明,见下图2所示。

其中上述寄存器对应编写的源码内容如下:
/* 工作命令 */
typedef enum {
BH1750_CMD_POWER_DOWN = 0x00, /* 关闭模块 */
BH1750_CMD_POWER_ON = 0x01, /* 打开模块等待测量指令 */
BH1750_CMD_RESET = 0x07, /* 重置数据寄存器值在PowerOn模式下有效 */
} ENUM_BH1750_CMD_TYPEDEF;
/* 工作模式选择 */
typedef enum {
/* 连续测量模式 */
BH1750_MODE_HR1 = 0x10, /* 高分辨率模式1 单位 1 lx 测量时间120ms */
BH1750_MODE_HR2 = 0x11, /* 高分辨率模式2 单位 0.5 lx 测量时间120ms */
BH1750_MODE_LR = 0x13, /* 低分辨率 单位 4 lx 测量时间16ms */
/* 单次测量模式 测量后模块自动转到PowerDown模式 */
BH1750_SINGLE_MODE_HR1 = 0x20,/* 一次高分辨率测量 */
BH1750_SINGLE_MODE_HR2 = 0x21,/* 一次高分辨率测量 */
BH1750_SINGLE_MODE_LR = 0x23,/* 低分辨率测量 */
} ENUM_BH1750_MODE_TYPEDEF;
2.2 IIC器件地址说明
数据手册中提到,当模块的ADDR引脚接地或悬空时器件地址为0100011(0x23),接电源正极时器件地址为1011100(0x5C)。见下图3示。

2.3 数据采集过程
由数据手册中数据测量流程图(下图4)可知,光强数据的获取主要分为上电、测量等过程。

接着我们以 ADDR位 置低电平(器件地址0x23)且工作在连续测量模式下的时序图5为例进行说明,整个采集周期的实现。

根据上图可以知道,数据的读取分为三步:
- 1. 向器件写入读取模式的指令
首先需要发送IIC开始信号,然后发送设备地址+写命令(0x23&