目录

  • BH1750光照传感器篇
  • 1、产品介绍
    • (1)概述:
    • (2)特点:
    • (3)引脚定义:
  • 2、测量程序流程
    • (1)发送断电指令
    • (2)发送通电指令
    • (3)发送测量指令
    • (4)读取测量结果

BH1750光照传感器篇

这里推荐一位博主写的这个传感器的文章,可以看下

文章链接

1、产品介绍

(1)概述:

BH1750FVI 是一种用于两线式串行总线接口的数字型光强度传感器集成电路。这种集成电路可以根据收集的光线强度数据来调整液晶或者键盘背景灯的亮度。利用它的高分辨率可以探测较大范围的光强度变化( 1lx-65535lx)。这个模块可以接入3.3~5v的电压

它常常应用在移动电话,液晶电视,笔记本电脑,便携式游戏机,数码相机,数码摄像机,汽车定位系统,液晶显示器等上面。

(2)特点:

这里只列举一些特点,详细说明请参考芯片手册:

【BH1750芯片手册】

 1. 支持 I2C BUS 接口(f/s Mode Support)。2. 输出对应亮度的数字值。(范围: 1-65535lx)3. 有两种可选的 I2C 从设备 地址(即一根IIC上可以最多接入两个这种传感器)。4. 最小误差变动在± 20%。5. 受红外线影响很小。

(3)引脚定义:


我们对这个芯片有了简单的了解后,接下来我们该考虑如何控制这个模块,从而获取出光照值了。从芯片手册中我们可以知道它支持IIC总线接口,即我们可以通过IIC总线使MCU和传感器之间进行收发数据。至于IIC的知识可以看下博主的这篇文章 【IIC总线篇】,这里就不在进行过多的叙述。

2、测量程序流程


从芯片手册中的图可知,要想测量出关照值,只用按照上面的步骤执行就行。
前提:芯片先供电,然后依次发送【断电—>通电—>测量指令—>进行测量】的指令即可即可。那我怎么去找这些指令呢?其实万能的芯片手册就告诉我们了,请看相关指令部分截图:

这些指令该如何通过单片机发送给这个芯片呢?芯片手册中也说过是通过IIC总线进行数据收发的。所以我们只用严格按照IIC总线协议格式,按照上面步骤依次发送相关指令就可以了。

注意上面流程图中的测量指令指的是分辨率模式,简单区别如下:

至于其它详细的区别,请看数据手册。

(1)发送断电指令

芯片手册中有说明芯片的地址

指令发送格式:

软件代码如下:

//函数功能:用于向芯片发送数据
//函数参数:具体的指令数据
void Bh1750Write(unsigned char dat)
{I2cStart();            //发送开始信号I2cSendByte(0x46);  //发送器件地址和写方向I2cSendByte(dat);   //发送要写入的数据(各种指令,包括通电、分辨率模式的等),具体参考芯片手册I2cStop();           //停止本次通信
}

所以要发送断电指令只需要调用上面的函数即可:

Bh1750Write(0x00);

(2)发送通电指令

同上,同理可得发送通电指令只需要调用上面的函数即可:

Bh1750Write(0x01);

(3)发送测量指令

测量指令,我这里选择的芯片手册推荐的连续高分辨率模式。

同上,同理可得发送通电指令只需要调用上面的函数即可:

Bh1750Write(0x10);

!!!注意,发送测量指令后不能马上去读数据,因为要等待一定的时间让芯片测量数据,这个时间在芯片手册中也有说明,测量时间最大为180us.所以我们在发送测量指令后,最好必须严格等待180us以上的时间,以保证数据正确和稳定
**

(4)读取测量结果


注意:取得16位数据后,需要对数据进行合并,然后根据官方的公式得到最终的数据——即为实际的光照值。

软件代码如下:

