BH1750FVI调试
在写此博客之前已经看了几遍数据手册了,现在已经调试成功了,可以读出来数据,还有不如意的地方,写此博客整理下思路。
1、BH1750fvi介绍。

这是一个16bit的数字传感器,使用I2C作为通信接口,照度的测量范围是1~65535lx。其实从这里就已经能预见最终读出来的照度原数据是2byte的。

这里具体介绍这款传感器的一些特点,例如接近人眼感测的灵敏度,我的毕业设计是要做一个台灯的调光装置,这款传感器的灵敏特性真好适合。此外这里还提到最小分表率0.11lx,最大感测100000lx。
2、电气特性

我在使用时接的电压值是看的卖家的参考资料选择的(3~5V),这里也讲到这个芯片供电电压Vcc值范围是2.4~3.6V。卖家说的电压值是电路板的供电电压值,这里要注意数据手册上说的这个值是我们在设计芯片外围电路是要参考的电压供电值。
3、工作模式

数据测量的流程图,模块上电,传感器是处于掉电状态(PowerOff),需要写入命令让传感器切换到上电状态(PowerOff),再发送数据测量命令,有单次测量模式和连续测量模式。单次测量模式是测量一次后,传感器切换到掉电状态,要再测量需要重新上电。这个图很容易读懂,虚线代表我们用I2c写入的命令(OpeCode),实现是芯片电路自动切换状态过程。
4、指令/命令

这里建议在编程的时候,用宏定义有规律有条理的组织在一起,模块化封装起来,方便开发。注意不同测量模式的测量时间和分辨率,根据需要合理选取。

上面这个表示总结的各种模式的特点。在手册的这个表的小面有一段问题提及了在H测量模式会抑制噪声,分辨率1lx,可以在黑暗场景测量。
5、驱动电路


这是在某淘宝店铺找的资料,这里重点关注芯片的DVL脚是怎么连的。这个DVI脚是I2C总线的参考电压端口,也是异步重置端口,在给VCC供电之后必须拉低至少1us,在其低电平时,芯片处于掉电状态(PowerDown)。至于原因我不理解,电路板上这个脚串一个0.1uf的电容和1kΩ的电阻,时间常数i=RC=1e-3,对应时间1us,所以在给VCC供电后,DVI在大于1us后才会拉高,和上面的时序图相似。
6、从机地址

在ADR脚拉低时:BHWriteAddr:0x46
BHReadAddr:0x47

另外注意:在一次I2C通讯(一个I2C_Start和一个I2C_Stop)中最多只能发一次命令。
7、读数据格式

这是16位数字传感器,测量的数据是两个字节,读取数据无须发送寄存器地址(regaddr),测量完成直接读取即可。
不过在手册的后半部分讲到了可以通过修改Mtreg寄存器,修改传感器的灵敏度,随之照度和测量数据的对应公式也会发生变化,具体详查手册。
最后贴一些关键的函数:
BH1750FVI调试的更多相关文章
- C# Web应用调试开启外部访问
在用C#开发Web应用时有个痛点,就是本机用VS开启Web应用调试时外部机器无法访问此Web应用.这里将会介绍如何通过设置允许局域网和外网机器访问本机的Web应用. 目录 1. 设置内网访问 2. 设 ...
- NodeJs之调试
关于调试 当我们只专注于前端的时候,我们习惯性F12,这会给我们带来安全与舒心的感觉. 但是当我们使用NodeJs来开发后台的时候,我想噩梦来了. 但是也别泰国担心,NodeJs的调试是很不方便!这是 ...
- 微信公众号开发之VS远程调试
目录 (一)微信公众号开发之VS远程调试 (二)微信公众号开发之基础梳理 (三)微信公众号开发之自动消息回复和自定义菜单 前言 微信公众平台消息接口的工作原理大概可以这样理解:从用户端到公众号端一个流 ...
- 写出易调试的SQL(修订版)
h4 { background: #698B22 !important; color: #FFFFFF; font-family: "微软雅黑", "宋体", ...
- tomcat开发远程调试端口以及利用eclipse进行远程调试
一.tomcat开发远程调试端口 方法1 WIN系统 在catalina.bat里: SET CATALINA_OPTS=-server -Xdebug -Xnoagent -Djava.compi ...
- Hawk 4.7 单步调试
单步调试的意义 已经编写的工作流,可能会因为某些外界环境的变化而出错,此时需要排除错误,我们可以使用单步调试. 单步调试的本质,相当于只使用前n个模块,这样就能看到每个步骤下,流的改变. 例子 还是上 ...
- Visual Studio 2012远程调试中遇到的问题
有的时候开发环境没问题的代码在生产环境中会某些开发环境无法重现的问题,或者需要对生产环境代码进行远程调试该怎么办? Vs已经提供给开发者远程调试的工具 下面简单讲讲该怎么用,前期准备:1.本地登录账户 ...
- iOS逆向工程之Hopper+LLDB调试第三方App
LLDB是Low Level Debugger的简称,在iOS开发的调试中LLDB是经常使用的,LLDB是Xcode内置的动态调试工具.使用LLDB可以动态的调试你的应用程序,如果你不做其他的额外处理 ...
- 写出易调试的SQL
h4 { background: #698B22 !important; color: #FFFFFF; font-family: "微软雅黑", "宋体", ...
随机推荐
- elasticsearch6.x集群环境部署
elasticsearch集群部署安装jdk chmod 755 jdk-8u161-linux-x64.tar.gztar -zxvf jdk-8u161-linux-x64.tar.gzcp jd ...
- centos下使用nginx 配置websocket,https升级wss协议
服务端代码/***/ // 服务端代码 var express = require('express'); var app = express(); var path = require('path' ...
- Neutron:访问外网
instance 如何与外部网络通信? 这里的外部网络是指的租户网络以外的网络. 租户网络是由 Neutron 创建和维护的网络. 外部网络不由 Neutron 创建. 如果是私有云,外部网络通 ...
- 不能完整读取txt文件问题
txt文件内容 5 1.3 0.4 3.4 -1.7 16.7 0.89 14.17 4.8 1.34 0.42 3.36 -2 16.2 0.9 14.8 4.9 1.30 0.37 3.51 -1 ...
- C#之事件与eventArgs
static void Main(string[] args) { MyText myText = new MyText(); myTe ...
- nginx的配置与应用
Nginx在应用程序中主要有以下作用(应用):1.解决跨域.2.请求过滤.3.配置Gzip.4.负载均衡.5.静态资源服务器. Nginx的配置结构 Nginx主要是通过修改配置文件nginx.con ...
- jdk自带的监测cpu/内存、线程等信息的工具
Jvisualvm:jdk自带的监控工具(JDK1.6+) 在终端中输入Jvisualvm回车出现如下界面:
- 如何在Linux中轻松删除源安装的软件包?
第1步:安装Stow 在这个例子中,我们使用的是CentOS,因此我们需要扩展的EPEL库.您可以使用以下命令安装它们:yum install epel-release然后,下面这段命令:yum in ...
- java订单金额分级计算
package ord; import java.util.ArrayList; public class order { public String orderid; public user use ...
- DAY29、元类
一.eval内置函数eval内置函数的使用场景: 1.执行字符串会得到相应的执行结果 2.一般用于类型转换,得到dict.list.tuple例: dic_str = ''{'a':1,'b':2}' ...