
一、项目介绍摘 要传统的照明控制系统存在着自动化程度不高、能耗大、用户使用体验不佳等缺点。为了解决以上问题本文设计出一套基于51单片机的智能照明控制系统。系统用STC89系列单片机做控制中枢把数字光照传感器和热释电红外传感器结合在一起从而达到对环境光照强度以及人员活动进行实时检测的目的。系统有三种工作模式环境光自适应模式、人体感应启停模式、手动覆盖模式根据需要可自由切换。执行部分用PWM脉冲宽度调制技术控制LED灯具的无级调光使用继电器控制照明电源的通断。系统配有按键输入和液晶显示模块利于用户的交互以及状态查看。本文完成了系统的总体方案设计、硬件电路设计、软件程序开发、结构建模等工作。经过测试本系统的各项功能完备、反应迅速、运行可靠可以达到“人来灯亮、人走灯灭”以及“按需调光”的智能化照明效果有较好的节能作用及广泛的实用性。关键词51单片机智能照明人体感应PWM调光自动控制主要研究内容本课题主要的研究内容就是设计出并实现一个基于51单片机的智能照明控制装置。系统用STC89系列单片机做为控制中心结合环境光照检测模块和人体红外感应模块来完成对LED灯具的智能控制。研究内容可以分为以下几个方面。第一对系统总体方案进行设计确定系统的功能需求、技术指标和总体架构通过方案比选论证来确定最优的硬件选型和软件架构。第二完成系统硬件电路设计与制作包括单片机最小系统、感知模块、执行模块、交互模块等各个部分电路的设计、元器件的选择及PCB板图的绘制。第三设计并开发系统软件使用Keil开发环境中的模块化编程思想编写系统的初始化、信号采集、模式判断、PWM调光输出等功能程序实现环境光自适应模式、人体感应启停模式和手动覆盖模式三种控制逻辑。第四章完成系统硬件结构建模及图纸绘制工作用相关软件制作出核心部件三维模型、二维工程图。第五建立系统实物原型对各个模块做分模块测试最后做整体联调检验系统的功能是否完整性能是否稳定。通过对以上内容的完成最终得到一个功能完备、性能优良、成本控制在合理范围内的智能照明控制系统。设计目标本文以对已有智能照明产品进行充分调研为前提设计出一个具有功能齐全、性能稳定、成本低的智能照明控制系统。系统主要针对家庭走廊、小型教室等室内基础照明场所需要通过环境光线的变化以及人员活动情况的变化来自动控制照明设备的开闭和亮度而且还要具有手动控制模式供用户使用。功能上需要系统实现环境光自适应模式、人体感应启停模式、手动覆盖模式这三种主要的控制方式并且能实现模式之间的相互切换。性能上系统要求响应快检测到人员活动或者环境光线变化的时候可以立即作出控制反应。系统应具有较好的连续工作稳定性在日常的室内环境中可以长期可靠地工作抗得住一般的轻微电磁干扰。从成本控制的角度来说在保证功能性能的前提下选用性价比较高的元器件来控制整个硬件的成本在价格上保持一个合理的范围之内从而具有较好的市场推广价值。此外系统应该具有一定的扩展性即为以后添加无线通信、手机控制等功能留有接口。系统总体架构本系统用到了一个四层的模块化设计结构即感知、控制、执行和交互四个部分。感知层完成环境信息的采集工作主要是环境光照强度检测以及人体活动检测。光照检测模块可以实时监测周围环境光线的情况从而给出是否需要开灯的判定。人体感应模块用来探测人体是否进入了照明区域内避免在无人的时候造成能源的浪费。两类传感器产生的信号经过信号调理电路处理之后再送到控制核心去加以处理。控制层用51单片机作为中心接收传感器的信号根据事先设定好的控制逻辑做出判断、决策并发出控制指令。执行层按控制层发送的信号来控制照明设备的工作。当需要开启或者关闭照明的时候单片机用控制继电器或者驱动电路去接通或者断开LED灯具的电源。当需要调节亮度的时候单片机送出PWM脉冲宽度调制信号利用变化的占空比来对LED进行无级调节。交互层给用户提供和系统进行交互的接口即按键输入、状态显示两部分。用户可以通过按键将自动模式和手动模式进行切换在手动模式下可以直接控制照明开关。液晶显示屏可以及时显示出当前工作模式以及光照情况有利于用户了解系统工作状况。方案论证与选型系统总体方案确定前要对关键部件进行方案论证、对比分析。第一是选择控制中心。本设计对51系列单片机、AVR系列单片机和STM32系列单片机三种方案进行对比。51系列单片机技术成熟、资料齐全、开发简便、成本低完全可以满足本设计控制逻辑和信号处理的要求。AVR、STM32性能更好但是对本应用场景来说存在性能过剩、成本过高这两个问题。所以本设计采用51系列单片机做控制核心所选型号为STC89系列该系列有8K字节的Flash存储器和足够多的I/O引脚可以满足系统的需要。其次就是光照检测传感器的选型。本设计比较了光敏电阻方案和数字光照传感器方案。光敏电阻方案成本很低但是输出为模拟量需要外接A/D转换电路且易受温度影响精度不高。数字光照传感器方案虽然成本较高但是可以直接输出数字光照度值不需要复杂的外围电路测量精度高一致性好。根据设计精度和开发方便性综合选择数字光照传感器。其次就是人体感应传感器的选择对热释电红外传感器、微波雷达传感器进行了比较。热释电红外传感器成本低、功耗小适用于人体移动的检测在室内的应用较为广泛。微波雷达灵敏度高但是成本高而且会产生电磁干扰。本设计选择热释电红外传感器模块该模块集成度高输出数字信号方便和单片机接口。综上所述本文选择以51单片机为主控用数字光照传感器、热释电红外传感器来完成智能照明控制。电源电路设计稳定的电源是单片机系统正常工作的保证。本系统要给单片机、传感器、显示模块、驱动模块提供稳定可靠的5V直流电源。系统总功耗不大并且对便携性以及供电方便性有要求的本设计用USB接口供电。USB接口提供标准的5V电压最大输出电流可达数百毫安完全能满足本系统供电的要求。用户可以使用手机充电器、电脑USB口或者移动电源来给系统供电使用非常方便。虽然USB接口输出的标称5V的直流电压但是实际输出电压会存在一定的波动以及噪声直接供给单片机以及其它敏感器件会造成稳定性问题。因此本设计在USB输入之后加了一个滤波电路。在USB电源输入端并联一个大容量电解电容、一个小容量瓷片电容电解电容起平滑电压波动、提供瞬时大电流的作用瓷片电容起到滤除高频噪声的作用。电解电容选用100微法至470微法的瓷片电容。经过电容滤波后的5V电压已经比较平滑可以直接给单片机、传感器和显示模块供电。二、文档介绍三、項目设计主程序设计主程序是系统软件的入口以及调度核心。系统上电后首先调用LCD1602初始化函数来完成显示屏的初始化设置即清屏和显示模式配置使屏幕可以正常的显示信息。然后调用延时函数等待10毫秒清屏再延时10毫秒最后调用串口初始化函数来完成定时器的配置给系统提供准确的时间基准。初始化操作是系统正常工作必须满足的条件保证各个硬件模块处于初始的状态。完成所有的初始化工作之后程序就进入了一个无限循环的主循环结构中。主循环中程序是按照固定顺序依次调用按键函数、检测函数、显示函数和处理函数。每个子函数只完成自己的工作就立即返回把CPU的控制权交给主循环。这种前后台架构的优点就是结构简单清晰各个功能模块之间的耦合度低利于代码的编写、调试、维护。主循环的执行周期是由各个子函数执行的时间以及循环末尾的延时函数共同决定的合理的设置可以控制各个模块的扫描频率在保证系统响应速度的同时也不会造成CPU被过度占用。按键函数设计按键函数是对三个独立按键进行状态检测并且执行相应的工作模式切换。本设计中的三个按键分别对应着常亮、关灯和自动这三种工作模式用它们来实现相应的功能。按键检测的主要就是读取按键对应的I/O口的电平状态来判断按键是否被按下。由于机械按键在按下和释放的瞬间会存在物理抖动直接读取电平状态不可靠需要使用消抖处理。本设计使用软件延时消抖法即先调用按键扫描函数获取按键键值如果有按键被按住则根据获取到的键值来执行相应的处理操作。按键函数的处理过程是明确的。如果得到的键值为1系统就处于常亮状态如果得到的键值为2系统就处于关灯状态如果得到的键值为3系统就处于自动状态。按键函数采用边缘触发方式只在按键按下时才切换模式防止用户长时间按压造成模式不断改变。同时函数实现模式互斥保证系统一直处在一种模式下。当用户按下某一个模式的按键的时候系统就切换到该模式自动清除其他模式的标志位保证模式状态的唯一性、确定性给处理函数后面的控制逻辑提供准确的状态依据。处理函数设计处理函数为系统控制逻辑的主要部分根据目前的工作模式以及传感器采集到的数据来确定LED灯光的开闭和亮暗程度再利用MX1508电机驱动模块来发出相应的控制信号。处理函数被周期性地调用在每次的调用过程中都会执行完成整个的控制决策以及输出更新。不同工作模式下的控制逻辑不一样要分步来设计。按键1按下时处理函数不考虑其他情况直接把灯光设置成全亮灯光一直亮着。按键2按下时处理函数不执行关灯操作。这两种手动模式会把全部控制权交给用户适配特殊环境下的使用需要。当按键3被按下后系统就进入自动的处理流程该流程会进行智能控制的操作先看有无人迹如有则再依据环境里的光照水平调节灯光的亮度发光强弱同光照强度存在反比例联系即环境越暗灯光越亮环境越亮灯光越暗若有无人灯光即会被关掉。这种反比控制策略就是本设计的主要算法它会依据光照检测模块所获取的当前光照值来不断改变灯光的发光强度。当光照值低时环境比较暗需要较强的灯光补偿光照值高时环境比较亮可以不开灯或者使用较弱的灯光。因此智能调节使系统的用电最低视觉最舒适。模块功能测试模块功能测试属于系统测试的第一步其目的是检验每一个硬件模块及软件模块是否可以单独地正常工作。首先对单片机最小系统进行测试它是其它所有的测试的基础。给系统上电之后用示波器观察晶振引脚的波形可以观察到清晰稳定的正弦波频率和晶振标称值一致。用万用表测量单片机电源引脚到地的电压应该在5V左右。如果单片机事先烧录了简单的测试程序用示波器在该I/O口上就可以看到预期的方波信号。晶振起振、电源电压正常就是单片机工作的基本条件。接下去是对输入模块的测试。人体红外检测模块的测试方法为给模块上电以后在模块前方不同距离、不同角度的地方进行移动观测模块输出引脚电平的变化。当有人移动时输出引脚应该由低电平变为高电平然后延时一段时间后再恢复为低电平。用示波器可以记录下电平变化的波形。测试时要记下感应距离、感应角度以及延时时间这些参数并同模块标称值加以对比。光照检测模块测试方法是用不同亮度的光线照射光敏电阻同时用程序读取ADC0832的转换结果并通过串口发到电脑上显示。光照越强转换数值越大光照越弱转换数值越小。用窗帘或者开关灯光来观察数值随着光照变化的趋势是否正确。在输出模块的测试过程中LCD1602显示模块的测试方法就是向LCD1602写入测试字符串查看屏幕上能否正确的显示期望出的字符。若显示有异常应该检查电源、对比度调节电位器及程序时序是否正常。MX1508驱动模块测试就是给它输入不同的PWM占空比信号看LED灯串的亮度有没有随之变化。占空比由0%逐渐增大到100%LED的亮度应该由全灭逐渐增大到全亮中间过程应该是平滑连续的不能有闪烁或者突变。经由模块功能测试可以保证每一个模块都可正常运转从而为系统联调打下根基。总 结本课题以51单片机为基础完成了需求分析、方案论证、硬件设计、软件编程、系统测试等一系列工作。设计确定了节能环保、技术落地、用户体验提高的三个主要目的按照成本控制、功能灵活的原则确定采用STC89C52单片机为主控芯片加上人体红外传感器、光敏电阻加ADC0832光照检测、LCD1602显示、MX1508驱动。硬件部分完成单片机最小系统、输入输出模块和电源模块的电路设计用模块化布局并重视抗干扰措施。软件上使用模块化编程可以实现常亮、关灯、自动这三种工作模式的切换和控制。经过测试验证系统的功能是正确的、运行是稳定的达到设计要求。尽管本设计基本上实现了预期的功能但是还存在一些不足。人体红外传感器只能够检测到移动的人体对于静止的人员不能进行有效的检测会造成灯光误关。二是光敏电阻加上ADC0832的光照检测方案虽然成本较低但是测量精度不高容易受到老化、温度漂移的影响长期使用需要重新校准。第三系统没有集成联网功能不能实现远程控制、数据采集制约了它的智能家居体系的扩展能力。第四种为外壳和机械结构的设计较简单防护等级以及美观度还有待提高。就以上不足而言可以从如下几个方面来改进。采用微波雷达和人体红外传感器相结合的方案可以提高对静止人员的检测能力也可以加上延时关灯功能以防止频繁地把灯关掉。另外可以采用BH1750等数字式光照传感器直接输出数字光照度值不需要外接模数转换器测量精度高一致性好。第三在原有基础上增加Wi-Fi或者蓝牙通信模块把系统接入到物联网平台上用户可以通过手机APP远程查看状态、手动控制灯光、定时开关大大提高系统的智能化水平。第四在软件中添加语音识别模块实现语音控制解放用户的双手。第五就机械结构提出修改意见创造较为精致且实用的外壳来提升产品的市场占有量和竞争实力。随着物联网和人工智能技术的发展智能照明系统向着越来越智能、越来越节能、越来越人性化的方向发展为本课题的研究提供了一个很好的基础。