void Bh1750Read(unsigned char *str)
{unsigned int dat,i;float num;unsigned char sbuf[2];I2cStart();         //发送开始信号I2cSendByte(0x47);  //发送器件地址和读方向    for(i=0;i<2;i++)      //开始读取数据,bh1750一次会发送16位数据,所以要接收两次{sbuf[i]=I2cReadByte();}I2cStop();          //停止本次通信dat=sbuf[0];dat=(dat<<8)+sbuf[1];  //合成16位数据num=(float)dat/1.2;       //根据芯片手册的具体公式得到最终值dat=num;//下面将数字分离每位后保存到数组str[0]=dat/10000+0x30;dat=dat%10000;str[1]=dat/1000+0x30;dat=dat%1000;    str[2]=dat/100+0x30;dat=dat%100;    str[3]=dat/10+0x30;dat=dat%10;      str[4]=dat+0x30; }

最后附上最简单的工程代码(就串口打印光照值),里边有两份,一份是网上的,一份是我自己写的。代码简洁、注释详细、便于学习:

【BH1750源代码】

单片机——BH1750光照传感器篇相关推荐

  1. BH1750 光照传感器文档详解 及 驱动设计

    前言 最近接触到一个应用,需要在低功耗的产品上加上光照度采集,正好最近有接触到一款光照传感器 BH1750 ,性能价格都合适,那么今天就抽空来好好测试一下. 那么要写一篇测试文章,我会尽量以新手的角度 ...

  2. BH1750( GY-302 )光照传感器

    文章目录 一.产品简介 二.IIC通信 三.BH1750的使用 四.程序源码 这里我先简单的介绍一下BH1750光照传感器模块的基本信息(不多废话),我将着重讲解它的使用部分,相信对于屏幕前的你也是更 ...

  3. STM32 驱动 GY-302 光照传感器 BH1750 模块(软件IIC与硬件IIC驱动)

    1.特别说明 ​ 要是不想看原理和过程,直接下拉找代码吧,都是测试过的,很稳定,有硬件I2C驱动的,也有软件模拟I2C驱动的,基于STM32F103系列和STM32F4系列实现,基于标准库实现,条理清 ...

  4. CC2530下ZigBee协议栈中添加BH1750数字光照传感器

    项目里需要获得光照强度,之前用的是光敏电阻,但是光敏电阻实在不精确,换用BH1750数字光照传感器.网上购买后,送的资料都是单片机的,移植到ZigBee协议栈里面,时序有些问题,在网上找的一些资料,很 ...

  5. 51lcd显示光传感器c语言程序,基于51单片机1602液晶显示GY-30数字光照传感器BH1750FVI程序实例...

    基于51单片机1602液晶显示GY-30数字光照传感器BH1750FVI程序实例,系统由GY-30数字光照传感器.51单片机最小系统.1602液晶显示屏组成,电路简单,附件中的程序是实物验证过了的.1 ...

  6. 利用BH1750光度传感器测量一些发光体

    简 介: 初步测试了BH1750测量一些光源的数据.特别是对于LED发光特性与电流之间的关系. 通过BH1750的数据收获册上的感光特性,它基本上覆盖了可见光的的范围. 关键词: BH1750,ESP ...

  7. 使用ESP32 MicroPython I2C功能读取 BH1750光度传感器模块数据

    简 介: 使用ESP32读取BH1750的光度传感器的数据.但是最终不知道甚么原因,所读取的数据都是0 ? 后面通过证明,说明在原来进行I2C写的时候出现了语法错误. 关键词: BH1750,ESP3 ...

  8. 如何基于Arduino开发板使用BH1750环境光传感器

    当您将手机放在阳光下或强光照条件下时,它会根据光线条件自动调节亮度.现在大多数显示设备,无论是电视还是手机,都内置环境光传感器来自动调节亮度.今天在本篇文章中,我们将使用一个这样的传感器BH1750光 ...

  9. 高精度光照传感器基本介绍

    高精度光照传感器基本介绍 光照传感器内部采用了目前光照采集方面灵敏度较高的光敏采集器件,该器件拥有灵敏度高,响应迅速等诸多优点.内部还配有滤光片,余弦修正器,配合高精度的模拟电路,以及程序处理,对光照 ...

  10. 利用arduino nano开发板配合oled、温度传感器、光照传感器、湿度传感器设计一个花盆

    利用arduino nano开发板配合oled.温度传感器.光照传感器.湿度传感器设计一个花盆 完整项目地址: https://github.com/linxinloningg/arduino_chi ...

最新文章

  1. 几种开源工作流引擎的简单比较(转)
  2. 字节跳动的5条远程办公最佳实践
  3. 【AI初识境】深度学习中常用的损失函数有哪些?
  4. 如何打造不怕被嗅探的3389登陆
  5. unittest测试框架详谈及实操(四)
  6. 苹果自研5G调制解调器将在2023年量产 采用台积电4nm工艺
  7. Java学习笔记四——运算符
  8. 刘意-java基础视频(API-网络编程)笔记
  9. CreateFile函数详解 不仅仅是对文件的操作 还有对系统设备的IO的操作
  10. Sencha touch 开发指南
  11. 龙的结构图解_地下城与龙的最佳数字工具
  12. Unity打造科技风智慧城市夜景教程
  13. JavaScriptJQuery_jQuery选择器
  14. OAI 5G NR搭建gNB和UE(更新中)
  15. 怎么视频转语音更快速?视频转语音方法分享
  16. 开始菜单中计算机栏里没有桌面,有效快速解决电脑桌面开始菜单不见了
  17. 方大九钢携手图扑软件:数字孪生“高精尖”智慧钢厂
  18. BAT面试算法精品课直通BAT面试算法精品课购买优惠码-牛客网
  19. CCNA 教学 大纲 50小时 CCNA www.91xueit.com 视频教学下载 同样的CCNA不一样的感觉
  20. 【EasyUI篇】Accordion分类组件

热门文章

  1. 免费网页版PS,太好用了
  2. 鸿蒙系统多屏协同,华为EMUI 11支持畅连、多屏协同等功能,与鸿蒙设备实现交互...
  3. 软件测试的艺术_读书笔记(一)
  4. Python模拟随机游走
  5. Python OS模块操作文件目录
  6. (初学笔记1)python读多波段遥感影像并存到三维数组中
  7. Git 修改历史 commit 提交信息
  8. php composer.phar install,解决composer.phar安装问题
  9. HDFS与HBASE的动态节点的扩容(增删)小白级(一)
  10. 同事把实数作为 HashMap 的key,领导心态崩了