利用BH1750光度传感器测量一些发光体
Posted 卓晴
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了利用BH1750光度传感器测量一些发光体相关的知识,希望对你有一定的参考价值。
简 介: 初步测试了BH1750测量一些光源的数据。特别是对于LED发光特性与电流之间的关系。 通过BH1750的数据收获册上的感光特性,它基本上覆盖了可见光的的范围。
关键词
: BH1750,ESP32,MicroPython
§01 BH1750传感器
一、BH1750读写接口
1、早期实验
在 使用ESP32 MicroPython I2C功能读取 BH1750光度传感器模块数据 利用 ESP32 MicroPython实验模块 对 BH1750 进行读写。更早之前,使用 STC单片机完成对于 BH1750 模块读写 。
2、模块连线
使用PIN4的扁平电缆制作了连接两个模块的引线。引线的接口功能定义为:
PIN1 | PIN2 | PIN3 | PIN4 |
---|---|---|---|
VCC(3.3V ~ 5V) | GND | SDA | SCL |
注: 模块的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 。
■ 相关文献链接:
- 使用ESP32 MicroPython I2C功能读取 BH1750光度传感器模块数据
- ESP32-S模块转接板设计与实现
- BH1750
- 强度光照模块rimg02 BH1750光度传感器模块
- 基于USR-WiFi模块的 ESP32,ESP8266 Thonny调试器
- What is the visible light spectrum?
● 相关图表链接:
以上是关于利用BH1750光度传感器测量一些发光体的主要内容,如果未能解决你的问题,请参考以下文章
( zigbee)CC2530+BH1750光敏传感器获取光照强度
(二十九)树莓派3B+ 获取BH1750FVI光强度传感器数据
ESP32学习笔记(18)——光强度GY-30(BH1750)使用