本文介绍一下使用BH1745计算色温与照度的方法
一、芯片介绍
BH1745是罗姆新出的一款芯片,能测量环境光的RGB数值,照度测量范围能到(0.005 -40k)lux,可以增加透镜达到更大的范围,供电电压最大3.6V,无光环境下,最大数据3count,GAIN=16,数值基本算很低了
我主要是看中它能测量RGB数据,那就可以计算色温,主要是用来计算色温这个参数,RGB波长与灵敏度如下
二、电路设计
使用BH1745之前一定要仔细阅读规格书,硬件的参考电路的规格书中已经有介绍了,可以看下图
其中INT硬件我基本不使用,也不知道在什么情况下需要使用这个引脚
三、寄存器说明
根据规格书以及需要的使用功能,去配置寄存器;
由于这里只需要计算照度数据与测温,那就需要RGB三个寄存器的数值
寄存器地址 | name | 说明 |
---|---|---|
0x92 | MANUFACTURER ID | 芯片ID |
0x40 | SYSTEM_CONTROL | 软件复位等 |
0x41 | MODE_CONTROL1 | 测量积分时间 |
0x42 | MODE_CONTROL2 | 系统控制寄存器,设置增益,开始测量,数据有效位 |
0x42 | MODE_CONTROL3 | 固定为0x02 |
0x50-0x57 | R,G,B,clear data | RGB clear数据 |
根据规格书中描述,操作步骤如下
- 上电
- 软件复位
- 设置积分时间与增益带下
- 设置MODE_CONTROL3 =0x02
- 设置MODE_CONTROL2的bit4,开始测量
- 检测MODE_CONTROL2的bit7,判断数据是否更新
- 读取0x50-0x57的寄存器数据
四、照度计算与色温计算
- 照度
1 | R = ((BH1745_data[0])|(BH1745_data[1]<<8)); |
色温
色温需要使用RGB三个寄存器的数据,这里将RGB的数据当做是CIE1931标准下的RGB数据,计算色温需要CIE1931-xy坐标数据,而CIE1931-xy坐标可以通过CIE1931-XYZ数据计算得到,CIE1931-XYZ数据可以通过RGB数据与三刺激数值计算得到
1 | R = ((BH1745_data[0])|(BH1745_data[1]<<8)); |
以上是我一个工程中使用的计算公式,不过如果加大准确度,可以分成两段计算,参考资料网上找的别人的博客,出处已经忘记了,只下载了文件下来