单片机洗衣控制.docx
《单片机洗衣控制.docx》由会员分享,可在线阅读,更多相关《单片机洗衣控制.docx(25页珍藏版)》请在冰豆网上搜索。
单片机洗衣控制
1绪论
1.1本课题的研究目的和意义
洗衣机是人们日常生活中常见的一种家电,已经成为人们生活中不可缺少的家用电器。
在工业生产中应用也十分广泛。
但是传统的基于继电器的控制,已经不能满足人们对洗衣机的自动化程度的要求了。
洗衣机需要更好地满足人们的需求,必须借助于自动化技术的发展。
而随着单片机技术的发展,用单片机来作为控制器,就能很好地满足洗衣机对自动化的要求,并且控制方式灵活多样,控制模式可以根据不同场合的应用而有所不同。
自动化技术的飞速发展使得洗衣机由初始的半自动式洗衣机发展到现在的全自动洗衣机,又正在向智能化洗衣机方向发展[1]。
单片机又称微控制器,或称嵌入式控制器。
而现在的智能家电无一例外是采用微控制器来实现的,所以家用电器是单片机应用最多的领域之一。
它是家用电器实现智能化的心脏和大脑。
由于家用电器体积小,故要求其控制器体积更小以便能嵌入其结构之中。
而家用电器品种多,功能差异也大,所以又要求其控制器有灵活的控制功能。
单片机以微小的体积和编程的灵活性而产生多种控制功能,完全可以满足家用电器的需求。
1.2洗衣机的发展和分类
1.2.1洗衣机的发展
从古到今,洗衣服都是一项难于逃避的家务劳动,而在洗衣机出现以前,对于许多人而言,它并不像田园诗描绘的那样充满乐趣,手搓、棒击、冲刷、甩打……这些不断重复的简单的体力劳动,留给人的感受常常是:
辛苦劳累。
1858年,一个叫汉密尔顿·史密斯的美国人在匹茨堡制成了世界上第一台洗衣机。
该洗衣机的主件是一只圆桶,桶内装有一根带有桨状叶子的直轴。
轴是通过摇动和它相连的曲柄转动的。
次年在德国出现了一种用捣衣杵作为搅拌器的洗衣机,当捣衣杵上下运动时,装有弹簧的木钉便连续作用于衣服。
19世纪末期的洗衣机已发展到一只用手柄转动的八角形洗衣缸,洗衣时缸内放入热肥皂水,衣服洗净后,由轧液装置把衣服挤干。
1874年,“手洗时代”受到了前所未有的挑战,美国人比尔·布莱克斯发明了木制手摇洗衣机。
这套装置的问世,让那些为提高生活效率而冥思苦想的人士大受启发,洗衣机的改进过程开始大大加快。
1880年,美国又出现了蒸气洗衣机,采用了智能水循环系统,可将高浓度洗涤液与高温蒸气同时对衣物进行双重喷淋,贯穿全部洗涤过程,实现了全球独创性的“蒸汽洗”全新洗涤方式。
蒸汽洗衣机之后,水力洗衣机、内燃机洗衣机也相继出现。
1910年,美国的费希尔在芝加哥试制成功世界上第一台电动洗衣机。
电动洗衣机的问世,标志着人类家务劳动自动化的开端。
1922年,美国玛塔依格公司改造了洗衣机的洗涤结构,把拖动式改为搅拌式,使洗衣机的结构固定下来,这也就是第一台搅拌式洗衣机的诞生。
搅拌式洗衣机结构科学合理,受到人们的普遍欢迎。
1932年,美国本德克斯航空公司宣布,他们研制成功第一台前装式滚筒洗衣机,洗涤、漂洗、脱水在同一个滚筒内完成。
这意味着电动洗衣机的型式跃上一个新台阶,朝自动化又前进了一大步!
第一台自动洗衣机于1937年问世。
这是一种"前置"式自动洗衣机。
靠一根水平的轴带动的缸可容纳4000克衣服。
衣服在注满水的缸内不停地上下翻滚,使之去污除垢。
到了40年代便出现了现代的"上置"式自动洗衣机。
随着工业化的加速,世界各国也加快了洗衣机研制的步伐。
首先由英国研制并推出了一种喷流式洗衣机,它是靠筒体一侧的运转波轮产生的强烈涡流,使衣物和洗涤液一起在筒内不断翻滚,洗净衣物。
1955年,在引进英国喷流式洗衣机的基础之上,日本研制出独具风格、并流行至今的波轮式洗衣机。
至此,波轮式、滚筒式、搅拌式在洗衣机生产领域三分天下的局面初步形成。
60年代的日本出现了带干桶的双桶洗衣机,人们称之为“半自动型洗衣机”。
70年代,生产出波轮式套桶全自动洗衣机。
70年代后期,以电脑(实际上微处理器)控制的全自动洗衣机在日本问世,开创了洗衣机发展史的新阶段。
80年代,“模糊控制”的应用使得洗衣机操作更简便,功能更完备,洗衣程序更随人意,外观造型更为时尚。
90年代,由于电机调速技术的提高,洗衣机实现了宽范围的转速变换与调节,诞生了许多新水流洗衣机。
此后,随着电机驱动技术的发展与提高,日本生产出了电机直接驱动式洗衣机,省去了齿轮传动和变速机构,引发了洗衣机驱动方式的巨大革命。
之后,随着科技的进一步发展,滚筒洗衣机已经成了大家耳濡目染的产品。
伴随着科技的进一步发展,相信新型更适合人们使用的洗衣机会给我们的生活带来新的方式[2]。
1.2.2洗衣机种类
家用洗衣机的种类很多,按其结构原理可以分为以下几类:
1、波轮式洗衣机:
这种洗衣机的主要优点是洗涤时间短,洗净度较高,水位可调,品种多,适宜于洗涤棉、麻、纤和混纺等织物。
缺点是易使衣物缠绕,影响洗净的均匀性,磨损率也较高。
新颖的大波轮、新水流洗衣机,其性能有明显的改善。
2、滚筒式洗衣机:
其优点是洗涤动作比较柔和,对衣物的磨损小,用水量和洗涤剂都比较省,适合洗涤毛料织物。
但机器结构复杂,洗净度低,耗电量大,售价较高。
3、搅拌式洗衣机:
这种洗衣机好似手工洗涤的揉搓,衣物受力均匀,衣物磨损小,洗涤容量大。
缺点是洗涤时间长,结构比较复杂,售价高。
4、喷流式洗衣机:
其特点是洗涤时间短,污垢容易洗掉,机器结构简单,故障较少。
但由于水流激烈,衣物容易拧绞在一起,因而洗涤不均,对衣物损伤较重,洗涤时洗涤液容易飞溅[3]。
除此之外还有波轮搅拌式洗衣机、喷淋漂洗洗衣机、振动式洗衣机、超声波洗衣机等等。
1.3课题研究方向
洗衣机的洗涤原理是由模拟人工洗涤衣物发展而来的,即通过翻滚、摩擦、水的冲刷等机械作用以及洗涤剂的表面活化作用,将附着在衣物上的污垢除掉,以达到洗净衣物的目的。
现今,大多数的洗衣机都使用以单片机为核心的控制电路来控制电动机、数码显示管、进水阀、排水阀及蜂鸣器的电压输出,使洗衣机根据程序运转。
本设计在设计洗衣机的控制系统时,洗衣机通过控制系统设定洗衣程序,在内桶(洗涤脱水桶)自动完成注水、洗涤、漂洗、浸泡、排水和脱水全过程。
洗衣时,控制系统打开进水电磁阀,开始注水;当洗涤脱水桶内的水位达到系统设定值时,水位检测器向单片机发送一个低电平,通知控制系统关闭进水电磁阀,同时启动电机洗衣。
电机在系统的控制下进行正转、停、反转,通过传动机构带动波轮执行洗涤程序;当洗涤时间终了,控制系统切断电机电路,打开排水电磁阀,开始排水;然后再次注水,洗衣机进入漂洗状态,完成漂洗程序(通常为2次漂洗),再注水进行浸泡;浸泡完,开始排水,同时,排水电磁铁的动作带动减速离合器制动臂,使离合器棘轮与棘爪分离,制动带松开,为脱水程序作好准备;排水结束后,系统控制电机单方向高速运转,完成脱水程序;当脱水程序终了,系统控制排水电磁铁和电机断电,排水阀和减速离合器的制动臂复位,同时蜂鸣器奏响音乐,通知用户整个洗衣程序结束[4]。
本设计要实现的功能有:
(1)用户参数的输入:
用户根据衣物的数量和质地确定洗涤时间、漂洗次数、脱水时间,然后通过按键输入具体的参数。
(2)参数和时间的显示:
灵活地运用数码显示管会带来许多方便,它可以用来显示用户实时所处的洗衣功能状态以及所剩时间。
(3)实时控制的实现:
单片机在获取了用户输入的参数后,对其进行分析处理,然后按照计算结果对洗衣过程进行实时控制。
(4)水位检测的实现:
水位的高低影响着整个洗衣过程的进行,因此需要水位检测器将水位的变化发送给单片机,单片机根据水位的情况确定下一步应该做什么。
(5)洗衣过程的实现:
一般的洗衣过程包括注水、洗涤、漂洗、排水和脱水这些步骤。
在洗衣过程中,系统主要控制进水电磁阀、排水电磁阀的打开和关闭,电机的正转、反转和停止。
(6)洗衣完毕的通知:
当洗衣过程结束后,蜂鸣器就报警通知用户洗衣完毕。
2硬件设计基本介绍
2.1总体方案
本设计以MCS-51单片机为核心,设计由电源、数字控制电路和机械控制电路三大模块构成的控制系统,实现对洗衣机整个洗衣过程的控制。
洗衣过程主要包括洗涤过程、漂洗过程、脱水过程。
根据洗衣过程的要求,控制程序设计主要包括主程序、内部定时中断服务程序、外部服务中断程序的设计。
根据设计要求,其基本系统组成框图如2.1所示。
2.2器件及原理简介
采用51系列单片机作为控制核心,主要包括电源部分、功能设置及控制电路、洗衣机状态显示及输出控制电路。
主要组成部件有:
单片机、74LS138译码器、指示灯、LED显示器、电动机、蜂鸣器、电磁阀以及按键等。
根据洗衣机的基本功能,硬件电路设计需要考虑洗衣机的进水、洗涤、漂洗、排
LED
显示电路
水位检测
暂停键K0
强度选择键K1
洗衣状态设定键K2
时间设定键K3
漂洗次数设定键K4
MCS-51
变压器
整流
滤波
稳压
洗衣机状态显示
指示灯D0~D7
电机正转
电机反转
进水阀
排水阀
双
向晶闸管
触
发电路
蜂鸣器
时钟电路
+5V
+12V
启动键K5
图2.1系统组成框图
水、脱水等问题,及时间设定长短、工作时间或剩余时间的显示、工作过程中的暂停、启动、复位、洗完后的报警等问题[5]。
通过单片机的P0口连接数码管发送段码,P2.4~P7口通过三极管扩大电流去控制数码管的位,显示时采用动态扫描方式,轮流循环扫描。
通过P1.6口连接蜂鸣器实现报警电路。
通过P1.0~P1.5口作为按键输入,并通过二极管连接到单片机的中断入口引脚,当有键按下,就会产生中断,执行相关按键的功能。
根据系统框图可设计出系统原理图,见附录A。
3软件设计
单片机应用系统的软件设计是系统设计中最基本而且工作量较大的任务。
与系统机上操作系统支持下的纯软件不同,单片机的软件设计是在裸机的条件下进行的,而且随应用系统的不同而不同。
在软件中一般需考虑以下几个方面:
1) 根据要求确定软件的具体任务细节,然后确定合理的软件结构。
一般系统软件的主程序和若干个子程序及中断服务程序组成,详细划分主程序、子程序和中断服务程序的具体任务,确定各个中断的优先级。
主程序是一个顺序执行的无限循环的程序,不停地顺序查询各种软件标志,以完成对事务的处理。
在子程序和中断服务程序中,要考虑现场的保护和恢复,以及它们和主程序之间的信息交换方法。
2) 程序的结构用模块化结构,即把监控程序分解为若干个功能相对独立的较小的程序模块分别设计,以便于调试。
具体设计时可采用自底向上或自顶向下的方法。
3) 在进行程序设计时,先根据问题的定义描述出各个输入变量和输出变量之间的数学关系,即建立数学模型,然后绘制流程图,再根据流程图用汇编语言进行具体程序的编写。
4) 在程序设计完成后,利用相应的开发工具和软件进行程序的汇编,生成程序的机器码[6]。
本设计中系统软件是采用C51编写的.在研制单片机应用系统时,汇编语言是一种常用的软件工具,具有简单的语法结构和强大的处理功能,具有运行速度快、编译效率高,移植性好和可读性强等多种优点,可以实现对系统便件的直接操作。
用C语言来编写目标系统软件,可以大大缩短开发周期,且明显地增加软件的可读性,便于改进和扩充,从而开发出大规模、高性能的应用系统[7]。
3.1主程序设计
系统的主程序设计主要完成系统初始化、中断优先级设定,以及调用其它各模块程序,即主要实现各模块程序的链接。
系统上电复位初始化后,首先进行系统初始化,包括中断的选择及设置,定时器的选择,定时时间,及其相关设置,初始化后,单片机进入主程序,在这“主程序”中不停的循环运行,除非有其它中断。
主程序流程图如图3.1所示。
编写主程序如下:
voidmain()
{
initialize();//初始化设置
while
(1)
{
display();//显示程序调用
calculate();//显示数据的计算程序调用
}
}
Y
N
Y
N
开始
系统初始化
启动相关功能
洗衣状态显示
洗衣功能设置
是否有报警
报警
图3.1软件主流程图
3.2水位检测程序设计
水位检测程序的原理是在洗衣机水箱中的适当高度放置两个水位检测器,当水位达到某一高度时,相应的水位探测器的开关接通,把电信号送入单片机的I/O口,经过单片机的处理,可以得到已经加好水或水放完,可以开始以下操作。
本设计用单片机P2.2~P2.3接口接两个水位传感器,在自动模式下,当水位到达某个传感器时,相应的传感器输出一个低电平到单片机的引脚,单片机通过引脚的电平高低来判断水位的高低。
基本流程是当最低点和最高点的两个检测点都显示低电平时说明洗衣机已经放满水;当检测到最高点从低电平变为高电平,经过一段时间后最低点也由低电平变为高电平时说明此时洗衣机放水完毕。
3.3洗涤程序设计
启动开关,进水阀通电,向洗衣机供水,当供水达到预定水位时,水位开关接通,进水阀断电关闭,停止供水。
洗涤电动机接通电源,带动波轮或桶旋转,产生各种形式的水流搅动衣物进行洗涤。
通过电动机不停的正转、停、反转、反复循环,形成洗涤水对洗涤物产生强烈的翻滚作用。
程序流程图如图3.2所示。
Y
N
洗衣开始
电机正转10S
电机停转,延时
剩余时间=0?
电机反转10S
洗涤结束
图3.2洗涤过程程序流程图
3.4脱水、漂洗程序设计
脱水前先打开排水阀排水,然后启动电动机脱水,并保持排水阀开启,然后停止脱水。
接着判断漂洗次数的值,若次数变为0则洗衣结束,开蜂鸣器提醒洗衣结束,系统返回初始待命状态,若次数不为0,则再次执行进水操作,进入下一循环。
程序流程图如图3.3所示:
3.5显示程序设计
在本系统的设计中作为人机对话的一个重要部分就是显示器,本设计要显示定时时间,洗涤时间,还有其它指示灯的状态显示,为了节省单片机的I/O口,把8个状态指示灯按照数码管的方式连接,即8个状态指示灯相当于一个数码管,这样硬件电路中相当于使用四位共阳LED作为系统的显示器。
数码管要正常显示,就要用驱动电
N
漂洗脱水开始
开进水阀,漂洗
结束
开排水阀,脱水
开蜂鸣器,报警
关排水阀
漂洗次数=0?
Y
图3.3脱水、漂洗程序流程图
路来驱动数码管的各个段码,从而显示出我们要的数字,因此根据数码管的驱动方式的不同,可以分为静态式和动态式两类[9]。
静态显示驱动:
静态驱动也称直流驱动。
静态驱动是指每个数码管的每一
个段码都由一个单片机的I/O端口进行驱动,或者使用如BCD码为十进制译码器译码进行驱动。
静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O端口多。
动态显示驱动:
数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划“a,b,c,d,e,f,g,dp”的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。
通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态驱动[10]。
系统定期的扫描每个数码管,借助于人的视觉残留效应,使的数字得以正确显示,显示电路采用数码管动态扫描电路,占用单片机I/O口资源少,显示电路成本比较低,与静态扫描电路相比较,电路简单,成本低。
硬件电路相对简单,在编写程序时,需要考虑循环扫描的时间。
要显示的数据采用的查表法。
查表法只需把转换结果按序编成表,连续存放在ROM中,用查表指令即可实现转换,查表法编程方便且程序量小,执行速度快,修正起来方便。
本设计显示系统包括时间显示和次数显示。
常用的显示器件有:
液晶点阵(LCD)显示,数码管(LED)显示。
根据本课题的设计要求,显示部分采用动态显示方法,用3位数码管,和8个LED指示灯显示。
基本方法是:
把8个指示灯当作一个数码管,这样一共是4位数码管。
单片机的I/O口发送数码管的段码,接口P2.4~P2.7通过三极管扩大电流去控制数码管的位,显示时采用动态扫描方式,轮流循环扫描。
8个LED指示灯依次代表着自动/手动,运行/停止,强洗,标准洗,弱洗,洗涤状态,漂洗状态,脱水状态。
另外三位数码管指示时间和次数,前两位指示时间,后一位指示次数。
显示子程序流程图如图3.4所示:
Y
N
P0口送数据
显示一段时间
关闭该位
打开要显示的位
显示开始
显示结束
关闭显示
图3.4显示子程序流程图
/*******************************
功能:
数码管显示
说明:
/******************************/
voiddisplay()
{P0=LEDnumber[0];//送入第一位要显示的数据
LED0=0;//打开该位的控制,使其显示
Delayms(5);//使该位显示5ms
LED0=1;//关闭该位的控制,使其不显示
P0=dis_8[LEDnumber[1]];//送入第一位要显示的数据
LED1=0;//打开该位的控制,使其显示
Delayms(5);//使该位显示5ms
LED1=1;//关闭该位的控制,使其不显示
P0=dis_8[LEDnumber[2]];//送入第一位要显示的数据
LED2=0;//打开该位的控制,使其显示
Delayms(5);//使该位显示5ms
LED2=1;//左第三位定时的个位
P0=dis_8[LEDnumber[3]];//送入第一位要显示的数据
LED3=0;//打开该位的控制,使其显示
Delayms(5);//使该位显示5ms
LED3=1;//关闭该位的控制,使其不显示
}
3.6按键程序设计
按键电路的作用是设置一些功能,一般按键电路有按键查询式,CPU不断的检测是否有按键按下,这样将会耗费大量的CPU时间,且反应速度实时性不强;还有一种是中断式按键,只有当有按键按下时,单片机产生中断,开始处理按键的输入功能,没有键按下时单片机处理其他,不需要不停地查询按键是否按下。
这样采用中断使按键反应速度快,同时减少单片机处理时间,本设计采用中断扩展式电路[11]。
工作原理如下:
没有按键时,相关的I/O口为高电平,单片机的INT0也为高电平,当有键按下时,5V电压经过所按键上的电阻流向GND,这时由于按键闭合,按键上的低电平送入单片机的I/O口,同时与按键相连的二极管导通,由于二极管导通时,电压大约为0.7V,相当于低电平,这个低电平送入单片机的INT0产生中断,在中断里检查哪个I/O口为低电平,就可以判断是哪个按键按下,执行相关的那个按键的功能[12]。
本设计中单片机P1.0~P1.5作为按键输入,并通过二极管连接到单片机的中断入口引脚,当有键按下,就会产生中断,执行相关按键的功能。
按键程序流程图如图3.5所示:
图3.5按键程序流程图
本设计中一共用到六个按键,通过连接单片机的P1.0~P1.5口来实现按键的功能,按键1的作用是调节自动或者手动,按键2的作用是调节洗衣的强度,按键3的作用是调节洗衣功能,按键4的作用是设置时间,按键5的作用是设置次数,按键6的作用是控制洗衣机的运行与停止。
具体电路如下图:
根据硬件的设计方法,编写程序如下:
/*****************************
功能:
按键输入
说明:
用到中断0,P2.0~P2.5
/****************************/
voidinkey_int0()interrupt0
{ucharinput;
P2=P1|0x3f;
input=P1;
switch(input&0x3f)
{case0x3e:
//111110最右边
//按键1功能
break;
case0x3d:
//111101
//按键1功能
case0x3b:
//111011
//按键1功能
case0x37:
//110111
//按键1功能
break;
case0x2f:
//101111
//按键1功能
break;
case0x1f:
//011111最左边
//按键1功能
break;
default:
break;
}
}
3.7定时程序设计
MCS-51单片机内部有两个可编程的16位定时器T0和T1。
通过编程,可以设定为定时器和外部计数方式。
T1还可以作MCS-51串行口的波特率发生器。
定时器T0由特殊功能寄存器TL0和TH0构成,定时器T1由特殊功能寄存器TL1和TH1构成。
特殊功能寄存器TMOD控制定时器的工作方式,TCON控制其运行,TCON还包含了定时器T0和T1的溢出标志。
定时器的中断由中断允许寄存器IE、中断优先级寄存器IP中的相应位进行控制。
定时器T0的中断入口地址为000BH,T1的中断入口地址为001BH[13]。
定时器的编程包括;
(l)置工作方式。
(2)置计数初值。
(3)中断设置。
(4)启动定时器。
由于MCS-51的定时器采用加1计数,因此,计数初值应根据计数器长度及计数值来决定。
对于同样的计数值,在采用13位计数器、16位计数器及8位计数器时,其计数初值各不相同。
此外,方式0、1、3均不能自动恢复初值,如果要求重复计数必须在每次计数溢出后重新装入计数初值。
除了编写以上程序外,还要设置中断的开关,用定时器时还要计算定时时间,内部计数器用作定时器时,是对机器周期计数。
每个机器周期的长度是12个振荡器周期。
因为实验系统的晶振是12MHz,所以定时常数的设置可按以下方法计算:
机器周期=12÷12MHz=1μS
(65536-定时常数)*1μS=50mS
定时常数TH0=0X3C;TL0=0XB0[14];
本设计中在洗衣时需要设置洗衣时间,这部分程序设计采用单片机内部的定时器,用来倒计时。
洗衣机定时系统采用单片机的定时器0,工作方式1,当设定洗涤、漂洗和脱水时,单片机的定时器开始倒计时,前两位数码管显示设定好的时间每秒减,当剩余时间为0时第三位数码管显示的次数就减一,直至洗衣次数完全执行完。
定时程序流程图如图3.6所示:
图3.6定时程序流程图
倒计时编程采用定时器0,方式1。
//定时器0//用于到计时
voidtimer0()interrupt1using0
{
TH0=0X3C;TL0=0XB0;//赋初值值50ms定时
cont1s++;
if(cont1s==20)//cont1s==20秒
{
//LEDnumber[0]++;if(LEDnumber[0]>8)LEDnumber[0]=0;
timer--;
if(!
timer){TR0=0;}//如果到计时结束停止计时
cont1s=0;
}
}
4软件调试
软件调试就是检查系统软件中的错误。
常见的软件错误有程序失控、中断错误(不响应中断或循环响应中断)、输入/输出错误和处理结果错误等类型。
要把各个程序模块分别进行调试,调试通过后再组合到一起进行综合调试,达到预定的功能技术指标后即可将软件固化。
系统的调试过程要结合具体的仿真器进行[15]。
对于一个新设计的电路板,调试起来往往会遇到一些困难,