BH1750光照传感器
1、BH1750FVI是一种用于两线式串行总线接口的数字型光强度传感器集成电路。这种集成电路可以根据收集的光线强度数据来调整液晶或者键盘背景灯的亮度。利用它的高分辨率可以探测较大范围的光强度变化。
2、传感器特点:
- 支持I2CBUS接口
- 接近视觉灵敏度的光谱灵敏度特性
- 输出对应亮度的数字值
- 对应广泛的输入光范围。(相当于1-65535lx)
- 通过降低功率功能,实现低电流化。
- 通过50Hz/60Hz除光噪音功能实现稳定的测定。
- 支持1.8v逻辑输入接口。
- 无需其他外部件。
- 光源依赖性弱。
- 有两种可选的I2Cslave地址。
- 可调的测量结果影响较大的因素为光入口大小。
- 使用这种功能计算1.1lx到100000lx马克斯/分钟的范围。
- 最小误差变动在±20%。
- 受红外线影响很小。
3、测量程序步骤:
4、指令集合结构:
5、测量模式说明:
6、
测量流程如下(连续H分辨率模式):
- 发送设备地址(写)并等待ACK,发送高分辨率测量指令,等待ACK,停止时序。
- 等待传感器第一次测量完成。
- 读取测量结果。发送设备地址(读),读取高字节和低字节数据,等待ACK,停止时序。
测量结果为2字节(高字节High Byte和低字节Low Byte)数据,计算公式为:
光照强度(单位lx)=(High Byte + Low Byte)/ 1.2 * 测量精度
7、 Sensor_Light.c程序
#include "sensor_light.h"
#include "bsp_soft_i2c.h"
#include "bsp_systick.h"// 写传感器函数
bool BH1750_Write(uint8_t SlaveAddress, uint8_t REG_Address)
{if(!I2C2_Start()) return false;I2C2_Send_Byte(SlaveAddress);if(!I2C2_Wait_Ack()) { I2C2_Stop(); return false; }I2C2_Send_Byte(REG_Address);if(!I2C2_Wait_Ack()) { I2C2_Stop(); return false; }if(!I2C2_Stop()) return false;return true;
}// 读传感器函数
bool BH1750_Read(uint8_t SlaveAddress, uint8_t* buf, uint8_t len)
{if(!I2C2_Start()) return false;I2C2_Send_Byte(SlaveAddress | 1);if(!I2C2_Wait_Ack()) { I2C2_Stop(); return false; }for(uint16_t i=0; i<len; i++){buf[i] = I2C2_Read_Byte();if(i<len-1){I2C2_Ack();}}I2C2_NAck();if(!I2C2_Stop()) return false;return true;
}// 对传感器进行初始化
void BH1750_Init(void)
{BH1750_Write(BH1750_SlaveAddress, BH1750_ON); // 通电BH1750_Write(BH1750_SlaveAddress, RESOLUTION); // 设置分辨率
}// 从传感器获取数据
float BH1750_ReadData(void)
{uint8_t buf[2]; BH1750_Read(BH1750_SlaveAddress, buf, 2); return (float)(((uint16_t)buf[0]<<8) + buf[1]) / 1.2f * SCALE_INTERVAL;
}
7、Sensor_Light.h程序
#ifndef _SENSOR_LIGHT_H_
#define _SENSOR_LIGHT_H_#include "stm32f0xx.h"#define BH1750_SlaveAddress 0x46 // 设备地址
#define BS1750_DOWN 0x00 // 断电指令
#define BH1750_ON 0x01 // 通电指令
#define BH1750_RSET 0x07 // 重置指令
#define BH1750_CON_H 0x10 // 连续高分辨率模式,1lx,120ms
#define BH1750_CON_H2 0x11 // 连续高分辨率模式,0.5lx,120ms
#define BH1750_CON_L 0x13 // 连续低分辨率模式,4lx,16ms
#define BH1750_ONE_H 0x20 // 一次高分辨率模式,1lx,120ms
#define BH1750_ONE_H2 0x21 // 一次高分辨率模式,0.5lx,120ms
#define BH1750_ONE_L 0x23 // 一次低分辨率模式,4lx,16ms#define RESOLUTION BH1750_CON_H2 // 连续高分辨率模式,0.5lx#if RESOLUTION == BH1750_CON_H || RESOLUTION == BH1750_ONE_H#define SCALE_INTERVAL 1
#elif RESOLUTION == BH1750_CON_H2 || RESOLUTION == BH1750_ONE_H2#define SCALE_INTERVAL 0.5f
#elif RESOLUTION == BH1750_CON_L || RESOLUTION == BH1750_ONE_L#define SCALE_INTERVAL 4
#endifvoid BH1750_Init(void);
float BH1750_ReadData(void);#endif
8、主函数程序:
int main()
{SYSTICK_Init(1); // 滴答定时器初始化I2C2_Soft_Init(); // IIC初始化USART1_Init(); // 串口初始化BH1750_Init();SYSTICK_DelayMs(180);while(1){printf("Light is : %flx\r\n", BH1750_ReadData());SYSTICK_DelayMs(120);}
}
I2C通讯请参考:https://blog.csdn.net/qq_41422043/article/details/99688493
参考资料:https://wenku.baidu.com/view/57203d05856a561252d36ff6.html
BH1750光照传感器相关推荐
- BH1750 光照传感器文档详解 及 驱动设计
前言 最近接触到一个应用,需要在低功耗的产品上加上光照度采集,正好最近有接触到一款光照传感器 BH1750 ,性能价格都合适,那么今天就抽空来好好测试一下. 那么要写一篇测试文章,我会尽量以新手的角度 ...
- BH1750( GY-302 )光照传感器
文章目录 一.产品简介 二.IIC通信 三.BH1750的使用 四.程序源码 这里我先简单的介绍一下BH1750光照传感器模块的基本信息(不多废话),我将着重讲解它的使用部分,相信对于屏幕前的你也是更 ...
- STM32 驱动 GY-302 光照传感器 BH1750 模块(软件IIC与硬件IIC驱动)
1.特别说明 要是不想看原理和过程,直接下拉找代码吧,都是测试过的,很稳定,有硬件I2C驱动的,也有软件模拟I2C驱动的,基于STM32F103系列和STM32F4系列实现,基于标准库实现,条理清 ...
- CC2530下ZigBee协议栈中添加BH1750数字光照传感器
项目里需要获得光照强度,之前用的是光敏电阻,但是光敏电阻实在不精确,换用BH1750数字光照传感器.网上购买后,送的资料都是单片机的,移植到ZigBee协议栈里面,时序有些问题,在网上找的一些资料,很 ...
- 利用BH1750光度传感器测量一些发光体
简 介: 初步测试了BH1750测量一些光源的数据.特别是对于LED发光特性与电流之间的关系. 通过BH1750的数据收获册上的感光特性,它基本上覆盖了可见光的的范围. 关键词: BH1750,ESP ...
- 使用ESP32 MicroPython I2C功能读取 BH1750光度传感器模块数据
简 介: 使用ESP32读取BH1750的光度传感器的数据.但是最终不知道甚么原因,所读取的数据都是0 ? 后面通过证明,说明在原来进行I2C写的时候出现了语法错误. 关键词: BH1750,ESP3 ...
- 如何基于Arduino开发板使用BH1750环境光传感器
当您将手机放在阳光下或强光照条件下时,它会根据光线条件自动调节亮度.现在大多数显示设备,无论是电视还是手机,都内置环境光传感器来自动调节亮度.今天在本篇文章中,我们将使用一个这样的传感器BH1750光 ...
- 蓝牙MESH网关_相对于米家多模网关,其实我更爱的是光照传感器
前些日子,非常荣幸的收到了小米公测提供的米家智能多模网关和小米米家光照传感器.熟悉米家/Aqara的值友应该知道,Aqara作为米家生态链中唯一一家使用Zigbee作为产品核心技术的企业,在几年间已经 ...
- 【花雕小实验01】使用万用表测量OPT101模拟光照传感器模块
早上起来,尝试使用万用表来测量OPT101模拟光照传感器模块,这里调到直流电压20V档,模块供电5V, 正常室内光线时,测得电压为0.26V,凌晨光线很弱 用手指挡住光线,电压降为0.07V 使用台灯 ...
- 涂鸦模组开发光照传感器
涂鸦模组开发光照传感器(OPT3006) 概述 涂鸦智能 视频教学 系统框架设计 OPT3006 超薄环境光传感器 TYZS5 模组 特点 PCB绘制 涂鸦零代码开发 涂鸦模组开发文章 最后 概述 亮 ...
最新文章
- 【目录】 软件测试全栈需要学习什么? 软件测试的各个阶段 ,软件测试学习路径,软件测试方向选择,软件测试的薪资待遇。...
- kaggle中的MAP理解
- ubuntu20.04 sshd 配置root 登录
- 77种互联网盈利创新模式(3)
- 单节点hadoop部署成功
- 一个好习惯可以让自己享受一辈子
- JavaScript高级程序设计:基本概念思维导图
- 灵格斯词典(电脑端)+欧陆词典(手机端)
- 《编程珠玑》---笔记。浏览此文,一窥此书。
- nginx静态资源服务器(一)
- 欧姆龙CP1H+CIF11与施耐德ATV变频器通讯程序
- PHP为什么是最好的编程语言?
- 【CF643D】Bearish Fanpages(set)(模拟)
- mysql 添加一列_如何使用mysql在建好的表中添加一列
- 369、Java中级24 -【Spring】 2020.08.26
- 7.31 XMap
- 数据采集卡采样率M Sa/s 与G Sa/s是什么意思
- 手把手教你修改Firefox的User-Agent伪装Android微信浏览器
- 达芬奇科学特展《穿越·创新·达芬奇:超越时代的创新者》
- sofa-bolt(网络通信框架)