针对智能照明控制系统中照度检测的问题,提出一种基于ISL29004的多路照度检测方案。介绍一种采用该方案的智能照明控制设备,该设备以单片机P87LPC768为控制核心,采用具有I2C总线接口的ISL29004进行照度检测,使用准双向I2C总线缓冲器P82896对I2C总线进行驱动扩展,在简化系统设计的同时实现了多路照度检测以及自动照明控制。
关键词:照明控制;ISL29004;I2C总线;P82B96
随着人们生活水平的提高,人们对照明控制的要求越来越高,如营造舒适的照明环境、节约电能、提高光源寿命等。为了提高工作环境的舒适性,照明控制系统采取光传感器,根据当前环境的照度自动控制照明设备,从而使照度控制在舒适的范围内。
在传统的照明控制系统中,往往采用普通光传感器结合A/D转换器(ADC)的方案。一方面由于光传感器检测到的光信号既包含可见光成分又有红外光成分,在设计中要考虑滤除红外光对光传感器检测结果的影响,并且由于采用了分离的器件,因此导致设计比较复杂;另一方面,对照度的检测范围比较局限,不利于实现多路照度检测从而对同一场所内多个照明设备实施分区域控制。在此提出了基于ISL29004的多路照度检测方案,以简化系统设计,并采用单片机P87LPC768作为智能照明控制设备的控制核心,以实现对多个照明设备进行分区域控制,在节能的同时营造更舒适的照明环境。
l I2C器件ISL29004
1.1 I2C总线概述
I2C总线是PhiIips公司推出的芯片间串行传输总线,以二线传输,其总线上所有的节点,如主器件(单片机、微处理器)、外围器件、接口模块等都连接到同名端的SDA和SCL上,实现了完善的半双工同步数据传送,可以方便地构成多机系统和外围器件扩展系统。I2C总线采用器件地址的硬件设置方法,通过软件寻址完全避免了器件的片选线寻址方法,从而使硬件系统具有简单灵活的扩展方法。
I2C总线传输数据必须遵循规定的数据传输格式,数据传输由主控器控制,主控器启动数据的传输、发送起始信号、寻址信息以及传送结束时发出停止信号,被控器进行必要的应答。
1.2 光传感器ISL29004
ISL29004是新一代光一数字传感器,集成了电流放大器、用于消除人为光闪烁的50 Hz/60 Hz抑制滤波器和16位adc,能将光照度转化成简便易用的16位、I2C标准数字输出信号,为用户提供了单芯片解决方案。ISL29004内部有2个光敏二极管,二极管1检测环境中可见光和红外光总的照度,二极管2只检测环境中红外光照度,两个二极管的光谱响应是互不依赖的。用户可以通过编程控制adc的工作模式,既可以仅输出光敏二极管1或2的检测结果,在模式2下还可以输出经内部减函数计算的滤除红外光影响的结果。ISL29004内有8个8位的寄存器,1个命令寄存器,1个控制寄存器,2个中断阈值寄存器,4个只读数据寄存器。命令寄存器可以设定ADC的工作模式以及分辨率;控制寄存器可以调整增益从而选择照度检测范围;只读数据寄存器LSB_Sensor和MSB_Sensor可以读取ADC最近的数字输出;只读数据寄存器LSB_TImer和MSB_TImer可以读取ADC最近一次积分的周期数。8个寄存器的地址依次为00H~07H。
ISL29004有2个I2C接口地址选择引脚A0,A1,可以在1条I2C总线线路上安装4个ISL29004,并且可以和其他I2C外围节点共存。
2 硬件结构以及工作原理
2.1 总体结构
系统构成框图如图1所示。单片机P87LPC768作为I2C总线的主控器,ISL29004作为被控器,4个ISL29004的设备地址依次为:44H~47H,通过ISL29004的地址引脚A1,A0进行设置。在系统中,使用了准双向I2C总线缓冲器P82896对I2C总线进行驱动扩展,实现I2C总线的远距离传输,拓展了照度采集距离;P87LPC768的I2C总线经P82896缓冲器扩展后通过双绞线和远端的P82896以及ISL29004连接。与4组照度采集电路相对应,调光控制电路也有4组,与P87LPC768的4个PWM引脚相连。
2.2 调光控制电路
调光控制电路如图2所示,用光电耦合器MOC3041作为晶闸管的驱动器,同时能实现强、弱电的隔离。MOC3041内部有过零检测电路,当P0.O为低电平时,输出端6引脚、4引脚之间的电压稍过零时,MOC304.1内部双向晶闸管导通,触发外部晶闸管T1导通。当PO.0为高电平时,MOC304l内部双向晶闸管关断,从而外部晶闸管T1也关断。
通过P87LPC768的PWM输出控制MOC3041的导通与关断时间比值来调节照明设备的功率,从而实现照明设备的打开、关闭以及亮度调节。
2.3 工作原理
在程序中通过定时中断读取4路ISL29004的ADC输出,并转换为照度值;ISL29004内部的ADC工作在模式2,分辨率为16,照度检测范围一般设为O~1 000 Lux即可满足一般的照明场所的照度检测要求。假设读取ISL29004的ADC的输出为DATA,则可以通过以下的公式转换为照度值:
然后根据计算所得到的照度值进行调光控制;由于P87LPC768的PWM输出的占空比是根据计数映像寄存器CNSW的值和比较映像寄存器CPSWn的值确定,PWM输出保持高电平期间的MCU时钟脉冲数为(CNSW—CPSWn+1)。由此可见,CPSWn越大,则高电平维持的时间越短,则调光控制电路的T1导通时间也就越长,照明设备的亮度就越高;反之照明设备的亮度就越低。
在程序中通过比较得到的照度值E和标准照度值ES来调整CPSW的值,实现自动调光控制。CPSW的初值设为0,并在O~CNSW之间分为若干档,比如10档,得到每次CPSW的调整值△P=(CNSW-1)/10,以实现较为平滑的调整。计算出照度值后和标准照度值ES比较,如果小于标准照度值ES,则在当前CPSW的基础之上增加△P,直到达到CPSW的最大值(CNSW-1);如果大于标准照度值ES,则在当前CPSW值的基础上减少△P,直到CPSW的值为0,照明设备关闭。同时为了避免较小的照度变化导致自动调光,可以根据标准照度值确定一个调光允许的照度差值△ES,如果当前得到的照度值和上次所得到的照度值差的绝对值△E不小于△ES,才进行调光控制。
3 软件设计
主要包括主程序、定时器0中断服务子程序以及I2C总线数据传输程序模块。主程序完成P87LPC768以及ISL29004的初始化,照度采集以及调光控制在定时器0中断服务子程中完成。I2C总线数据传输程序模块详见参考文献,这里给出定时器0中断服务子程序的流程图,如图3所示。
图3中只给出一组ISL29004的照度采集以及调光控制电路的控制程序,由于系统中有4组,因此在定时器0中断服务子程序中,应该是按顺序依次通过I2C总线读取4组ISL29004的采集值并通过4个PWM通道进行相应的自动调光控制。
4 结 语
对智能照明控制系统中照度检测的问题,提出一种基于ISL29004多路照度采集方案,并给出硬件结构、工作原理以及软件流程图。由于ISL29004内部集成了ADC,直接输出数字量,具有抗干扰能力强和低功耗的特点;并且可以编程灵活配置,又具备比较灵活的I2C总线接口,从而简化了照明控制设备的设计;使用准双向I2C总线缓冲器P82896对I2C总线进行驱动扩展以后,拓展了I2C总线的传输距离,实现了照明场所内的多路照度检测,从而可以对多个照明设备实行分区域控制,并且通过P87LPC768的PWM输出实现了自动调光控制,在节能的同时营造更舒适的照明环境。