目 录
摘 要 I
Abstract II
引 言 1
1 系统方案设计 3
1.1 系统方案论证 3
1.2 系统工作原理 4
2 硬件设计 5
2.1 单片机 5
2.2 按键设计 7
2.3 光线检测模块 8
2.4 雨滴检测模块 9
2.5 电压比较器 10
2.6 微动步进电动机 11
2.7 硬件电路原理图 12
3 系统主要软件设计 14
3.1 软件环境 14
3.2 程序设计 15
4 焊接与调试 17
4.1 电路焊接 17
4.2 系统调试 18
4.3 实物测试 18
结 论 20
参考文献 21
附录1 原理图 22
附录2 源程序清单 23
致 谢 30
摘 要
为了解决在突然出现雨雪天气不能及时收起晾晒在户外的衣物情况,满足人们更智能地收晾衣物需求,本文设计了一款基于单片机的晾衣架控制系统。该系统具有手动控制和自动控制两种控制方式。在手动控制方式下,人们可以自主选择晾衣物和收衣物。在自动控制方式下,通过光敏电阻和雨滴传感器来进行当前环境的检测,由单片机完成系统控制,通过步进电机的正反转实现晾衣机的自动伸缩。该晾衣架能够根据所处环境的光照强度以及晴雨状态来实现晾衣架的自动收晾衣物,当且仅当不下雨而且光照充足的条件下,晾衣架才会打开进行衣服的晾晒,其他任何情况下晾衣架的状态都是收衣物的状态。
本次所设计的晾衣架系统不仅能够根据环境变化实现晾衣架的自动伸缩控制,而且具有体积小、重量轻,灵活方便、适用范围广、操作比较便捷等特点。
结果表明,这款基于单片机的晾衣架控制系统彻底改变了人们的晾衣习惯,实现了足不出户就可以收晾衣物,再也不用担心外出时衣物淋雨了。
整套系统在运行中表现出极好的智能型和便捷性,备受消费者的青睐。
关键词:单片机;光敏电阻;雨滴传感器;步进电动机;晾衣架
Abstract
In order to solve the problem that clothes can’t be put up for drying in the outdoor in the sudden rain and snow weather, and to meet people’s demand of collecting and drying clothes more intelligently, this paper designs a clothes rack control system based on single chip microcomputer. The system has two control modes: manual control and automatic control. Under the manual control, people can choose to hang and receive clothes. In the automatic control mode, through the photosensitive resistance and raindrop sensor to carry out the current environment detection, by the single-chip microcomputer to complete the system control, through the stepper motor forward and backward rotation to achieve the automatic expansion of the washing machine. The clothes drying rack can automatically collect and dry clothes according to the light intensity and the state of rain and sunshine in the environment. If and only if there is no rain and sufficient light, the clothes drying rack will be opened. Under any other circumstances, the clothes drying rack is in the state of receiving clothes.
The drying rack system designed by this time can not only achieve automatic expansion and contraction control according to the environmental changes, but also has the characteristics of small volume, light weight, flexible and convenient, wide range of application, convenient operation and so on.
The results show that this single-chip microcomputer based clothes-hanger control system has completely changed people’s clothes-drying habits, realizing that you can collect and clothes-drying without leaving the house, and you no longer have to worry about the clothes getting wet when you go out.
The whole system shows excellent intelligence and convenience in operation, and is favored by consumers.
Keywords: Single chip microcomputer; Photo resistance; Raindrop sensor; Stepping motor;clothes-horse
引 言
从传统意义上讲,一般认为智能家居电器系统的出现将会给人们的生活带来品质上的提升。其实智能化、自动化家居电器正在一步一步地迈向人们所期盼的,其中最显著的变化就是系统的方便性、实用性、易整合性。
晾晒衣物、被褥是晾衣架的基本功能,但如果使用传统晾衣架,消费者必须要通过自己对晾衣架进行拉动调节,早晨开启晚间关闭也只能是手动进行,如果天空下雨消费者家里没有人或者是消费者没有察觉,那么晾衣架上的衣物就很容易沾上雨水导致衣物不干净、所晾衣物容易受潮等等,针对以上一系列使用传统晾衣架可能带来的问题,能够实现智能控制的晾衣架系统在最近几年将会得到迅速发展。基于目前的发展状况,为了能够解决人们原始操作带来的种种不便问题本文设计了一款基于单片机的晾衣架控制系统。
本次设计是为了解决人们晾衣的诸多问题,主要的功能是在自动模式下实现在没有雨的白天情况下通过传感器和光敏电阻的检测驱动电动机进行正反转来实现晾衣架的伸展和收缩情况,在自动模式下的其他任意情况下晾衣架都处于收缩状态,例如:在没有光照的情况下晾衣架处于收缩状态,在白天有光照但是所处的位置下雨的情况下晾衣架也将处于收缩状态。
人们的生活跟随着科技的迅速发展开始对智能化、实用化等产品的需求量与日俱增。智能化产品的大量生产和使用使科学力量更贴近日常生活,这样高大上的科学技术也已经渗透到我们生活中的绝大多数领域,同时也激发了更多的人们对科普知识的浓厚兴趣。人们对生活中各种电子产品的控制提出越来越高的要求,不但要求智能化而且还要求质量好。当然,各种智能家居系统作为现代人追捧的消费对象也不例外。智能家居既有居住功能,又改善了人们大部分不方便的生活方式。智能晾衣架起源于中国,是一种新兴起的行业。但在各项人工智能家具中针对晾衣工具这个方面的研究我国暂时没有得到很大的重视和研究,甚至可以用没有什么改变来形容。虽然有很多国家的各大厂家及研究人员对智能晾衣架都有较深的了解与研究,但是他们所研究出来的晾衣架只能通过消费者手动按键或者拉动的方式对所晾衣物进行相应的调整,不够智能化,不能够满足现代人的诸多需求。因此智能晾衣架也有很大发展空间,其市场研究价值很高,并且渐渐的这种生活模式将会吸引社会的很大关注。
在大多数普通人群的生活中,能够根据外界环境的不断变化而使硬件本身功能随之变化的智能晾衣架并不常见。普通的晾衣架在生活中就仅仅只有一个功能。传统的晾衣架有的是几根铁棒焊接在一起的,或者是用一根绳子搭在两个木桩上,又或者是通过滚轴和各种器材组装制成的晾衣架等等,这些晾衣架的功能并没有多智能,甚至有些产品我们买到手里并不会组装,拼接比较麻烦,位置也比较固定,不能随意移动,占用的空间也比较大,使用范围比较小,只能通过人工的方式去进行操作。在科技如此发达的今天,普通的晾衣架存在很多不便利的问题,已经不能够满足消费者的多方面需求了。如果当我们外出不在家的时候,天空突然出现下雨,晾洗的衣物在外面晾着,我们又不能够几时回来的情况下,那么这些衣物就只能被雨淋到导致重洗等现象经常出现在我们生活当中,在目前的市场发展角度上看,质量优秀、更智能、实用度高的晾衣架更会受到更多人的喜爱。
本文基于STC89C52设计的晾衣架控制系统,本篇论文主要内容如下:
第一章:系统方案设计。根据系统的选题背景和研究目的提出自己的系统方案,同时结合当前现状选择合适的主控芯片和传感器选型;
第二章:硬件设计。根据系统的方案设计,搭建焊接单片机模块、电机驱动模块、电源供电模块、雨滴传感器等模块介绍;
第三章:软件设计。程序软件的开发环境和程序设计;
第四章:焊接与调试。对事物的电路焊接和软件调试和硬件测试。
1 系统方案设计
1.1 系统方案论证
本设计为实现晾衣架控制系统设计提出两种方案:
方案一:
本方案设计主要由单片机主控电路、按键电路、光线检测、电机控制执行部分组成。主要用到的元器件有:STC89C52单片机、小马达电动机、光敏电阻等等。STC89C52单片机作为本方案的主控芯片,光敏电阻是用来识别所处环境为白天还是夜晚的光线强弱状态。
连接电源按下开关后,初始状态是自动模式,通过光敏电阻自动识别当前所处环境的光线强弱,即白天还是夜晚。当时识别出是白天,光照比较强时,电动机正转代表晾衣架伸展,用手触碰相应的限位开关,电动机停止转动代表伸展到最大;当时光敏电阻识别出是夜晚光照强度比较弱时,电动机反转代表晾衣架收缩,用手触碰相应的限位开关,电动机转动停止代表收缩到最里面,以防止发生过卷。
方案二:
本次方案设计主要由单片机主控电路、雨滴检测、光线检测、按键电路、指示灯电路、电机控制执行部分组成,主要用到的元器件有:STC89C52单片机、FC-37雨滴传感器、光敏电阻、LED指示灯、微动步进电动机等等。STC89C52单片机作为本方案的主控芯片,雨滴传感器主要是用来检测所处环境中是否存在下雨的情况;光敏电阻是用来识别所处环境为白天还是夜晚的光线强弱状态;由于雨滴传感器和光敏电阻输出信号都是电压信号,单片机无法直接处理,所以本方案使用型号为LM393的电压比较器能够将光敏电阻和雨滴传感器所输出的电压信号转化为数字量信号,然后传送给单片机进行数据处理。另外,整个系统还设计了手动模式和自动模式,用户可以根据所处环境和自己的需求对当前晾衣架所处的状态进行自由的切换,电动机方面采用了比较方便的微动式步进电动机,为了直观的看到当前系统所处于的模式和状态,设计了指示灯电路以便于观察。
连接电源按下开关后,初始状态是手动模式,用户可根据自己的需求进行收晾衣物,按下切换按钮后,系统更换为自动模式。通过光敏电阻自动识别当前所处环境的光线强弱,即白天还是夜晚。当时识别出是白天,光照比较强且雨滴传感器未检测到有雨水时,电动机正转拉动电动机上的端子(代表晾衣架上所晾的衣物)向左移动代表晾衣架伸展,当电动机上的端子移动到最左面触碰相应的限位开关,电动机转动停止代表伸展到最大;当时识别出是夜晚光照比较弱或者是在白天时雨滴传感器检测到有雨水时,电动机反转拉动端子向右移动代表晾衣架伸展,当电动机上的端子移动最右面自动触碰相应的限位开关,电动机转动停止代表收缩到最里面,电动机转动停止以防止发生过卷。
根据上述两种方案的介绍,对于本系统设计我选择方案二,因为方案一实现的电动机正反转并不能完全实现自动化,自动检测到光线后,还需要手动按一下限位开关来实现电动机正反转的停止,方案二所采用的微动式步进电动机可以实现自动停止正反转;同时,方案一只有光照检测模块,没有雨滴检测部分,这样实现出来的功能不能够完全满足用户的要求,而方案二在方案一的基础上添加了雨滴检测装置。显而易见,方案二更符合我们的实际需求,具有易操作、智能化、实用性强等优势。
1.2 系统工作原理
下面介绍一下本系统的原理及总体框图,总体框图如1.1所示。
图1.1 系统总体框图
本系统利用光敏电阻和雨滴传感器来检测当前环境,由按键电路调整当前系统所处的状态,指示灯电路和微动步进电机将信号发送给单片机,再由单片机检测指示灯电路和微动步进电动机以实现晾衣架的控制;雨滴传感器和光敏电阻将检测到的电压信号输入给LM393电压比较器中,再由电压比较器输入到单片机中进行数据处理。在自动模式下,当且仅当白天不下雨的时候,晾衣架才会打开进行晾晒衣服,其他任何情况下晾衣架的状态都是收衣物状态,这样实现了智能晾衣架的设定。
2 硬件设计
2.1 单片机
本系统需要有数据处理功能的CPU、随机存储器RAM、只读存储器ROM、多个I/O口和中断系统、定时器/计数器等功能,作为系统中的主控制器,起到核心控制的作用。因为STC89C52性能稳定、功耗低,存储量也比较大[1],所以本次设计选用主控制器型号是STC89C52的单片机。它的内部ROM存储器:8k;RAM:256k;定时器:2个(ROM:是程序存放指令代码和一些固定数值,程序运行后不可改动;RAM:用于程序运行中数据的随机存取,掉电后数据消失[2]。)32个可编程I/O口线可供用户使用;八个中断源,其部分引脚功能如表2.1所示。
表2.1 STC89C52引脚
端口 引脚 第一功能 第二功能
位置 符号 功能 符号 功能
P0 39-32 P0.0-P0.7 通用I/0口 AD0-AD7 地址数据总线
P1 43473 P1.0-P1.7 通用I/0口
P2 21-28 P2.0-P2.7 通用I/0口 A8-A15 地址总线(高位)
P3 10 P3.0 通用I/0口 RXD 串行通信发送口
11 P3.1 通用I/0口 TXD 串行通信接收口
12 P3.2 通用I/0口 INT0 外部中断0
13 P3.3 通用I/0口 INT1 外部中断1
14 P3.4 通用I/0口 T0 计数器0输入端口
15 P3.5 通用I/0口 T1 计数器1输入端口
16 P3.6 通用I/0口 WR 外部存储器写功能
17 P3.7 通用I/0口 RD 外部存储器读功能
STC89C52是双列直插式40管脚的芯片,其引脚如图2.1所示。
图2.1 STC89C52引脚图
单片机在学术上也可叫做微控制处理器[3],在众多微控制处理器中,单片机具有独特的优势。单片机因具有质量轻、所需空间小、容量大、成本低、低功耗、稳定性高等特点在20世纪70年代时得到了迅速的发展。一直到今天,随着新时代中国特色社会主义的不断壮大和发展以及十九大以来为积极响应和配合国家号召,在自动化领域越来越趋近于智能化,在科技方面,更加注重于航空、陆地、水运等方面的综合性发展;在生活方面,智能化的产品更是琳琅满目。
单片机的最小系统是指用尽可能少的外设器件和几个电路模块使单片机能够稳定运行。在大多数的STC89C52单片机的电路设计中最小系统包括:复位电路、时钟电路、电源电路[4]。本设计单片机的最小控制系统如图2.2所示。
复位电路对基于嵌入式的智能家居电器系统来说也是必不可少的,可以用来复原系统也可以用来防止由于系统的抖动而干扰系统。当系统运行不稳定的时候,可以按下复位键来终止系统的运行,系统复位的时间一般是持续5ms,本系统的复位时间是2ms,复位更快速。STC89C52单片机最小系统的复位是通过外部的复位电路来实现的[5]。最小系统复位电路的实现过程是:我们可以把单片机的复位电路理解为电脑的重启。当电脑正在被运行的时候,出现了死机的情况,此刻如果按下复位按钮,电脑内部的程序就会重新运行[6]。同样的道理,单片机也是一样的。当单片机系统正在运行,突然受到外界环境的干扰出现程序跑飞的情况,按下复位按钮,重新启动程序,这样以保护单片机不会因突然的干扰以至于系统崩溃。52单片机的复位需要在第9引脚处接低电平信号,当系统启动时,按下系统复位按钮。如果再次按释放键,系统将重新启动。在操作系统中,您可以通过主开关控制系统进行复位。
处理任何事情都要有时间上的先后顺序,单片机也是如此。为了确保系统能够稳定运行,系统必须要有一个时钟。单片机最小电路中的时钟电路是由一个晶振和两个电容构成的。本系统所选的晶振为11.0592MHZ,电容的型号取决于所选择晶振的型号来确定,所以这次设计选用的电容大小为30pF[7]。时钟电路中的这两个电容的作用是帮助晶振进行起振的,以满足控制器上电之后能够正常地进行工作。
图2.2 单片机最小系统原理图
2.2 按键设计
本设计中的按键需要能够调控晾衣架系统的状态切换,系统的手动和自动模式切换需要通过按键来实现,当系统处于手动模式下,又需要两个按键来实现收晾衣物等。本设计需要实用性强,功耗低,最好键盘之间能够相互独立的按键。
常用的按键有导电橡胶按钮和机械触点式按键。导电橡胶按钮是通过弹性复位,具有占用面积小、适合大批量生产等特点。但是使用寿命较短,使用一段时间后橡胶会出现老化的情况以至于弹力下降,同时导致灰尘更容易进入到电路里导致接触不良[8]。
机械触点式按键是利用机械的弹性来实现复位的,直接用I/O口线构成的单个按键电路,它的特点是每个按键单独占用一根I/O口线,每个按键的工作不会影响其他I/O口线的状态。电路配置灵活,软件结构简单,具有成本低,低功耗,制作简单,每一个按键之间都是相互独立的,如果某一个出现了损坏方便更换等优点。但是触点处容易侵入灰尘而导致接触不良,体积相对较大,但是由于本次设计需要用到的按键较少,所以需要占用的空间很小,不影响对系统的设计安排。
综合选择,本系统采用的是机械触点式按键,因为它满足本设计低功耗,实用性强等特点,如果在使用过程中有按键出现损坏也不会影响整个系统,方便替换,需要的成本也低。在选择了需要的按键之后,本次系统设计我使用了3个机械触点式按键,分别是手动/自动模式切换键,晾衣物键以及收衣物键,原理图如图2.3所示。K1与单片机的P35管脚相连,K2与单片机的P36管脚相连,K3与单片机的P37管脚相连。将信号输入给单片机后实现手动自动模式的切换。
图2.3 按键设计
2.3 光线检测模块
本系统中需要可以检测当前所处环境的光照强度的强弱,能够对可见光具有一定的灵敏度。当环境光照波长在0.38m以下的时候,认为光照强度较弱,本系统中判定为黑天;当环境光照波长在0.38m~0.78时,认为光照强度较强,本系统中判定为白天。
根据光敏电阻对光的敏感性可以分为:紫外光敏电阻、红外光敏电阻和可见光敏电阻。可见光敏电阻可应用于光电控制系统,本系统选用的光敏电阻是可见光敏电阻,选用5528光敏电阻,我们又可称它为光导管,其电路原理图如图2.4所示。它能在特定波长的光照射下,具有阻值迅速减小的独特特点。该光敏电阻对光的敏感性与人眼对可见光的响应比较接近,只要人眼可感受的光都会引起光敏电阻阻值的变化,随着光照强度的增大,阻值也会随之变小,环境温度为25℃的最大功率。当光敏电阻接收光线强度的波长低于0.38m时,本系统判定当前为黑天;当光敏电阻接收光线强度的波长在0.38m~0.78m时,本系统判定为白天。符合我对本系统光照的技术要求。从原理图中我们可以看出,光敏电阻将电压信号输入给电压比较器LM393中再由电压比较器转化为数字信号从OUTB管脚发送到单片机的P11管脚。
图2.4 光敏电阻电路图
2.4 雨滴检测模块
雨滴传感器作为本系统中用来检测当前系统所处环境的晴雨状态,用来配合光敏电阻完成对环境状态检测。本系统要求当光敏电阻检测到当前为黑天状态时,无论雨滴传感器是否能够检测到有雨,晾衣架都是收衣物的状态;当光敏电阻检测到当前为白天状态时,雨滴传感器检测到有雨,那么晾衣架状态为收衣物;若检测到无雨,晾衣架状态为晾衣物。
雨滴传感器又可以称为雨刷传感器,它的种类有很多,我用的型号是FC-37雨滴传感器,它的原理图如图2.5所示。
FC-37雨滴传感器是一种雨珠感应式雨滴传感器,由高品质FR-04双面材料制成,面积为5.0*4.0cm,灵敏度相对较高,具有对抗氧化、导电性、寿命方面更优越的性能。从它的构造上就可看出,当有水滴落在上面的时候,VCC和GND就会相连接,由于材质的原因,他们直接相连接不会短路[9]。当它检测到有雨滴落在它的检测器上时,它就会输出电压信号用来传递给单片机,所以根据它的这一特点完全能够满足本设计中对雨滴检测模块的要求。从原理图中我们可以看出,雨滴传感器将电压信号输入给电压比较器LM393的INA+管脚中,再由电压比较器转化为数字信号,从OUTA管脚发送到单片机的P10管脚。
图2.5 雨滴传感器电路图
2.5 电压比较器
因为单片机不能直接接收外界输入的电压信号,而本系统中用到的光敏电阻和FC-37雨滴检测器输出的信号都是电压信号,所以需要电压比较器用来将外界需要输入给单片机的电压信号转换为数字量信号。
本设计所用的电压比较器型号是LM393,它是一种高精度比较器,能够兼容逻辑电路,主要参数和特点有:电源电压工作范围宽(单电源、双电源均可工作),单电源:2.0~36V;双电源:±1.0~±18V;消耗电流小,ICC=0.8mA;输入失调电压小,VIO=±2mV;共模输入电压范围宽,VIC=0~VCC-1.5V;输出与TTL,DTL,MOS,CMOS 等兼容;输出可以用开路集电极连接“或”门。
电压比较器的所有没有用到的引脚必须接地,LM393偏置网络确立了其静态电流与电源电压范围2.0~30V无关。在通常情况下,电源不需要加旁路电容。差分输入电压可以大于VCC并不损坏器件输出负载电阻能衔接在可允许电源电压范围内的任何电源电压上[10],不受 VCC端电压值的限制。所以本次设计采用了LM393电压比较器将输出的电压信号转变为数字量信号送给单片机进行处理。其电路图如图2.6所示,从原理图中我们可以看出,电压比较器的OUTA管脚与单片机的P10管脚相连,OUTB管脚与单片机的P11管脚相连,INA-和INB-分别接两个滑动变阻器,用于调节光敏电阻和雨滴检测器的灵敏程度。
图2.6 电压比较器电路图
2.6 微动步进电动机
本设计需要控制晾衣架的收晾衣物,所以需要可以灵活实现正转、反转的电动机,且需要电机反应灵敏,具有可以快速启动、停止的能力,系统负载重量20千克即可。
本系统采用的电机是型号为DXM1159-A的2相4线式微动步进电机来实现晾衣架的伸缩功能,该步进电动机具有低成本、低功耗、精度高等优点[11]。该电动机可以承受负载0~30千克的重量。它的参数有:电机直径:15mm;电机长度:10mm;丝杆长度:60mm;滑块行程:50mm;步进角:1.8度;P极对数是3000。
根据公式1-1,我们需要知道线速度的值,根据公式1-3我们还需要知道电机的转速,所以先从公式1-2开始计算,代入数值n=6050/3000,得出n=1rad/s;将n=1rad/s再代入到公式3中线速度v=23.17.251=45.53mm rad/s。
利用公式1-2和公式1-3得到了我们想要的数据,接着计算电动机最大负载为30千克时的功率:利用公式1-1代入数据得P=0.39.830=88.2w。那么本系统设计中需要的负载为20千克即可,同样,我们把数据代入大到公式1-1中得:P=0.259.820=49w
因为在选型过程中,一定要保证输出功率大于负载所需要的功率,所以88.2w>49w,符合本设计的需求。
电机功率:P=Fv=mgv (1-1)
电机转速:n=60f/p (1-2)
线速度:v=2πR*n (1-3)
式中F----恒力,这里我们理解为恒等于重力;
f----50赫兹;
P----极对数;
R----电机直径。
微动步进电机我们还可以把它叫做丝杆电动机。由于单片机的驱动能力弱,所以选择LB1848来驱动步进电机。LB1848的作用主要是放大驱动电流使步进电机正常工作,工作电压为5V[12]。通常单片机驱动LB1848时,VCC引脚应该悬空或接电源。1N2、ENA、1N1引脚分别与单片机引脚P22、P21、P20相连,综上所述,丝杠电动机符合本设计的需要,步进电动机驱动电路原理图如图2.7所示。从图中我们可以看出,电动机的驱动模块LB1848芯片引脚IN2与单片机P22管脚相连,ENA与单片机P21管脚相连,IN1与单片机P20管脚相连,进而控制微动步进电动机的转速。
图2.7 步进电动机驱动电路原理图
2.7 硬件电路原理图
本系统硬件部分原理是由单片机最小控制系统控制整个硬件部分的运行,在最小控制系统旁边有一个下载接口,用于系统C语言程序代码的下载,整个系统使用5V电源,指示灯电路会显示现在系统所处的状态,四个指示灯分别代表自动模式、手动模式、晾衣物和收衣物,分别于单片机P00、P01、P02、P03管脚相连;当系统接通电源按下总开关后,系统默认状态为手动模式下收衣物,电动机接收到系统给的指令进行相应的转动,当触碰到限位开关SW3后,电动停止转动代表收衣物已达最大限度;同理,当触碰到限位开关SW2后,电动停止转动代表晾衣物已达最大限度,此刻,用户可根据自己的需求对晾衣架控制系统进行相应的状态调节。
当我们按下切换按键系统变为自动模式后,系统会根据光敏电阻和雨滴传感器检测到的电压信号,由电压比较器LM393将电压信号转化为数字信号输入给单片机中已实现对晾衣架的系统控制。当且仅当光敏电阻检测到当前为白天且没有雨的环境下,晾衣架才是晾衣物状态,其他任何状态都是收衣物状态。本系统硬件电路图如图2.8所示。
图2.8 硬件电路原理图
3 系统主要软件设计
3.1 软件环境
软件是在硬件的基础上对硬件的资源进行合理调配和使用,是一个专门为硬件平台开发相应的软件程序,从而完成应用系统所要求的任务,而硬件又是系统应用的基础,二者相辅相成缺一不可。本系统选用的开发环境是Keil C51。
Keil C51是由美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,且C语言在功能上、结构性、可维护性上比其他语言有明显的优势,因而易学易用[13]。
Keil C51软件对于初学者来说是一个非常好用的软件,而且它能实现在线的运行、仿真,方便初学者用来调试,不仅能让初学者在很快的时间内找到自己出错的代码,还方便改写。该软件所运用到的语言可以是C语言,也可以是汇编语言,可以应用的语言种类比较广泛,因为在初期接触到软件编程是我学的就是C语言类型,所以本次软件设计我采用的是C语言进行程序的编写[14]。该软件开发界面如图3.1所示。
图3.1 软件开发界面图
使用该软件进行程序编程和系统研发时,它的流程是:首先要创建一个新的工程项目文件,选择项目所用到的单片机型号,创建新出代码编程窗口;接着对软件中新建的源程序代码文件进行编写和保存,在编辑窗口中运用所学的C语言进行程序的运行[15]。然后,用项目管理器中生成设计者的应用,如果发现有错误,及时修改源程序中的错误,对编写的程序进行测试、下载与调试并且连接应用。这样软件会生成一个HEX文件,该文件是用来将里面的代码下载到单片机中,从而实现对整个电路的控制。
在本次设计中,下载源程序的工具是通过ISP下载工具(如图3.2所示)来完成的,也就是下载上述生成的HEX文件,具体步骤为:
图3.2 程序下载工具图标
(1)首先打开软件首页如图3.3所示;
图3.3 软件首页
(2)选择所需要的单片机型号;
(3)再选择要下载的HEX文件;
(4)选择所在的串口和波特率,其中串口号可在设备管理器中查看或更改;
(5)点击下载,得到提示后上电,完成下载,进行测试[16]。
3.2 程序设计
本系统采用的C语言编程主要使用了if、while等判断语句,当光敏电阻检测到当前是白天或者理解为当前所处环境的光照强度比较强,并且雨滴传感器未检测到当前下雨,晾衣架接到指令开始向左或向右移动,当移动到两边的任意一个限位开关的位置时,限位开关会闭合,此刻则表示晾衣架已到达指定的位置,晾衣架停止转动。
本系统的主要程序流程是:首先系统要判断出当前处于哪一种者模式,如果判断出当前模式为手动模式,那么就通过手动按键来控制步进电动机的正反转以实现晾衣服晒衣服还是收衣服;如果是当前所处模式为自动模式,那么仅在白天不下雨的情况下,晾衣架的状态才是晒衣服,在其他任何的情况下,晾衣架的状态都是收衣服的状态。系统程序框图如图3.4所示。
图3.4程序框图
4 焊接与调试
4.1 电路焊接
在选择电路焊接的方式时,原始也是最常用的焊接方法是手工焊接。当前,在工厂焊接大量的生产基本上是不采用原始的方法了,但是在普通元器件的修理、系统在测试中,最经常使用的方法就是原始的手工焊接。焊接在整个系统设计中是很重要的环节,不管我们在设计系统时想的和设计的再多,如果在焊接实物的这个过程中出现了问题,会影响到整个控制系统的运行,这个系统的设计很有可能就会以失败而告终[17]。所以说焊接的技术会直接导致设计的这个控制系统是否能够使用。焊接后实物图如图4.1所示。
图4.1 焊接实物图
为了确保系统能够正常运行,在焊接的时候要严格根据电路图认真对照,尽量避免焊接位置出现错误或者连错线等问题。在电路的焊接过程中,经常会出现焊锡不够的情况,这个时候我们需要做的是:补焊锡。但是应注意补的焊锡量不能补太多,因为很容易连接到其它器件的引脚可能会导致出现短路的情况。如果遇到了焊锡过多时,有两种方式可以解决这个问题:可以使用电烙铁放在焊接处来回滑动,用电烙铁将多余的焊锡带走,也可以使用吸锡器除焊锡。
4.2 系统调试
在系统接通电源之前,首先观察实物的焊接是否存在问题,如:有明显断裂、正负极连接、器件连接、焊接不实等。如果焊接的物体没有问题接下来我们用万用表来检测电源的正负电压,观察是否出现了严重的电源问题,如短路、断路等以确认焊接的系统没有问题。
物体焊接没有问题以后,还需要对软件程序进行调试,如果程序调试没有出现错误等问题,接下来验证系统的功能能否满足要求,如果功能存在问题,需要继续调试程序,反复进行调试直到所有功能都满足为止。
4.2.1 软件调试
在软件调试过程中,点击编译按键,文件在系统中正常运行,提示的信息可以在窗口中进行显示,若提示的信息中显示错误标识,就要根据提示找到错误程序并改正,直到错误消失。
实际在调试过程中,首次对程序进行编译时提示窗口提示错误,经过检查发现在程序句末尾遗漏的分号,除此之外出现过其他的问题,经过请教老师还有公司的师傅以及同学的帮助,一次次的编译和修改,直到程序提示没有错误为止。
4.2.2 硬件测试
首先使用万用表检测电源是否连接完好,然后检查元器件的管脚是否连接正确,有没有出现接线错误的情况。接通电源以后,观察每个元器件是否能够进行正常的工作,逐一测试功能。
在测试过程中,如果发现LED指示灯不亮,首先检查焊接情况,如果没有发现接错或虚焊情况,那么检查程序的编写是否出现错误提示;如果都没有问题,我们基本可以断定是该元器件损坏了,需要更换新的LED指示灯。
4.3 实物测试
根据本系统的设计需求,对实物功能进行逐一测试:
(1)将电动机上的端子(用来表示所晾衣物)移动到中间位置,接通电源后按下开机按钮,电源指示灯亮起,系统默认为手动模式,电动机上的端子会默认向右移动,代表晾衣架开机时默认的状态是收衣服;
(2)按下切换模式按键,系统所处模式更换为自动模式,在光敏电阻附近照明营造白天光线强度较强环境,并且保持雨滴传感器上干燥,步进电动机上的端子向左滑动,代表晾衣架伸展晒衣物;
(3) 保持光敏电阻附近照明营造白天光线强度较强环境,将一片湿巾或者蘸有水的纸巾放在雨滴传感器上营造天气中为下雨状态,步进电动机上的端子向右滑动,代表晾衣架收缩收衣物;
(4)取消光敏电阻附近的照明,用手捂住光敏电阻或者移动到光线较弱的地方,此时不管雨滴传感器上是否检测出有雨水,步进电动机上的端子都是向右滑动,代表晾衣架收缩收衣物。
所有的预设功能均得以实现,实物展示图如图4.2、4.3所示。
图4.2 实物展示图 图4.3 实物展示图
结 论
通过以上分析,本系统使用STC89C52单片机作为主控制器,由电源电路、STC89C52单片机核心电路、步进电机驱动电路、LED指示灯电路、雨滴检测模块、光照检测模块和按键电路等组成。本文着重对基于单片机的晾衣架控制系统做出了比较详细的报告,其中包括硬件部分与软件部分两大模块,并且对其中各个重要子模块增加了重点详细说明。
对于这次系统设计,我主要的设计思路是解决人们晾衣物问题,实现自动化、智能化。系统利用光敏电阻和雨滴传感器来进行当前环境的检测,当系统切换为自动模式状态下,只有当且仅当不下雨的白天的时候,晾衣架才会打开进行晾衣服,其他任何情况下晾衣架的状态都是收衣物状态,这样就实现了一种智能晾衣架的设定。所用到的器件分别有:STC89C52单片机、型号为FC-37的水滴传感器作为检测当前环境是否下雨的传感器、光敏电阻作为检测白天黑夜的传感器,由于雨滴传感器和光敏电阻输出的信号都是电压信号,所以采用了LM393电压比较器将其转变为数字量信号送给单片机进行处理。为满足用户的多种需求,整个系统还设置了手动和自动两种模式;为了直观的看出当前模式和状态,还设计了指示灯电路,电机方面采用了能够成直线运动的微动电机,有利于更加清晰的观察出晾衣架当前所处模式。
本设计主要实现的功能有:系统接通电源以后,按下总开关,系统默认为手动模式,收衣物的状态,此刻,如果用户需要手动调节可利用收晾衣物按键进行相应的调节;可观察指示灯的灯亮来确定当前所处模式和状态,从左数第一个灯表示手动模式,第二个灯表示自动模式,第三个灯表示晾衣物,第四个灯表示收衣物;按下切换按键,此时系统切换为自动模式,由光敏电阻检测当前所处环境的光照强度,若为白天,且雨滴传感器并未检测到有雨的情况下,晾衣架状态为晾衣物;若白天雨滴传感器检测到有雨的情况下,晾衣架状态为收衣物;若为黑天,那么不管雨滴传感器是否有检测到下雨,晾衣架状态都为收衣物。通过这样的设计解决了人们因工作需求或其他未在家的情况下,晾晒的衣物因下雨没有被及时收回等问题,希望会给更多的人带来智能的生活享受。
参考文献
[1] 霍孟友. 单片机原理与应用[M]. 北京: 机械工业出版社, 2004:112-125
[2] 谭浩强. C程序设计[M]. 北京: 清华大学出版社, 1999:45-78
[3] 何立民. 单片机应用系统设计[M]. 北京: 航天航空大学出版社, 2000:178-494
[4] 傅扬烈. 单片机原理与应用教程[M]. 北京: 电子工业出版社, 2002:19-65
[5] 李世荣. 智能家居控制系统的设计与实现研究[D]. 同济大学, 2008
[6]张振荣. MCS-51单片机原理及实用技术[M]. 北京: 人民邮电出版社, 2000:10-13
[7]沈红卫. 基于单片机的智能系统设计与实现[M]. 北京: 电子工业出版社, 2005:30-35
[8]林若波, 李锡丰, 郑烁. 晴雨智能晾衣架的设计[J]. 电子技术,2006(6) :31-69
[9]朱本奇. 一种智能电动晾衣装置[J]. 科协论坛(下半月),2010(10) :49-95
[10]胡学海. 单片机原理及应用系统设计[M]. 北京: 电子工业出版社, 2007:66-156
[11]杨友平. 基于89C51实现智能晾衣架控制系统设计[J]. 机械工程与自动化,2011(6) :25-78
[12]吕广红, 黄崇林, 陈晓铭.基于AT89C52的智能晾衣架的设计[J]. 机自动化与仪器仪表,2013(2) :71-73
[13]张新. 基于单片机的信号发生器设计系统[D]. 东北师范大学, 2011
[14]刘秋呈, 顾凯燕, 刘辉.感光智能晾衣架的设计[J]. 科学咨询(科技•管理),2011(5) :16-30
[15]唐荣霞. 智能家居控制系统的设计与实现[D]. 山东大学, 2009
[16]刘勇. 数字电路[M]. 天津: 电子工业出版社, 2004:201-209
[17]袁晓溪. 基于单片机的LED显示系统[D]. 吉林大学, 2015
附录1 原理图
附录2 源程序清单
#include <REGX52.H> //包含单片机内部寄存器的头文件
#define uchar unsigned char //宏定义
#define uint unsigned int
//定义微动电机管脚
sbit EN=P2^1; //使能
sbit A1=P2^0; //A相
sbit B1=P2^2; //B相
//定义限位开关管脚
sbit switch1=P3^3; //控制电机往左边的开关
sbit switch2=P3^4; //控制电机往右边的开关
//定义LM393两个输出管脚
sbit LM393_A=P1^0; //连接的是水滴传感器,水多,输出为0
sbit LM393_B=P1^1; //连接的是光敏电阻,光强为1
//定义按键
sbit key1=P3^5; //连接IO口
sbit key2=P3^6;
sbit key3=P3^7;
bit key1_flag=0; //按键标志位
bit key2_flag=0;
bit key3_flag=0;
//定义指示灯
sbit led0=P0^0; //led灯IO口
sbit led1=P0^1;
sbit led2=P0^2;
sbit led3=P0^3;
bit A_M=1; //手自动模式标志 1是手动模式,0是自动模式
bit R_L=1; //多余变量
bit Open_Close=1; //控制丝杠电机打开关闭标志,0是往右转,1是左转
void delay(uint time) //误差 0us
{
while(time–);
}
void RRM(void) //往右边走
{
EN=1; //开启使能端
A1=1; //两相点击,相位取反,转向相反
delay(400);
B1=1;
delay(400);
A1=0;
delay(400);
B1=0;
delay(400);
EN=0;
}
void LLM(void) /往左走
{
EN=1;
B1=0;
delay(400);
A1=0;
delay(400);
B1=1;
delay(400);
A1=1;
delay(400);
EN=0;
}
void key_dispose()
{
if(!key1) //按键1按下
{
if(key1_flag)
{ //清除,防止按下后连续触发
key1_flag=0;
A_M=~A_M; //手自动模式切换
}
}
else key1_flag=1;
if(!key2) //按键2按下
{
if(key2_flag)
{
key2_flag=0;
if(A_M) Open_Close=0; //如果是手动模式,则控制丝杆电机右转}
}
else key2_flag=1;
if(!key3) //按键3按下
{
if(key3_flag)
{
key3_flag=0;
if(A_M) Open_Close=1; //如果是手动模式,则控制丝杆电机左转
}
}
else key3_flag=1;
}
void AM_dispose() //自动模式判断
{
if(A_M0) //A_M0是手动模式
{
led0=0; //指示灯切换
led1=1;
if(LM393_B) //如果光照强
{
if(LM393_A) //且没有下雨,则控制丝杠电机右转,相当于晾衣物
{
Open_Close=0;
}
else //否则如果下雨,则丝杠电机左转,相当于收衣物
{
Open_Close=1;
}
}
else //否则如果光暗,则丝杠电机左转,相当于收衣物
{
Open_Close=1;
}
}
else //这个就是手动模式下,控制指示灯切换
{
led0=1;
led1=0;
}
if(Open_Close0) //Open_Close0表示要控制丝杠电机右转
{
led2=0;
led3=1;
if(switch2!=0) //没有触到右边限位开关,则控制右转,触到后停止
{
RRM();
}
}
else //控制左转的
{
led2=1;
led3=0;
if(switch1!=0)
{
LLM();
}
}
}
void Init_0_1() //中断初始化函数,初始化中断0,1
{
TMOD=0x10; //设置定时器0工作模式2 8位自动重装 256
EA=1; //打开总中断开关
TH1=0x3C;
TL1=0xb0;
ET1=1;
TR1=1;
}
void main()
{
while(switch1!=0) //³初始化电机位置,默认为关闭{LLM();}
Init_0_1(); //定时器配置
while(1)
{
AM_dispose(); //自动模式下判断天色和天气
}
}
void time1() interrupt 3 /定时器中断服务函数
{
TH1=0x3C; //重新转载初值,定时时间50毫秒
TL1=0xb0;
key_dispose(); //调用按键扫描函数
}
致 谢
经过几个月的忙碌工作和用心设计,毕业设计即将就要结束了,非常感谢孟军红老师和张有成老师的耐心指导,在校四年期间各位授课老师细心的教导,也非常感谢学校给我很多实践的机会。在整个设计过程中,我受到了老师们的热切关注和耐心辅导,他们给我提出了很多指导性的意见及建议,在我的整个毕业设计中起到了关键性和决定性的作用。这一段时间里,我感到自己的收获是非常大的,使我在专业技能、动手能力多方面都有了很大的提高。
当我在毕业设计中遇到了问题和麻烦时,老师会引导我如何去分析问题、一点一点去尝试找到解决问题的方法。这个过程使我受益匪浅,让我明白做一件事情的成功与否有时候失败和挫折也是一种成功,只要勇敢去做,不要硬把功利心带到设计中来,要注重的是享受这个过程,这个过程是书本学不到的。从选择课题到现在完成毕业设计论文,尤其是在课题设计的前期准备工作和设计的过程中,老师提出了许许多多宝贵的设计意见,在最后的论证修改过程中孟老师还在百忙之中,抽出时间对我的论文提供了必要的指导和帮助。其实出现问题并不可怕,最可怕的就是不知道问题出在了哪里。有时候,我们需要的或许只是一个解决方案或者是一个思路,剩下的就是不断去尝试,感谢孟军红老师和张有成老师帮忙提供的一个又一个宝贵的思路,更要感谢在此期间遇到的每一个人,感谢身边的朋友,他们的出现会让我斗志满满,每当遇到挫折或者各式各样的挫折的时候,会找自己的老师或者同学聊聊天,一起探讨彼此出现的问题,互相为对方提出问题并且解决问题,感谢你们的包容与陪伴,鼓励与支持,在我看来,能够完成这个作品并且顺利地毕业,应该就是对他们和自己最好的交代。
在这里也非常感谢母校的辛勤培育之恩!感谢它给我提供的良好学习及实践环境,使我学到了许多新的知识,掌握了一定的操作技能。感谢和我在一起进行课题研究的同学们,和他们在一起讨论、研究使我受益非浅。最后,我非常庆幸在四年的学习、生活中认识了很多可敬的老师和可亲的同学,并感激师友的教诲和帮助!