介绍板载BH1750数字光传感器专用IC—GY-30模块的使用

MEMS/传感技术

1292人已加入

描述

光敏电阻是常用的光感元件,但是其感应范围比较窄,响应速度慢,且受外界干扰较大。要接收强光时,需要更加精准的数字光照传感器。本篇介绍GY-30模块的使用,其板载BH1750数字光传感器专用IC。

1. 光强传感器介绍

GY-30模块基于BH1750FVI芯片,模块采用IIC通讯方式,内置16bit ADC转换器,可以直接数字输出,光照强度范围:0~65525 lx,勒克斯「lux,通常简写为lx」是照度的国际单位。

主要特点

  • 内置16Bit ADC转换器。
  • IIC通讯协议,直接输出数字量。
  • 供电:3~5V。
  • 范围:0~65535lx。
  • 不区分环境光源,接近视觉灵敏度的分光特性。
  • 板载通信电平转换。

2. 实验材料

  • Uno R3开发板
  • 配套USB数据线
  • 面包板及配套连接线
  • 数字光强传感器GY-30模块

3. 实验步骤

1. 根据原理图搭建电路图。

GY-30模块的VCC、GND分别连接开发板的5V、GND,模块的SDA、SCL分别连接开发板的A4、A5引脚,模块的ADD引脚不连接。

实验原理图如下图所示:

光照传感器

实验原理图

2. 新建sketch,拷贝如下代码替换自动生成的代码并进行保存。

1/*
 2 * BH1750
 3 * 数字光照传感器实验
 4 */
 5
 6#include < Wire.h > //IIC
 7
 8int BH1750address = 0x23;
 9byte buff[2];
10uint16_t val = 0;
11
12void setup()
13{
14  Wire.begin();
15  BH1750_Init(BH1750address);
16  Serial.begin(9600);
17}
18
19void loop()
20{
21  if (2 == BH1750_Read(BH1750address))
22  {
23    if (buff[0] == 255 && buff[1] == 255)
24    {
25      val = 65535;
26    } else {
27      val = ((buff[0] < < 8) | buff[1]) / 1.2; //芯片手册中规定的数值计算方式
28    }
29
30    Serial.print(val, DEC);
31    Serial.println("[lx]");
32  }
33  delay(500);
34}
35
36int BH1750_Read(int address) 
37{
38  int i = 0;
39  Wire.beginTransmission(address);
40  Wire.requestFrom(address, 2);
41  while (Wire.available())
42  {
43    buff[i] = Wire.read();  // receive one byte
44    i++;
45  }
46  Wire.endTransmission();
47  return i;
48}
49
50void BH1750_Init(int address)
51{
52  Wire.beginTransmission(address);
53  Wire.write(0x10);
54  Wire.endTransmission();
55}

3. 连接开发板,设置好对应端口号和开发板类型,进行程序下载。

光照传感器

程序下载

4. 实验现象

打开串口监视器,波特率设置成与程序中相一致的9600。监视器中将显示环境光强度,可以通过遮挡或照射模块来改变光强度。

光照传感器

实验现象

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分