基于STC89C52的智能全自动洗衣机控制系统设计
张哲,李智,管四海
(西安电子科技大学 机电工程学院,陕西 西安 710071)
:为了降低全自动洗衣机的运行功耗、提高运行的稳定性、降低制造成本以及更方便的操作,设计了一种基于STC89C52单片机的全自动洗衣机控制系统。该控制系统由蓝牙部分、红外热释部分、LCD1602液晶部分和直流电机等组成。其中,采用蓝牙无线通信技术以实现在长距离移动终端上控制洗衣机运行的参数;通过红外热释电传感器控制,以便于取衣操作。最后,给出了该控制系统的硬件结构和软件流程,且通过Proteus仿真测试验证了该控制系统是简便有效的。
: STC89C52;蓝牙无线通讯;红外热释电;智能家居
:TP13文献标识码:ADOI: 10.19358/j.issn.1674-7720.2017.07.030
引用格式 :张哲,李智,管四海.基于STC89C52的智能全自动洗衣机控制系统设计[J].微型机与应用,2017,36(7):102-105. 0引言*基金项目:国家自然科学基金(61673310)由于全自动洗衣机具有对洗涤物品的破坏性弱、一次可洗涤大量衣物、节省劳动力等优点,使它受到广泛的使用并走进了千家万户[1]。但随着智能家居概念的提出、传播和在生活中的初步使用,使得人们对全自动洗衣机在价格低廉的基础上又提出了性能可靠、洗衣功耗低、操作简单、工作效率高以及便于维修等要求。然而目前的全自动洗衣机仅具有洗涤、甩干和暂停等几大简单洗涤功能,不足以满足人们对于智能化控制的需求。此外,传统洗衣机的运行状态显示常采用数码管,这就导致运行状态不清晰,错误代码不明确,缺乏人性化,进而对洗衣机的操作和维护带来极大的不便。
为了有效解决以上问题,本文利用HC05蓝牙模块、矩阵式键盘、LCD1602液晶显示屏和红外热释电传感器,基于STC89C52设计了一种智能控制系统。其中,利用HC-05蓝牙模块以及矩阵式键盘分别实现无线移动终端控制洗衣操作以及近距离人机操作;利用LCD1602液晶显示屏以清晰的英文标识显示当前的工作状态并配有高亮度的背光,结合红外热释传感器为洗衣机的操作提供极大的便利。
1控制系统的总体设计
此控制系统由STC89C52、蓝牙串口电路、电机驱动电路、矩阵键盘电路、LCD1602液晶显示模块、红外热释电模块和报警电路组成,系统框图如图1。
图1系统框图在图1中,STC89C52作为微控制器,用于实现控制算法;蓝牙传输模块用于实现无线远距离设定洗衣机的洗衣模式、洗衣时间等;LCD1602用于显示当前工作状态(比如洗涤、脱水和洗涤模式)以及工作时间;由于STC89C52驱动能力有限,只能输出10 mA左右的电流,所以利用电机驱动电路为电机进行电流放大从而驱动电机运行;红外热释模块主要驱动照明设备为工作人员在黑暗条件下操作洗衣机提供方便;报警电路主要用于电机损坏和意外断电等突发情况以及洗涤结束后的提醒。
2主要硬件设计
2.1STC89C52单片机系统
STC89C52系统主要由微控制器(MCU)、时钟电路和复位电路组成。STC89C52完全兼容8051单片机的特点,其主要参数为:时钟频率最高可达80 MHz;内置有5个中断源,分为两个优先级,每个中断源的优先级是可以编程的,4个8位输入/输出口(P0,P1,P2,P3);有一个全双工的串行口,其有4种工作方式,可通过设置SMOD寄存器进行配置;有3个16位的定时器/计数器[2]。由于STC89C52单片机除P0口外内部均嵌有上拉电阻,因此对于P0口在其外部必须接上拉电阻以保证电平的可靠性。其次,其复位电路采用上电给电容充电进而自动复位的方式。此外其串口(P3.1, P3.2)连接蓝牙模块的串口(TXD, RXD),P2口接洗衣机的功能键盘,P0口作为液晶的数据总线,P1.7口作为其报警电路的蜂鸣器控制端。
2.2蓝牙串口电路
蓝牙通信的原理类似于单片机和计算机之间的串口通信,二者之间的通信需要借助串口,其通信示意图如图2[3]。
图2中GND表示单片机和HC-05系统的参考地,TXD是串行发送引脚,RXD是串行接收引脚。HC05和单片机之间通信,为保证电源基准相同,故将单片机的GND与HC-05的GND连接起来。其次为构建通信通道,将单片机的接收引脚与HC05的发送引脚连接起来,作为单片机的接收通道;将图2蓝牙接线示意图单片机的发送引脚和HC-05的接收引脚连接起来,作为单片机的发送通道。HC05蓝牙串口电路原理图如图3。
2.3红外热释模块
红外热释传感器的原理[4]是通过其内部传感器感知人体发射的红外光谱从而产生高电平信号,当人离开传感器的感应区则自动关闭高电平,输出低电平。此外,红外热释传感器微功耗,静态电流只有65 mA。其VCC接电源正极,GND接电源负极,OUT1接1 kΩ的限流电阻后接LED小灯。
2.4电机驱动电路
STC89C52输出的高电压为5 V,低电压为0 V,电流为10~20 mA。然而直流电机的启动电流为200~400 mA,不足以驱动电机运行,故选取L298电机驱动模块以放大电流。直流电机PWM控制系统的主要功能包括:通过控制两个输入引脚的电平信号控制直流电机的正转、反转和急停,且可通过调整电压大小调整电机的转速,能方便地实现电机的智能控制[5],其控制功能见表1。
L298中的 ENA、ENB为使能端口,ENA用来控制左边的电机,ENB用来控制右边的电机;IN1、IN2、IN3、IN4为控制引脚,用来设置三极管的开关状态。通过H桥来控制电机的运行,当使能端为高电平时控制有效;使能端为低电平时,输入端对电机的控制失效[6]。输入端的一个引脚接PWM信号,另一个输入端接低电平时电机正转;当该引脚输入低电平另一个引脚输入PWM信号时,电机朝另一个方向运行。当两个输入端的电平信号相同时, 电机快速停止。引脚以及功能如表2所示。
3软件设计
3.1软件整体结构设计
系统程序分为主程序、定时器中断程序、延时程序、LCD1602液晶显示程序和电机驱动程序等几部分。定时中断0用来控制洗衣进程的时间和电机正反转,通过外部中断0进行相应功能的倒计时,在此期间,如果停止键按下,则终止进程,返回初始界面。延时程序用于LCD1602液晶显示屏的写操作的等待。电机驱动程序用来控制相应控制引脚的高低电平。控制系统流程图如图4。
3.2蓝牙串口程序
在UART通信过程中,采用LSB方式即先发送数据的低位再发送数据的高位,再使TXD为低电平并持续一段时间,直到将8位二进制数字全部发送完毕,与此同时对TI和RI置1。其次,为了手机(上位机)与洗衣机能够正常通信必须设置两者为相同的波特率,因此就需要使用单片机的定时器1,利用公式:波图5蓝牙串口流程图
特率=(2SMOD/32)×(T1的溢出率)[2],设置本系统波特率为9 600 b/s;在使用串口时,当接收到或者发送完数据后,会对标志位进行置1,但是串口中断不会像定时器中断自动地对标志位进行清0,需要软件对标志位进行清0。蓝牙串口接收数据的具体流程如图5所示。
3.3矩阵键盘子程序
矩阵键盘由16个按键组成,由于单片机的引脚有限,故将其设置成4行4列,进行行扫描或列扫描以减少对 IO口的使用。此外,为避免按键按下时出现抖动,因此需要去抖处理。按键扫描如图6所示,按键去抖流程图如图7所示。
3.4LCD1602液晶显示
LCD1602液晶[5]内部带有80 B的显示RAM,用来发送数据,它的结构如图8。
第一行地址是0X00~0X27,第二行是0X40~0X67H,其中第一行0X00H~0X0F是与液晶上第一行16个字符显示位置相对应的,第二行0X40H~0X4F是与第二行16个字符显示位置相对应的。而每行多出来的一部分是为了显示移动字幕[7]。
基本操作时序:
读状态:
输入:RS=L,R/W=H,E=H;
输出:D0~D7 状态字;
读数据:
输入:RS=H,R/W=H,E=H;
输出:无;
写指令:
输入:RS=L,R/W=L,E=H,D0~D7=指令码;
输出:D0~D7数据;
写数据:
输入:RS=H,R/W=L,E=H,D0~D7=数据;
输出:无。
操作1602液晶显示的流程如下:
(1)通过RS信号确定是向LCD写数据还是写命令;
(2)读写模式设置(R/W)为写模式,即将R/W设置为低电平;
(3)将数据或者命令送达数据总线上;
(4)给使能信号端EN一个高电平信号,将数据送入LCD的RAM,完成写操作。
4实验结果与分析
为了进一步验证本文设计的控制系统简便有效,利用Keil编写程序并进行Proteus仿真,仿真结果显示洗衣机运行正常、液晶显示信息正确。根据原理图以及仿真图制作硬件模拟实物,通过Ecilpse编写蓝牙串口Android版软件,在非开阔的环境下对不同距离的通信情况进行测试,通过手机蓝牙串口软件控制全自动洗衣机的运行,观察能够操作洗衣机的极限距离。
调试结果表明,HC-05蓝牙模块的有效通信距离为0~25 m,在此范围内手机与洗衣机通信正常。实验结果如表3所示。该系统能够实现远距离控制洗衣机的运行状态,功耗低,控制时间准确,操作简便,人性化,全自动洗衣机工作状态清晰可见,适合不同年龄层次的用户使用。Proteus仿真结果如图9所示。图9进水模式Proteus仿真结果在Proteus仿真中通过设置串口或者矩阵式键盘来设置洗衣机的工作参数,相比传统洗衣机的独立式按键更加简便、快捷,只需要针对所需要设置的功能设置按键即可。
图9是全自动洗衣机进水状态下的仿真结果。对应的LED显示当前正在进行的状态, 通过带有背光的LCD液晶显示屏显示工作状态以及剩余时间,相比传统的数码管显示更加准确清晰。通过仿真可看出电机的转动状况。红外热释在黑暗的条件下感知到人经过时就会点亮以辅助人的取衣操作。通过Proteus软件仿真以及实际的硬件测试验证得出,本控制系统相比传统全自动洗衣机控制系统,不仅能实现远程控制运行、人体感应取衣操作、操作简单快捷、更加人性化、智能化,而且使用STC89C52作为控制芯片大大降低了运行功耗和加工成本。另外,经过硬件测试,在电机异常的状态下洗衣机能够发出相应的警报并且将存在的问题通过LCD液晶显示出来,极大地降低了维护的难度。
参考文献
[1] 刘晓彤. 基于Proteus的全自动洗衣机控制系统设计[J]. 微计算机信息, 2012: 28(9):146-148.
[2] 温宗周. 孟建华. 单片机原理与接口技术[M].北京:中国电力出版社, 2009.
[3] 赵勇. 嵌入式系统蓝牙模块设计[D]. 北京:北京交通大学,2007.
[4] 徐青山, 李正云. 红外热释电人体感应饮水机智能控制开关:中国,CN201830232[P].2010-10-29.
[5] 刘树中, 孙书膺, 王春平.单片机和液晶显示驱动器串行接口的实现[J]. 微计算机信息, 2007,23(2):49-53.
[6] 彭鸿才.电机原理及拖动[M]. 北京:机械工业出版社, 2007.
[7] NXP. NXP Semiconductors “TJA10 42 Rev. 7-8”[S]. 2012.
如何应用单片机设计智能型节能路灯控制系统
基于单片机STC89C52、STC12C2052A/D,采用集成运放LM358、MOS管IRF614实现了智能型节能路灯控制系统,系统分为支路控制器和单元控制器两个部分,采用主从式485总线传输控制方式,实现了集中控制和就地控制,该系统具有传输距离远、响应速度快、操作简便、性价比高、工作稳定可靠等优点。
路灯是城市的重要公共安全和景观设施,也是能源消耗大户,实现智能照明,不仅节约能源,更有利于环境。经过了解,现在大量的路灯都是根据四季不同的天黑天亮时间来控制路灯的开关,先进一点的也不过是简单的光敏控制,一直从天黑开到天亮,中间不管有没有行人、车辆通过都是不会关断,这样就造成了大量的能源浪费。
为了能高效节能的控制路灯,合理地利用能源,为现代城市的道路提供一个良好的照明环境,本文设计了一种基于单片机的智能型节能路灯控制系统,该系统能够需要独立控制每盏路灯的开关与照度,它根据行人或者车辆通过情况和照明范围,自动开关路灯并控制其照明度,经实际运行,效果较好。
硬件电路设计
1 系统组成
路灯控制系统采用集成运放LM358、MOS管IRF614实现。支路控制器实现对所有照明单元状态的状态收集、显示、判断与发出控制命令,是整个系统的控制核心部分;单元控制器是系统的执行终端,完成对该单元所有状态的采集与通信,接收支路控制器的控制指令并执行。系统组成基本框图如图1所示。
2 模块电路设计
(1)控制方案
系统采用集中控制和就地控制相结合的方式。支路控制单元可以集中对各个单元电路进行控制,同时各个单元控制电路也可以根据所采集的状态,进行综合判断,并做出相应的控制动作。整个系统的控制方式灵活,两种方式互补,既减轻了支路控制器的负担,使整个系统的控制容量可以做得很大;又可以避免支路控制器的故障而导致整个系统的瘫痪,保证各个单元仍然能够正常的工作。
图1 系统基本组成框图
(2)信息传输方式
由于传统的232通信方式传输距离有限,在实际路灯系统中,无法实现远距离路灯的控制,本设计采用485通信方式,该方式除了具有232通信的优点外,还具有传输距离远的特点,在2400B的码元速率下,传输距离可达10KM以上。为实际路灯控制系统提供远距离传输保证。
(3)移动物体定位检测
采用红外通信编码,其灵敏度较高,传送距离较远,光源安全,电路简单并易于实现。
(4)恒流源电路
如果选择单独运算放大器构成恒流电路,输出电流只能达到几十毫安,不能满足LED照明所需电流,必须加入扩流电路。系统采用高精度运算放大器LM358和MOS管IRF614扩流电路组合,可以实现精确的恒流电路。支路控制器和单元控制器硬件电路结构框图如图2和图3所示。
图2 支路控制器框图
图3 单元控制器框图
工作原理
系统的支路控制器和单元控制器分别采用STC89C52和STC12C2052A/D单片机,这两种MCU具有1个232口和1个SPI通信口。
移动物体检测采用红外通信编码的方式。这种检测不持续发射,而是每隔5ms发射一个持续时间为0.25ms、频率为40KHZ的载波信号,相当于“红外雷达”,对≥50cm长的物体以180千米/小时通过时,其经过探头的时间为10ms,可被检测两次,完全能满足检测需要。检测原理如图4所示。
图4 红外检测原理示意图
图5是恒流源电路,采用LM358搭建而成。第一级运放构成跟随器,可以得到第一级同相端3脚的电压与第二级运放同相端5脚的电压相等,从而得到反相端6脚的电压与3脚的电压相等,该电压经电阻R14形成一个恒定电流。因此,调整3脚输入的电压,就可以改变恒流源的电流。电路简单,元件很少,灵敏度高,不需要对外围元件进行匹配调节,真正实现免调试功能。
电源波动影响极小,电压从10V~36V变化,其恒流稳定性超过1/1000。其等效内阻高达70MW以上。其上端增加了功率限流电阻,防止电流过大而造成路灯损坏。
图5 恒流源原理电路
为了实现对路灯的调光,达到智能控制照明度,单元控制系统采用了对路灯驱动电源功率的闭环控制,利用PWM脉宽调制[7]实现调光功能。同时,利用光敏电阻对环境光线以及路灯状态进行监测,作为该调节电路的反馈输入,使得路灯的亮度跟随环境光线的变化以及路灯开闭的状态实时线性调整。
故障自动检测电路。系统能够对恒流源基准电压、路灯回路电流以及路灯状态进行反馈采集,并进行综合判断,得出系统工作状态。当系统控制输出值与恒流源基准电压值偏离时,回路未工作在恒流状态恒流源电路故障;当系统控制灯亮,而反馈路灯状态为灭时,路灯回路故障,此时,若恒流源基准电压为0,说明路灯开路;若恒流源基准电压正常,则说明路灯短路。系统实时查询上述各状态,形成故障自动检测体系。
软件设计
1 软件流程图
支路控制器电路软件流程如图6所示。它包括定时中断和响应按键两部分。定时中断部分产生一个时钟节拍,定时读取时钟芯片时间、轮询各单元控制器的数据、刷新LCD显示;响应按键部分则根据按键进入功能界面,完成各种功能选择、初值设定。这种设计方式在中断里面仅仅处理相应标志位,而在程序主循环中根据标志处理任务。
图7是单元控制器电路软件流程图。它包括串口通信和T0定时器模块两部分,其中T0定时器包括电子表、软件脉宽调制、键盘、软件红外系统、实时故障诊断以及动态显示六个子模块,系统不工作的间隙都是处于睡眠状态,有利于进一步减小系统功耗。
图6 支路控制器电路软件流程图
图7 单元控制器电路软件流程图
2 软件设计特点
主从式多机通信方式:在主从式多机通信系统中,当主机轮询从机时,未被呼叫的从机不停接收主机下发的信息,产生接收中断,增加从机的工作负担,使从机的工作效率极低。在本系统中,为了避免这种情况的发生,采用了一套多机通信协议,协议中包含地址帧,从机收到地址帧后,判断是否呼叫本机,再决定是否继续后续的数据接收[8]。从而提高从机的工作效率。
环境光照自适应学习:在系统中,单元控制器还可以根据环境光照的变化调整路灯明暗。系统以光敏电阻实时采集环境光照的变化,反馈给单元控制器MCU。由于不同场合、或同一场合不同时间的环境光照均有差别,且光敏电阻光电特性也有个体差异,系统增加了环境光照自适应学习和校正的功能。以开机后30秒内的光照对应的AD采样均值为基准,动态调整路灯开关阈值与功率调整基准。
友好的人机界面:支路控制器采用128*64的LCD为显示屏,以6键键盘为输入设备,可实时显示路灯状态,系统时间,报警时间等多种信息,设置系统时间、开关灯时间、设置路灯功率、与单元控制器工作模式。采用交互式的人机界面设计操作方便,不需要关机就可以从一种状态切换至其他状态。采用前后台系统的设计思路,在中断里面处理事件标志,主流程中检测标志处理具体事务,程序有很强的健壮性。
系统测试
1 根据环境明暗自动开灯关灯测试
测试方法:模拟环境的明暗变化,采用人为改变环境明暗以及遮挡环境光监测光敏电阻的方法来实现。开关灯阈值由系统自动学习设定。在实验室进行的测试结果如表1所示。
表1 环境明暗自动开关灯测试结果
当环境暗于阈值时,灯打开;当环境亮于阈值时,灯关掉。本测试在每个不同的阈值情况下,都做了多次测试。结果表明,本系统完全能够根据环境的明暗,而自动开灯或关灯。
2 根据交通情况自动调节照明度
测试方法:在外界环境条件一定的情况下,推动可移动物体在模拟道路中移动,测试2个LED灯状态。结果如表2-1与表2-2所示。
表2-1物体从左向右移动时测试结果
表2-2 物体从右向左移动时测试结果
从测试结果分析,本系统完全能够满足非常精确的要求,根据交通情况自动调节照明度。
3 恒流源电路测试
测试方法:调整运放的输入端电压,使得电流分别为10mA、100mA、200mA,用可调直流稳压电源改变系统输入电压,用三位半数字三用表测试电流。测试结果如表3所示。
从表中可以看出,不同档位的电流在电压变化时稳定性高,电压波动对恒流源电路的影响极小,电压从10V~36V变化,其恒流稳定性超过1/1000,性能非常优越。
表3 恒流源测试结果
4 调光功能电路测试
测试方法:将一个三用表串入LED灯驱动电源回路测试电流,另一三用表测试LED灯两端电压,计算实际功率。测试结果如表4。
表4 调光功能测试结果
在功率设定完成后,电路中的电流瞬间改变到表中的测试值,表明功率调节功能可以在瞬间完成;由表中可以看出,误差最大的是100%功率档,为1.44%;误差最小的是50%功率档,为0.02%,精确度非常高。
5 定时开关灯测试及故障测试
定时开关灯测试方法:对每个路灯单独设定和对两个路灯同时设定两种情况都进行了测试。经多次测试表明,系统完全能够按照设定的时间和要求,准确地实现开灯和关灯功能。
故障测试方法:在进行故障测试时,人为地使路灯短路或开路,观察支路控制器的显示及声音。结果表明,当故障发生时,支路控制器能够及时发出声光报警信号,同时,LCD液晶屏上显示相应的故障和地址编号,均能达到最初我们设想的要求。
结束语
本系统实现完全智能化控制,移动物体的距离测量最高达到0.3cm,恒流源功率测试误差≤0.02%。系统具有闭环自动检测和学习自适应功能,同时具有完备的指示和保护系统,增强了系统的安全稳定性,通过设计运行实验,效果较好,同时系统可实现在线远程升级功能,提高了系统的可维护性。
本文编自《电气技术》,原文标题为“基于单片机的智能型节能路灯控制系统”,作者为王正、王洪诚、傅磊。
相关问答
用 单片机控制 一个 led 灯,需要哪些电子元件啊,要什么型号和大小例如电阻要说明几欧的?如果要求元件最少的话,需要一个STC12c2052单片机,一个普通的LED,还有5V电源,要求再多点元件的话,可以再加一个1K的电阻,两个30pF的电容,12M的晶振等如果要求...
单片机 一个IO口如何 控制 两颗发光二极管( LED )?单片机的一个GPIO只能输出0和1两种状态,如果控制一个LED灯的话,可以实现LED的亮灭控制。两个LED具有四个状态:1)同时亮;2)同时灭;3)一个亮一个灭;4)一个灭...单...
51 单片机 串口 控制led 灯方法是什么?51单片机通过串口控制LED灯需要按照以下几个步骤:1.硬件连接将LED灯连接到单片机的一个GPIO口,控制LED灯的开启和关闭。将串口连接到单片机的RX、TX引脚。...
怎样用 单片机控制 两个 LED 同时亮?很简单。一个LED,正极接IO引脚,负极接地。即可实现:IO口输出1时,灯亮。另一个LED,正极接正电源,负极接IO引脚。即可实现:IO口输出0时,灯亮。注...
如何用STM32 单片机控制LED 灯带的颜色改变?RGB三原色LED彩灯,由红色、绿色和蓝色三个独立的灯珠构成,常见的有四个引脚,一个公共端和三个颜色控制端。三个颜色任意组合可以产生其他颜色,如红色和绿色同...
用五一 单片机控制led 灯亮两秒灭一秒程序编写?#include#includevoiddelay1s(){unsignedchari,j,k;for(i=10;i>0;i--)for(k=200;k>0;k--)fo...
单片机led 闪烁的原因?32单片机LED灯闪烁的原因可能有以下几种:程序设计问题:如果程序中存在错误或者逻辑不严谨,可能会导致LED灯闪烁。例如,程序中可能存在死循环或者延时不准确...
keil软件用 单片机控制 8个 LED 流水灯来回点亮(C语言程序)?//==============================//8个LED闪烁//-------------------------------------#include//========...
单片机控制的led 灯闪烁适用什么场合 - 187****9709 的回答 -...信号灯,电子玩具。充电装置这个在一些节日彩灯或者广告牌上用的比较多
单片机 、光耦[回答]1系统总体结构原理粮食在储藏期间,由于受环境、气候和通风条件等因素的变化,粮仓内温度或湿度会发生异常,这极易造成粮食的霉烂、或发生虫害。那么...