照度传感器OPT3004应用笔记二

Posted 三明治开发社区

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了照度传感器OPT3004应用笔记二相关的知识,希望对你有一定的参考价值。

照度传感器OPT3004应用笔记

I2C读写流程框图

OPT3004读写流程图

寄存器说明

  • result寄存器:光照度数据更新后存储的寄存器。

光照强度值的换算公式:

lux = LSB_Size × R[11:0]    其中LSB Size 可根据result寄存器的E[3:0]查上表可知,R[11:0]是result寄存器低12位数据。
  • configuration寄存器:芯片工作模式等配置寄存器

默认1100b,自动切换全量程检测,我们不需要修改。

新数据更新时间,默认1b,更新时间800ms,可降低噪声干扰。一般情况下,不做更改。

传感器开启/关闭设置位,默认00b,传感器处在关闭状态,照度数据不更新;将该位设置为01,单次开启,完成后自动关闭;一般我们把改为设置为10,连续工作模式。

其他位保持默认状态,就可以正常工作了。

  • Low-Limit 寄存器:存放设置的光照强度的最小阀值。

LE[3:0]:对应的是result寄存器的E[3:0],光照强度阀值的换算公式:

lux = LSB_Size × TL[11:0]

  • High-Limit 寄存器:存放设置的光照强度的最大阀值。

HE[3:0]:对应的是result寄存器的E[3:0],光照强度阀值的换算公式:

lux = LSB_Size × TH[11:0]

操作实例

基于树莓派的PI Pico与OPT3004的I2C通信

  • 开启OPT3004连续工作模式

from machine import Pin, I2C

i2c = I2C(0, scl=Pin(9), sda=Pin(8), freq=100000)   #I2C0

i2c.writeto(68, bytes([0x01,0xcc,0x10]))  #写 0xcc10到configuration寄存器,其中,68是芯片的地址码,0x01是configuration寄存器地址,OPT3004开启连续工作模式。

#读取照度数据

i2c.writeto(68, bytes([0x00]))  #Setting the result Register Address 。

rev_buf = i2c.readfrom(68, 2) #读取result Register的16位数据。

  • 开启OPT3004连续工作模式,设置超过最大阀值时,INT引脚拉低。

from machine import Pin, I2C

i2c = I2C(0, scl=Pin(9), sda=Pin(8), freq=100000)   #I2C0

i2c.writeto(68, bytes([0x01,0xcc,0x10]))  #OPT3004开启连续工作模式,INT引脚默认高电平,中断触发低电平,中断锁存窗口模式。

#设置1000lux为最大阀值

i2c.writeto(68, bytes([0x03,0x5c,0x35]))  #写 0x5c35到configuration寄存器

  • 通过读取configuration寄存器,可清除INT引脚状态。

i2c.writeto(68, bytes([0x01])) #Setting the configuration Register Address 。

rev_buf = i2c.readfrom(68, 2) #读取configuration Register的16位数据,可清除INT引脚状态。

OVER:好记忆不如烂笔记

以上是关于照度传感器OPT3004应用笔记二的主要内容,如果未能解决你的问题,请参考以下文章

张高兴的 Windows 10 IoT 开发笔记:BH1750FVI 光照度传感器

张高兴的 Windows 10 IoT 开发笔记:BH1750FVI 光照度传感器

STM32学习及应用笔记二:一次运算符优先级造成的错误

STM32F412应用开发笔记之四:与远红外炭氢传感器通讯

MM32 SPIN MCU 电机 FOC 驱动 风机无传感器弦波驱动篇应用笔记

STM32F412应用开发笔记之三:SPI总线通讯与AD采集