0 引言
自动开关控制能根据需要的情况自动打开或切断开关,有利于节省人力和提高控制效率,为人们的生产生活带来便利和节省能源。
随着电子技术和微机技术的发展,自动开关控制技术发展迅速,提出了各种类型的自动开关控制装置,如基于MCS-51单片机的多路开关控制装置、单片机控制的热释电红外节能照明开关、基于AT89S52单片机的声光控制开关、基于SPCE061A的语音手动双控制开关和智能计量与开关控制插座等。
针对自动开关控制技术的需求和发展趋势,本文提出一种基于单片机和光照检测的开关控制装置设计。此装置具有光照度检测功能,可以采集环境的光照度并根据设定的光照度自动实现开关的开或关等操作。
1 装置工作原理和功能
基于单片机和光照检测的开关控制装置的工作原理示意图如图1所示,其工作原理为:单片机检测环境光照度,若在一定的时间间隔内两次检测的光照度都小于设定的光照度下限值且开关状态为关,则打开开关;若在一定的时间间隔内两次检测的光照度都大于设定的光照度上限值且开关状态为开,则关闭开关。
基于单片机和光照检测的开关控制装置需要实现的功能为:1)光照检测;2)光照度下限值和上限值设定;3)开关自动控制;4)数据显示:显示采集的光照度和设定的光照度下限值和上限值。
2 硬件设计
2.1 硬件结构
根据需要实现的功能,基于单片机和光照检测的开关控制装置的硬件结构如图2所示。装置以AT89C51单片机为核心,外围电路包括时钟电路、复位电路、光照检测电路、LM016L液晶显示电路、开关控制电路和键盘电路。
2.2 光照检测电路
光照检测电路的详细设计如图3所示,其工作原理为:1)利用硅光电池BPW34将光照度信号转换为电流信号,BPW34具有产生的短路电流与光照度成正比的特性;2)通过以运算放大器LM358为核心构成的放大电路将BPW34产生的短路电流信号转换为电压信号并放大;3)AT89C51单片机控制ADC器件ADC0809采集放大电路输出的电压信号并计算实际的光照度值。
2.3 开关控制电路
开关控制电路的详细设计如图4所示,其工作原理为:1)光电耦合器TIL 117起光电隔离作用,实现将单片机AT89C51与开关控制部分隔离,从而减小开关控制部分对AT89C51的干扰,提高系统的可靠性,其中驱动芯片7407的作用是为TIL 117提供输入电流;2)继电器G2R-14-DC5实现直接的开关控制,其中晶体管9013的作用是为G2R-14-DC5提供驱动电流,二极管1N4001的作用是防止G2R-14-DC5的感应电压损坏901 3;3)当AT89C51的P2.1引脚输出低电平时,TIL 117产生光电流,使三极管9013导通,从而继电器G2R-14-DC5的线圈得电,常开开关K1闭合,反之则K1断开。
3 单片机程序设计
3.1 总体设计
结合硬件设计和需要实现的功能,装置的单片机程序主要包括如下程序模块:1)光照检测:根据ADC0809的控制逻辑采集光照度转换而来的电压信号,并根据对应公式计算实际的光照度值;2)光照度上下限值设定:通过键盘电路和LM016L液晶显示电路,并采取外部中断的方式,实现光照度上下限值设定;3)开关自动控制:根据检测的光照度和设定的光照度上下限值控制开关控制电路,实现开关自动控制;4)数据显示:控制液晶器件LM016L显示采集的光照度和设定的光照度上下限值。
3.2 光照检测
光照检测程序模块主要包含如下两个步骤:1)根据ADC0809的控制方法进行电压信号采集,ADC0809的关键控制引脚为S7ART、EOC、OE和CLK,分别为启动信号输入端、转换结束信号端、输出允许端和时钟信号输入端;2)根据电压和光照度转换公式计算实际的光照度值。实现光照检测的方法如算法1所示。
算法1:光照检测算法。
sbit START=P2^2;//ADC0809启动信号输入端
sbit EOC=P3^5;//ADC0809转换结束信号端
sbit OE=P2^3;//ADC0809输出允许端
sbit CLK=P3^6;//ADC0809时钟信号输入端
START=0;//ADC0809开始转换
OE=0;//ADC0809不允许输出
if(EOC=1)//如果ADC0809转换结束
{
START=1;//ADC0809停止转换
OE=1;//ADC0809允许输出
ADdata=P0;//读取采集的电压信号
OE=0;//ADC0809不允许输出
illu=ADdata*1.96*4.16667;//将采集的电压信号转换为实际的光照度值
}
3.3 开关自动控制
开关自动控制程序模块的实现流程为:1)若开关状态为关,则关计数变量offCounter置0;2)若检测的光照度小于光照度下限值且开关状态为关,则开计数变量onCounter累加1;3)若检测的光照度大于光照度下限值且开关状态为关,则开计数变量onCounter置0:4)若开关状态为开,则开计数变量onCounter置0:5)若检测的光照度大于光照度上限值且开关状态为开,则关计数变量offCounter累加1;6)若检测的光照度小于光照度上限值且开关状态为开,则关计数变量offCounter置0;7)若onCounter>=2500,则控制开关闭合;8)若offCounter>=2500,则控制开关断开。实现开关自动控制的方法如算法2所示。
算法2:开关自动控制算法。
if(state==1)//若开关状态为关
{offCounter=O//关计数变量offCounter置0
if(illu<=lowLimit)onCounter=onCounter+1;
if(illu>lowLimit)onCounter=0;}
if(state==0)//若开关状态为开
{onCounter=0//开计数变量onCounter置0
if(illu>=upLimit)offCounter=offCounter+1;
if(illu
if(onCounter>=2500)state=0;//控制开关闭合
if(offCounter>=2500)state=1;//控制开关断开
4 装置测试与分析
为了测试基于单片机和光照检测的开关控制装置的性能,对装置进行了20次各个功能的测试,测试结果如表1所示。测试结果表明,装置能实现设计的自动开关控制、设定光照度上下限值和数据显示等各种功能,运行效果良好。
5 结语
本文提出一种基于单片机和光照检测的开关控制装置的设计,此装置具有光照检测、光照度上下限值设定、开关自动控制和数据显示等功能。本文详细介绍了此装置的硬件和单片机程序的设计方法,并对设计的装置进行了功能测试,测试结果表明,设计的装置能实现设计的等各种功能,运行效果良好。