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输出实现了自动调光控制,在节能的同时营造更舒适的照明环境。