传感器驱动系列之BH1750光照强度传感器

目录

一、BH1750光照强度传感器简介

二、工作原理

2.1 模块寄存器地址

2.2 IIC器件地址说明

2.3 数据采集过程

三、STM32驱动源码

END


一、BH1750光照强度传感器简介

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

图1  BH1750传感器模块实物图

        BH1750传感器模块采用数字输出接口,可以通过I2C总线与微控制器或单片机进行通信。它能够测量0到65535勒克斯(Lux)范围内的光照强度,最小误差变动为±20%,并将结果以数字形式输出。传感器模块内部集成了光敏元件的放大电路和ADC转换电路,能够快速、准确地将光照强度转换为数字信号输出。

        BH1750传感器模块广泛应用于室内和室外光照强度监测、自动光照调节、照明系统控制等领域。它可以帮助实现能源节约和环境保护的目标。

二、工作原理

2.1 模块寄存器地址

        首先我们来看数据手册中的寄存器地址说明,见下图2所示。

图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示。

图3  模块器件地址说明

2.3 数据采集过程

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

图4  模块光照强度测量流程图

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

图5  连续高分辨率模式1下的数据采集时序

        根据上图可以知道,数据的读取分为三步:

  1.         1. 向器件写入读取模式的指令

        首先需要发送IIC开始信号,然后发送设备地址+写命令(0x23&

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值