资讯详情

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

这个模块是几年前淘宝买的,发现还能用,就找资料玩。 在这里插入图片描述

产品介绍

BH1750FVI 它是一种用于两线串行总线接口的数字光强度传感器集成电路。该集成电路可根据收集的光强数据调整液晶或键盘背景灯的亮度。利用其高分辨率,可以探测到大范围的光强度变化。lx-65535lx)

产品特点

  1. 支持 I2C BUS 接口(f/s Mode Support)。

  2. 光谱灵敏度特征(峰值灵敏度波长典型值:560nm)。

  3. 输出相应亮度的数字值。

  4. 相当于广泛的输入光范围(相当于 1-65535lx)。

  5. 通过降低功率功能,实现低电流。

  6. 通过 50Hz/60Hz 实现除光噪声功能测定7. 支持 1.8V 逻辑输入接口。

  7. 没有其他外部部件。

  8. 光源依赖性弱(白炽灯、荧光灯、卤素灯、白光 LED,日光灯)。

  9. 有两种选择 I2C slave 地址。

  10. 影响可调测量结果的因素是光入口大小。

  11. 使用此功能计算 1.1 lx 到 100000 lx 马克斯/分钟范围。

  12. 最小误差变化在±20%。

  13. 红外线的影响很小。

产品应用

手机、液晶电视、笔记本电脑、便携式游戏机、数码相机、数码相机、汽车定位系统、液晶显示器芯片框图 描述:

?PD 光敏二极管接近人眼反应。(Photo diode with approximately human eye response.)

?AMP 集成操作放大器:将 PD 电流转换为 PD 电压。

?ADC 获取模数转换 16 位数字数据。

?Logic IC Interface(逻辑 IC 光强度计算和界面) I2C 总线接口包括以下寄存器:数据寄存器→存储光强数据。初始值为:万万_0000_0000_一万。测量时间寄存器→存储时间测量数据。初始值为:0100_0101”。

?OSC 内部振荡器(典型时钟频率值:320kHz)。时钟是内部逻辑时钟。

从这个框图也可以看出,芯片的内部模块相对简单,实际使用并不复杂。

测量程序步骤

指令集合结构

测量时序实例从写指示到读出测量结果

测量程序

 let i2c = require('i2c-bus'); let rpio = require('rpio');  // 寄存器说明  let BH1750_SlaveAddress = 0x23, // 设备地址     BS1750_DOWN = 0x00,   // 断电指令     BH1750_ON = 0x01,     // 通电指令     BH1750_RESEET = 0x07, // 通电指令      BH1750_CON_H = 0x10,   // 连续分辨率模式, 1lx, 120ms     BH1750_CON_H2 = 0x11,  // 连续分辨率模式, 0.5lx, 120ms     BH1750_CON_L = 0x13,   // 连续低分辨率模式,4lx, 16ms     BH1750_ONE_H = 0x20,   // 高分辨率模式,1lx, 120ms     BH1750_ONE_H2 = 0x21,  // 高分辨率模式,0.5lx, 120ms     BH1750_ONE_L = 0x23;   // 低分辨率模式,4lx, 16ms  function bh1750fvi(i2cbus, bh1750fvi_address) { 
        
  if (!(this instanceof bh1750fvi)) { 
        
    return new bh1750fvi(i2cbus, bh1750fvi_address);
  }
  this.address = bh1750fvi_address;
  this.bus = i2c.openSync(i2cbus);
}

// 读取光强lux
bh1750fvi.prototype.get_bh1750fvi = function() { 
        
  this.bus.sendByteSync(this.address, BS1750_DOWN);
  rpio.usleep(100);
  this.bus.sendByteSync(this.address, BH1750_ON);
  rpio.usleep(100);
  let buffer = Buffer.alloc(2);
  this.bus.readI2cBlockSync(this.address,BH1750_CON_H,2,buffer);
  return convertToLux(buffer);
}
// 十六进制数据转换成lux
function convertToLux(data){ 
        
  return Math.round((data[1] + (256 * data[0])) / 1.2);
}

module.exports = bh1750fvi;

// 显示
let bh1750fvi = require('../bh1750fvi/index');
function main(){ 
        
  lcd_init();
  while(1){ 
        
    lcd_show_string(0, 0,'LUX: ' + bh1750fviModel.get_bh1750fvi());
    rpio.msleep(200);
  }
}

这里显示程序需要结合上一篇一起查看:

16.树莓派3B+ 硬件SPI驱动Nokia5110液晶

显示效果图

标签: 光强度传感器bh1750fvi

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台