衡 蜓
(晋中信息学院,山西 太谷 030800)
本设计选用AT89C52为主要的控制芯片,配合时钟电路、复位电路及电源等用来控制按键输入及显示模块、光敏电阻感应模块、人体红外感应模块及声光电报警模块4个部分。其整体设计框图见图1。
图1 整体设计结构Fig.1 The overall design structure diagram
按键输入模块由连接在AT89C52单片机P1.0模式切换、P1.1亮度减少及P1.2亮度增加等3个按键。模式按键可以在手动模式以及自动模式切换,如若模式灯点亮,则系统处于自动模式下,此时的亮度减少按键和亮度增加按键不起任何作用;如若模式灯熄灭,则系统处于手动模式,所在控制台的工作人员可以通过增加或减少按键随意地进行调节连接于单片机P1.7端口路灯的亮度。
光敏电阻感应模块采用的是将光敏电阻和ADC0832结合的控制方案,单片机接收光敏电阻感应模块所判别的外界环境光照情况,进行PWM波调整路灯亮度的功能,即判断出路灯是否被打开而进行正常工作,以及路灯打开时的明暗程度;而另一方面,用于判断路灯是否发生故障。
人体红外感应模块采用的是与单片机P1.6端口连接的HC-SR501型传感器,单片机检索到该传感器所判别的是否有行人经过的数据状况,进一步实现检测路人功能。在有行人通过的前提下,根据外界环境的明暗程度利用单片机定时器0实现PWM调节路灯;在HC-SR501型传感器检测到路人离开后,路灯延时10 s的亮度,然后单片机会使路灯的亮度设置成为车辆照明的第3等级亮度,这也是平时在夜晚没有行人经过时的亮度,避免了没有路人还亮灯的情况,实现了节能功能。
在夜晚,当单片机需要执行亮灯命令时,光敏电阻感应模块检测出路灯却是处于灭的状态,表示电路发生了故障,从而使得路灯没有被点亮,这时会触发报警模块报警。
本设计中按键输入及显示模块的功能是用于控制路灯的工作模式及亮度,防止特殊情况的出现。设计意义在于所在控制台的工作人员可以随意地手动调节路灯亮度。在该部分有3个按键,分别为模式切换、亮度减少、亮度增加按键;3个显示灯,分别是模式灯、路灯、报警灯。模式按键的功能可以在手动模式以及自动模式来回切换,当系统处于自动模式下,此时模拟指示灯被点亮,这也是上电路灯所处的工作模式;只有在手动模式及模拟指示灯熄灭时,工作人员可以通过增加或减少按键随意进行调节;报警指示灯的功能是提醒路人发生故障的情况下被点亮。按键是人与单片机直接打交道的设备之一,独立按键硬件电路非常简单,而且在程序设计上也不复杂。
本设计中光敏电阻感应模块的功能:一方面,AD转换芯片通过读取电阻R2的分压情况,传递给单片机对外界天气光照进行辨别,从而判别路灯是否被打开以及路灯被打开时的明暗程度;另一方面,可以检测在接受单片机开灯命令后,路灯是否被正常打开,从而决定单片机是否发出高低电平,启动声光报警模块和报警指示灯。
本模块由光敏电阻和ADC0832芯片构成。这里采用滑动变阻器模拟光敏电阻,光敏电阻工作的原理是基于内光电效应,环境光照射时,产生导电的载流子,在外加电场的作用下产生一定的漂移运动,电子转移到电源正极方向;反之,空穴转移到负极方向,最终导致光敏电阻值降低,反之同理。本设计也是利用了光敏电阻的这一特性,来感应路灯的外界环境光强弱程度。
当外界环境光照较强时,例如白天,电阻本身的值会非常小,电压值也会非常小,模数转换电路会根据它反馈的值进行相应的判断;相反,随着晚上或者阴天的来临时,电阻值也会越来越大,电压值也会变得越来越大,模数转换电路会根据反馈的值进行相应的判断,传到单片机连接的显示电路中,从而控制路灯亮度和报警模块。
本设计中人体红外感应模块主要功能为判断是否有行人在感应范围内。在手动控制模式下,只有感应模块检测到路人在感应范围之内,才可以进行路灯自动调节功能;同理,在另一种控制模式下,以检测到光线不足为路灯工作的前提,当人在感应范围之内时,才进行路灯的亮度增加,当人在感应范围之外时,路灯恢复第3等级亮度,这样有效节约了电力资源。
本设计中直接选用HC-SR50型人体红外传感器,其采用LH788探头设计、性能可靠、零密度高的特点,符合本设计的要求。本模块根据红外线反射原理,采用的是全自动感应方式,通过对行人的自身特定热量来感应。根据研究表明人体稳定的体温普遍在37℃上下,可以发出波长为10μm的红外线,HC-SR501型人体红外传感器的红外探头可以根据此原理来判断路人的状态。当行人的身体在红外线感应的测定范围之内,传感器中的发射管发射红外线放射到接收管内部,经过信号处理反馈到电磁阀,最后按照接收指令输出高电平传递给单片机进一步的控制电路。
本设计中声光报警模块的功能是光敏感应模块检测到路灯外界环境特别暗,即路灯没有被正常打开,在接受到来自AT89C52单片机的反馈信号,就会自动发出声音和灯光警示。当在夜晚来临之际,以光敏电阻感应模块检测到环境光线特别黑为报警的前提。因为在白天时,外界环境的光线充足,而夜晚路灯在有人的时候,路灯亮度增加,没有人或者有车的时候处于第三等级的亮度,所以没有光线即表示路灯没能被正常打开。系统会致使发光二极管、有源蜂鸣器2个元器件同时工作,发出滴的声音和报警指示灯光闪烁的警示,这方便对故障的排除及维修。
本设计中声光报警模块由有源蜂鸣器及1个发光二极管构成,这2个元器件在检测到单片机发出的指令进行声光报警。当光敏电阻检测模块,检测到外界环境特别暗,但是灯没亮,即表示出现了线路故障、灯泡毁坏等故障现象,单片机则会将低电平给予报警指示灯,将高电平给予有源蜂鸣器,发出声光报警。
路灯控制系统的软件编写主要采用的是函数嵌套形式,所以在编写主函数之前,需要先编写多个函数、定义变量等步骤。本设计中包含7个函数,以完成对路灯的功能设计。7个函数包括定时器初始化、延时、时钟脉冲、获取指定通道的A/D转换结果、手动控制、自动控制以及定时器0服务程序函数。主函数对以上这7个函数的嵌套使用即可完成节能路灯的控制。
根据本课题设计功能的需求,为其设计流程图并编写程序。首先,判断按键的状态,当有键按下时进行模式切换控制,即手动模式与自动模式两者之间的切换;然后,识别当前路灯的工作模式状态,进行对应模式的处理。当识别路灯为自动状态,人体红外传感器判别检测是否路灯下有人,进一步读取ADC0832数据,根据环境的不同光照强度,执行PWM调节路灯不同状态下的亮度,路人离开后以最后一个人为基准,延迟10 s路灯亮度设置为等级3。在自动控制期间,如果检测到外界光线为最暗,报警模块工作。如果判定为手动模式,首先判别是否有行人,防止像小猫、小狗这类的动物操作,随后进行路灯亮度调节。
首先,默认上电即为自动模式,模式按键按下后,改变为手动模式,此时模拟指示灯接收到控制中心低电平的指令后熄灭,路灯工作。以有人为工作前提,通过点击亮度减少按键和亮度增加按键的操作,路灯的亮度随之发生变化。其次,再按一次按键,转换为自动控制路灯的模式,LED灯点亮,按下人体按键,即模拟人体传感器检测到有人在触发范围之内,通过滑动变阻器调节电阻值,即模拟外界环境天气的亮度变化,路灯发生了不同等级的亮度变化;再次按人体按键,即模拟人体传感器检测到无人在触发范围之内,观察路灯在10 s后路灯亮度等级变为3;将路灯按键打开,再将光敏电阻拨向无光方向,模拟路灯发生故障无法打开路灯,发生报警指示灯闪烁,有源峰鸣器报警发出滴的声音。
通过对系统的反复调试,设计的硬件电路及软件编程可以实现其所在模块的功能。