基于BH1750芯片的测光系统设计与实现
2011-02-08毛腾飞陈英革
王 建,毛腾飞,陈英革
(常熟理工学院 计算机科学与工程学院,江苏,常熟 215500)
目前,大多数测光系统的光强采集元件都是使用光电三极管或光电池.由于信号放大电路、A/D转换电路等是这两类采集元件必不可少的部分,其系统设计的复杂度较高.高级的测光系统还需要设计多档放大电路来实现大量程测光.这些电路无疑增加了传统测光系统的能耗和空间开销,降低了其灵活度.并且传统的测光系统非常容易受到如红外线、紫外线等非可见光的干扰.
本系统采用新型单片测光芯片BH1750,较好地解决了传统测光系统的弊端[1].BH1750是半导体制造商ROHM为适应以移动电话手机为首的便携式机器和液晶电视等的要求而开发出的具有优良光谱灵敏度特性、16bit串行输出的单片数字照度传感器.由于其面世不久,关于它的资料十分稀少,目前有关BH1750的实用资料仅有一份其官方网站发布的英文版芯片手册.本文在参考该手册基础上,结合笔者的实际测试经验,主要以源程序并适当解释为读者呈现出用51系列单片机[2,3]配合BH1750的简单使用实例,为相关开发人员提供一定的借鉴参考.
1 系统设计
1.1 硬件框架
在该系统中,主控器为宏晶公司的51系列单片机STC12LE5A60S2,光强传感器使用BH1750,人机界面为显示部分+控制按键.显示部分采用2.0寸176×220分辨率TFT彩色液晶屏.由于本文的重点在BH1750部分,其他部分如显示屏驱动等从略.
图1是系统的硬件框架图.主控器通过IIC(Inter-Integrated Circuit)通讯接口读取BH1750采集到的数据,然后按照用户要求的形式通过界面将数据呈现.从系统的框架图可以看出,使用BH1750搭建测光系统相对比较简单.因此,开发人员可以很容易地将此IC嵌入到其他需要测光功能的系统中,从而降低系统的复杂度.
图1 系统硬件框架图
1.2 BH1750与单片机的接线图
如图2所示,BH1750只需占用主控器的3个I/O端口就可以正常工作.如果系统需要是采用多片此IC,则每两片BH1750可以共用这3个I/O端口,只需将其中一片的地址脚ADDR接高电平,另一片接低电平就可以互不干扰.主控器将通过不同地址访问不同IC.文中系统评估部分的两片BH1750就是使用这种接法.
图2 BH1750接线图
1.3 BH1750的通讯协议及过程
BH1750与主控器之间的通讯使用标准的IIC通讯协议.IIC总线是一种由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备.IIC总线在传送数据过程中共有三种类型信号,它们分别是:开始信号、结束信号和应答信号.
主控器通过IIC接口向BH1750发送各种控制命令以及读取测量数据.
(1)主控器向BH1750发送控制命令步骤:①主控器产生通讯启动信号;②主控器发送8bit的地址数据(其中地址的最后一位应为0,表示写命令);③主控器读取BH1750的应答信号;④主控器发送8bit的命令数据;⑤主控器读取应答;⑥主控器产生停止信号.
(2)主控器从BH1750读取数据步骤:①主控器产生通讯启动信号;②主控器发送8bit的地址数据(其中地址的最后一位应为1,表示读命令);③主控器读取应答;④主控器读取高8位数据;⑤主控器产生应答信号;⑥主控器读取低8位数据;⑦主控器产生应答信号;⑧主控器产生停止信号.
1.4 系统工作流程
系统工作时要先进行各部分的初始化,完成后开始接收用户命令,根据用户的不同操作执行不同的任务.具体流程如图3所示.
1.5 系统核心代码
下面给出主控器发送命令、读取数据的函数实例代码:
以上两段代码都是按照图3所示的通讯时序写出的,并通过实际测试.至于其中的IIC控制信号函数都是标准的控制函数,限于篇幅,这里不再给出.
以上面的核心代码为基础,下面给出主控器调用这两个函数完成测光功能的使用实例.
图3 系统工作流程
BH1750具有可改变测量时间的功能,由此来改变测量精度,最高可达0.11Lx,限于篇幅有限,这里不作讨论.
2 系统测试评估
下面分三方面对BH1750的性能进行实测评估.所有的数据都是直接从BH1750读取过来的,并没有做任何滤波处理,因此下面的数据能较好地反映出BH1750的性能.
2.1 与照度计测量比较
图4中使用的参照照度计是深圳市金达通仪器仪表公司生产的数字式照度计1010B.从图4中可以看出,在不同光强级别,BH1750的测量结果与标准照度计的测量结果的相对偏差都很小.
图4 BH1750与照度计测量结果对比图
2.2 两片BH1750对比测量
图5与图6是本系统内部自行绘制的同时使用两片BH1750在相同条件下(晚间日光灯下)的测量结果对比.图5是用透明元件袋遮住其中一片IC时的对比图,因为遮盖物使得对应IC的探测端光线减弱,所以从图中可以清楚地分辨出两片IC的曲线;图6则是两片IC在相同环境下测量所得到的曲线图,从图中可以看出两条曲线基本重合,这说明BH1750的线性关系是很好的,同一型号不同芯片的测量误差比较小.
2.3 不同环境下的多次测量对比
使用一片IC在同一环境中进行多次测量,结果如表1所示.
表中共有3组数据,每组8个照度值:
图5 IC-1被遮住实测图
图6 两片IC在相同环境中实测图
表1 不同环境下的多次测量照度(单位:Lx)
第一组的8个数据中最大值与最小值的差值为1Lx,相对偏差0.43%;第二组的8个照度值中,最大值与最小值的差值为8Lx,相对偏差0.37%;第三组的8个照度值中,最大值与最小值的差为43Lx,相对偏差3.5%.三组数据的相对偏差均不到0.5%.这说明BH1750在弱光、正常光照和较强光照条件下的测量稳定性都很好.
从上述几方面的对比可以看出,BH1750的性能是相对较为优越的.但其测量时间较长,典型的测量时间为120ms,所以它不适合作为快速采集或瞬间采集光强的采集器.
3 总结
本文针对传统测光系统结构复杂、容易受到红外、紫外等干扰光线的影响等弊端,改选新型单片测光芯片BH1750作为光强采集器,设计并实现了一个测光系统.通过对BH1750进行多方面的对比评估,验证了其可靠性.
[1]ROMH公司.BH1750FVI手册[EB/OL].http://cnpdf.alldatasheet.com/datasheet-pdf/view/350139/ROHM/BH1750FVI.html.
[2]赵建领.51系列单片机开发宝典[M].北京:电子工业出版社,2007.
[3]郑步生,吴渭.Multisim2001电路设计及仿真入门应用[M].北京:电子工业出版社,2002.