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

Posted 卓晴

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了利用BH1750光度传感器测量一些发光体相关的知识,希望对你有一定的参考价值。

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

关键词 BH1750ESP32MicroPython

 

§01 BH1750传感器


一、BH1750读写接口

1、早期实验

  在 使用ESP32 MicroPython I2C功能读取 BH1750光度传感器模块数据 利用 ESP32 MicroPython实验模块BH1750 进行读写。更早之前,使用 STC单片机完成对于 BH1750 模块读写

2、模块连线

  使用PIN4的扁平电缆制作了连接两个模块的引线。引线的接口功能定义为:

【表1-1 BH1750接口定义】

PIN1PIN2PIN3PIN4
VCC(3.3V ~ 5V)GNDSDASCL

  注: 模块的AD0=VCC

▲ 图1.1.1 BH1750模块与连接线

二、实验方法

1、数据读取

(1) 读取数据平台

  利用 基于USR-WiFi模块的 ESP32,ESP8266 Thonny调试器 读取BH1750的数据。

▲ 图1.2.1 ESP32 MicroPython WiFi数据模块

(2) 读取代码

from machine                import Pin,SoftI2C,Timer
import time
i2c = SoftI2C(scl=Pin(16), sda=Pin(17), freq=100000)
str = i2c.scan()[0]
print('%x'%str)

BH1750_CMD_POWERDOWN        = 0x0
BH1750_CMD_POWERON          = 0x1
BH1750_CMD_RESET            = 0x7
BH1750_CMD_H_RESOLUTION     = 0x10
BH1750_CMD_H_RESOLUTION2    = 0x11
BH1750_CMD_L_RESOLUTION     = 0x13
BH1750_CMD_ONETIME_H        = 0x20
BH1750_CMD_ONETIME_H2       = 0x21
BH1750_CMD_ONETIME_L        = 0x23

BH1750_I2C_ADD  = str

buf = bytearray(1)
buf[0] = BH1750_CMD_H_RESOLUTION

i2c.writeto(BH1750_I2C_ADD, buf)
time.sleep_ms(200)

while True:
    buf = i2c.readfrom(BH1750_I2C_ADD, 0x2)
    data = buf[0] * 256 + buf[1]
    print(data)
    time.sleep_ms(200)

三、可见光波长

1、可见光波长

  根据 What is the visible light spectrum? 中给出可见光的波长范围: 380 ~ 700 nm。

▲ 图1.3.1 可见光的波长范围

2、测量传感器频率特性

▲ 图1.3.2 BH1750测量特性

 

§02 量光度


一、测量LED光度

1、测试方式

▲ 图2.1.1 测量电路

2、测量红色LED

(1) 测量代码

from headm import *
from tsmodule.tsvisa        import *

def thonnycmd(cmd):
    tspsendwindowkey('Thonny', 's', alt=1, noreturn=1)
    tspsendwindowkey('Thonny', '%s
'%cmd, noreturn=1)

def thonnyshs(cmd='', wait=0):
    tspsendwindowkey('Thonny', 's', alt=1, noreturn=1)
    if len(cmd) > 0:
        tspsendwindowkey('Thonny', '%s\\r'%cmd, noreturn=1)
    if wait > 0:
        time.sleep(wait)
    tspsendwindowkey('Thonny', 'ac', control=1, noreturn=1)
    tspfocuswindow('TEASOFT:1')
    return clipboard.paste()

def thdata():
    pastestr = thonnyshs('', 0.1).split('\\r\\n')
    strdim = [s for s in pastestr if len(s) > 0]

    return int(strdim[-1])

setv = linspace(0, 12, 100)
idim = []
ddim = []

for v in setv:
    dh1766volt(v)
    time.sleep(0.5)
    data = thdata()
    curr = dh1766curr()

    printff(v, data, curr)
    idim.append(curr)
    ddim.append(data)

    tspsave('measure', setv=setv, idim=idim, ddim=ddim)

dh1766volt(3)
plt.plot(idim, ddim)
plt.xlabel("Current(A)")
plt.ylabel("Data")
plt.grid(True)
plt.tight_layout()
plt.show()

(2) 测量结果

▲ 图2.1.2 LED电流与光度数据

2、绿色LED

▲ 图2.1.3 LED电流与光度数据

二、测量发热电阻

  电阻通过电流会发热,也会发送红外线。

1、测量方式

▲ 图2.2.1 使用100Ω放在BH1750附近

  使用BH1766提供 15V电压施加在100Ω的功率电阻上。获得2.25W功率,电阻温度升高。

2、测试结果

  读取结果始终为 0


■ 相关文献链接:

● 相关图表链接:

以上是关于利用BH1750光度传感器测量一些发光体的主要内容,如果未能解决你的问题,请参考以下文章

CC2530+BH1750光敏传感器获取光照强度

( zigbee)CC2530+BH1750光敏传感器获取光照强度

(二十九)树莓派3B+ 获取BH1750FVI光强度传感器数据

ESP32学习笔记(18)——光强度GY-30(BH1750)使用

HI3861学习笔记(16)——光强度GY-30(BH1750)使用

ESP32学习笔记(18)——光强度GY-30(BH1750)使用