智能洗衣机系统的设计与实现.docx
- 文档编号:10911859
- 上传时间:2023-02-23
- 格式:DOCX
- 页数:28
- 大小:580.40KB
智能洗衣机系统的设计与实现.docx
《智能洗衣机系统的设计与实现.docx》由会员分享,可在线阅读,更多相关《智能洗衣机系统的设计与实现.docx(28页珍藏版)》请在冰豆网上搜索。
智能洗衣机系统的设计与实现
1.智能洗衣机的设计方案
智能洗衣机系统主要由水位采集模块、驱动模块、显示模块、控制模块四部分组成。
控制模块由按键控制组成,用于实时时间的设置,洗衣机根据控制模块的输入值选择不同的工作状态。
显示模块用于人机信息交换,显示当前工作时间和工作状态。
水位采集模块用于采集当前洗衣机水的深度。
智能洗衣机系统的设计方案图如图1所示。
扫描显示输出
图1智能洗衣机系统的设计方案图
2.单元模块设计
2.1主控制器简介
本设计主控制器采用软件编程自由度大,外围模块丰富,硬件电路简单的可编程控制芯片STC89C52。
STC89C52一类具有8位总线的单片机,由于其性价比和集成度高,受到广大技术开发人员的青睐。
2.1.1STC89C52单片机特点
STC89C52芯片具有如下特点:
★STC89C52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。
★低8k字节Flash,512字节RAM,32位I/O口线,看门狗定时器,内置4KBEEPROM,MAX810复位电路,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口。
另外STC89X52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。
空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。
掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
最高运作频率35Mhz,6T/12T可选。
和atmel的对比STC89C52RC单片机:
8K字节程序存储空间;512字节数据存储空间;内带4K字节EEPROM存储空间;可直接使用串口下载;AT89S52单片机:
8K字节程序存储空间;256字节数据存储空间;没有内带EEPROM存储空间;
★具有串行在线编程能力;
★强大的中断功能;
★抗干扰力强;
★运行环境温度范围为-40~+85℃,适合于工业环境。
STC98C52单片机的所有外围模块的控制都是通过特殊寄存器来实现的,故其程序的编写相对简单。
图2STC89C52
2.1.2STC89C52最小系统电路设计
★电源电路
该电源电路采用直接由电源适配器提供+5V电压,经过稳压电路后供STC98C52工作。
并且将数字电源与模拟电源通过电感隔离。
通过发光二极管指明电源电路工作正常。
电源电路图如图3所示。
图3电源电路图
★晶振电路
STC89C52RC内部有一个用于构成振荡器的高增益反相放大器,引脚RXD和TXD分别是此放大器的输入端和输出端。
时钟可以由内部方式产生或外部方式产生。
在RXD和TXD引脚上外接定时元件,内部振荡器就产生自激振荡。
定时元件通常采用石英晶体和电容组成的并联谐振回路。
晶体振荡频率可以在1.2~12MHz之间选择,电容值在5~30pF之间选择,电容值的大小可对频率起微调的作用。
外部方式的时钟电路如图4所示,RXD接地,TXD接外部振荡器。
对外部振荡信号无特殊要求,只要求保证脉冲宽度,一般采用频率低于12MHz的方波信号。
片内时钟发生器把振荡频率两分频,产生一个两相时钟P1和P2,供单片机使用。
RXD接地,TXD接外部振荡器。
对外部振荡信号无特殊要求,只要求保证脉冲宽度,一般采用频率低于12MHz的方波信号。
片内时钟发生器把振荡频率两分频,产生一个两相时钟P1和P2,供单片机使用。
图4晶振电路图
2.2洗衣机电机驱动电路设计
在本设计中电机驱动电路采用了H桥驱动电路,电机驱动电路图如图5所示。
当p26接高电平,p27接低电平时;Q7导通,Q6截止。
Q5为NPN,此时Q5基极的电平高于发射极导通;Q4为PNP,此时Q4基极的电平低于发射极导通。
Q3、Q8截止,电流经Q4到电机,电机到Q5,再经Q5到地,此时电机正转。
当p27接高电平,p26接低电平时;Q6导通,Q7截止。
Q8为NPN,此时Q8基极的电平高于发射极导通;Q4为PNP,此时Q4基极的电平低于发射极导通。
Q5、Q4截止,电流经Q3到电机,电机到Q8,再经Q8到地,此时电机正转。
在设计中为了避免电机的反电动势的危害,我们在晶体管的两端接了开关二极管1N4148,因为电机线圈在电机开闭瞬间的反电动势通过会高过电源,这样对晶体管电路会有很大影响甚至烧毁。
图5电风扇驱动电路图
2.3显示电路设计
2.3.1数码管简介
LED数码管(LEDSegmentDisplays)是由多个发光二极管封装在一起组成“8”字型的器件,引线已在内部连接完成,只需引出它们的各个笔划,公共电极。
LED数码管常用段数一般为7段有的另加一个小数点,还有一种是类似于3位“+1”型。
位数有半位,1,2,3,4,5,6,8,10位等等,led数码管根据LED的接法不同分为共阴和共阳两类,LED的这些特性,对编程是很重要的,因为不同类型的数码管,除了它们的硬件电路有差异外,编程方法也是不同的。
共阴和共阳极数码管,它们的发光原理是一样的,只是它们的电源极性不同而已。
颜色有红,绿,蓝,黄等几种。
led数码管广泛用于仪表,时钟,车站,家电等场合。
选用时要注意产品尺寸颜色,功耗,亮度,波长等。
下面将介绍常用LED数码管内部引脚图片图6这是一个7段两位带小数点10引脚的LED数码管图6引脚定义每一笔划都是对应一个字母表示DP是小数点。
图6数码管内部结构
数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示出我们要的数字,因此根据数码管的驱动方式的不同,可以分为静态式和动态式两类。
静态显示驱动
静态驱动也称直流驱动。
静态驱动是指每个数码管的每一个段码都由一个单片机的I/O端口进行驱动,或者使用如BCD码二-十进制译码器译码进行驱动。
静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O端口多,如驱动5个数码管静态显示则需要5×8=40根I/O端口来驱动,要知道一个89S51单片机可用的I/O端口才32个呢:
),实际应用时必须增加译码驱动器进行驱动,增加了硬件电路的复杂性。
数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp"的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。
通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态驱动。
在轮流显示过程中,每位数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低。
2.3.2数码管显示电路设计
数码管显示电路由三极管驱动。
显示电路图如图7所示。
数码管显示电路中发光二极管用于指示该模块供电是否正常。
4位数码管显示电路中12位并入并出芯片,数码管的"a,b,c,d,e,f,g,dp"为数据串行输入引脚,与单片机的数据输出引脚相连。
S1,S2,S3,S4为位先,由单片机控制。
为了减少占用单片机I/O口,在设计电路时使用动态扫描。
但在显示电路中也占用12个I/O口,有效地减少占用单片机I/O口,在I/O口较少的单片机中比较实用。
图7数码管显示电路图
2.4水位检测模块设计
水位检测模块通过水位传感器实现对桶内水位的检测。
水位传感器内部存在LC振荡电路,当水压改变后电容值也会随之改变,从而影响水位传感器的输出频率,不同的水位对应一个吲定的频率值。
本课题采用sw1型水位传感器,在零水位时输出频率为26.8kHz,随着水位的升高水位传感器输出的频率会之减小,当达到本课题设计的最高水位390mm时输出频率为2257kHz。
将水位传感器的输出连接到水位检测电路如图8所示:
图8水位检测电路
2.5按键控制模块设计
本设计按键控制由4个小按键组成。
通过按键编址电路把按键的开关信息转化为逻辑电平“0”或“1”,接收电路接收此脉冲信号,然后送入单片机,并且根据信号完成对控制电路的控制。
★按键电路
按键电路主要由4个按键电路组成。
电路图如图9所示。
图9无线遥控发射电路图
4个小按键有4个输出端RES,p32,p24,p25,输出均是低电平有效。
并且带有一个外部中断电路。
当没有按键按下时,输出端为高电平。
★单片机复位电路
RST引脚是复位信号的输入端。
复位信号是高电平有效,其有效时间应持续24个振荡周期(即二个机器周期)以上。
若使用颇率为6MHz的晶振,则复位信号持续时间应超过4us才能完成复位操作。
产生复位信号的电路逻辑如图10所示:
图10电路逻辑
整个复位电路包括芯片内、外两部分。
外部电路产生的复位信号(RST)送至施密特触发器,再由片内复位电路在每个机器周期的S5P2时刻对施密特触发器的输出进行采样,然后才得到内部复位操作所需要的信号。
复位操作有上电自动复位相按键手动复位两种方式。
上电自动复位是通过外部复位电路的电容充电来实现的,其电路如图11所示。
这佯,只要电源Vcc的上升时间不超过1ms,就可以实现自动上电复位,即接通电源就成了系统的复位初始化。
按键手动复位有电平方式和脉冲方式两种。
其中,按键电平复位是通过使复位端经电阻与Vcc电源接通而实现的,其电路如图11所示;而按键脉冲复位则是利用RC微分电路产生的正脉冲来实现的,
其电路如图11所示:
图11复位电路
2.6蜂鸣器模块设计
本设计控制由一个蜂鸣器和一个三极管组成。
通过单片机输出高低电平实现对三极管的控制,从而达到控制蜂鸣器的作用。
当单片机的p30口输出高电平时,三极管导通,p30口输出为低电平时三极管不导通。
电路如图12所示。
图12蜂鸣器电路
3.系统软件设计
3.1系统软件结构
在硬件构建了智能洗衣机系统的基本功能之后,软件所需实现的功能主要是针对系统功能的实现及数据的处理和应用。
系统软件需要实现信号控制、信号采集、信号处理。
本设计以单片机STC89C52作为主控制器,整个系统软件设计均采用C语言实现。
整个系统软件由主程序、温度采集程序、时间读写程序、显示程序与控制程序等几个主要部分。
3.2主程序流程图
数据采集
开始
初始化系统时钟
各模块初始化
时间处理程序
电机控制程序
显示程序
结束
主程序是单片机程序的主体,整个单片机系统软件的功能实现都是在其中完成的。
主程序包括时间处理程序、电机控制程序、显示程序、数据采集四部分。
主程序流程图如图13所示。
图13主程序流程图
3.3控制程序流程图
操作控制程序分为时间校正程序和电机控制程序两部分。
电机控制程序为按键控制程序。
电机控制程序是整个程序的核心部分。
电机控制程序流程图如图14所示。
开机
设工作时间和水量
开始洗涤
正转25秒
停止10秒
反转15秒
停止10秒
定时时间是否到了?
否
是
电机停止,排水,蜂鸣器响,提醒用户
是否脱水?
是
设定脱水时间
开始脱水
定时时间到,电机停止,蜂鸣器响,提醒用户
停机
否
等待关机
图14风扇控制程序流程图
当用户打开洗衣机时,设定好洗涤时间和水量,按开始键,洗衣机开始运行。
电机在一定的时间内正转和反转。
当洗涤时间达到用户所设定的时间时,电机停止,排水,蜂鸣器响,提醒用户。
若用户选择脱水,并设定好时间后,洗衣机开始脱水。
若用户不选择脱水,则等待关机。
4.系统调试
系统调试由硬件调试和软件调试组成。
硬件调试包括静态调试、断电检查、通电检查、联机检查、动态调试。
软件调试基本方法先独立后联机、先分块后组合、先单步后连。
常见的软件错误类型有程序失控、不响应中断错误、循环响应中断错误、输入输出错误、结果不正确。
4.1测试环境及工具
测试温度环境:
25-40摄氏度。
测试电机速度:
用直流电机模拟。
测试仪器及软件:
数字万用表,keil4,proteus等。
4.2硬件调试
断电检查:
在系统断电的情况下,对照原理图和PCB检查元器件焊接是否正确。
检查无误后,用万用表检查电路中有无短路断路现象。
通电检查:
给系统上电后,用万用表检测各点电压电流是否符合设计要求。
电机调速电路中A接VCC、B接地或B接VCC、A接地,检测电风扇是否可以正转或反转。
4.3软件调试
整个程序包括主程序、水位采集程序、时间读写程序、显示程序与控制程序。
针对这些模块程序我们首先调试的是显示程序,再调的水位采集程序、时间读写程序,最后调的控制程序。
一旦显示程序调试好了,就可以通过这个窗口观察程序内部数据和状态了。
整个程序的调试主要是控制程序的调试,显示程序、水位采集程序、时间读写程序的调试,我们直接移植了51单片机的程序。
移植过程主要修改了端口的读写和一些延时函数保证端口的正确读写和读写操作时序正确。
控制程序的调试过程中首先调试电机的手动控制,再调试电机的自动控制、最后定时功能。
在调试过程中我们碰到了一些问题。
如在调试自动控制时,我们发现电机进入自动调速模式后不能通过电机按键关闭,只有退出该模式才能启动按键关闭。
5.设计总结
在小组同学不断研讨和学习中,我们已经出色完成这次课程设计,这已经是我第二次做课程设计。
回想大一进入电子工程系时候,那些对自己以后专业的盲动到动手写报告记录内容,参加小组一起设计智能洗衣机调控。
我一次次感觉到自己更加迈上电子之路。
小组宗旨了是此次的设计并不奢望一定能成功,但一定要对自已学的各种电子知识能有一定的运用能力,我们做设计的目的是希望能检查下对所学知识的运用能力的强弱,开始慢慢走上电子设计的路,这一点是难能可贵的。
在做这次智能洗衣机时,它涉及到了我们大一、二学的几门课程的知识,比如单片机的知识,CPU的运用等……从理论知识到做出实物,我们从课本到实践过程中得到升华和提高。
我们边讨论边做实物,像老师请教方法,和同学得出结论,并用完善的报告来记录,这些都是我们课程设计做的相当出色的条件。
我们也对自己做相当要求,要求绝不含糊,认真体会自己这次课程设计的内容,从中得到更多提高!
锲而不舍,金石可镂!
这个词来形容我们这次课程设计太合适不过了。
在刚接触无从下手到后来逐步完善,时刻在每道工序上的不放弃,要求做到自己最好,这一些都得到了回报。
一个人能力与精力是有限的,但是团队则不一样,我们小组齐心协力也让我们更轻松来做,培养我们的团队合作意识。
经过这次课题设计,使我对我们这个专业有了更深的了解,也增加了我对电子专业的兴趣。
通过这次课程设计,我深深体会到了一点:
理论与实践是永远不可能分开的。
在完成好专业知识的同时,不忘经常亲自动手实践,这样才能更好的掌握知识,并学以自用,这样才能成为一个高端的电子专业人才。
6.参考文献
[1]张琳娜.传感检测技术及应用[M].中国计量出版社,2009.5.78-90
[2]邵敏权.单片机原理实验及应用[M].吉林科学技术出版社,2008.1.112-134
[3]徐科军.传感器与检测技术[M].电子工业出版社,2008.10.97-117
[5]潘其光.常用测温仪表技术问答[M].国防工业出版社,2006.4.56-89
[6]戴维.51单片机C语言应用程序设计实例精讲[M].电子工业出版社,2006.120-136
[7]张黎平.家用电器科技[M].中华人民共和国新闻出版总署,1995
[8]李开泰.有限元方法基础及其应用[M].西安交通大学出版社,1998
[9]沃德·海伦.模态分析理论与试验[M].北京理工大学出版社,2001.127-142
[10]邓则名.电器与可编程控制器应用技术[M].机械工业出版社,2004..
附录1:
作品实物图
附录2:
作品原理图
附录3:
作品PCB图
附录4:
作品仿真图
附录5:
作品程序
#ifndef__SYSCTL_H__
#define__SYSCTL_H__
#include
#defineuintunsignedint
#defineucharunsignedchar
#defineT1
#defineX0
#defineY1
//共阳码管0~9字符
externucharcodetabl[];
externuintcount;
externucharmstime;
externucharstopp;
externucharchushizhi;
//externuchartuoshui;
//位定义
sbitp10=P1^0;
sbitp11=P1^1;
sbitp12=P1^2;
sbitp13=P1^3;
sbitp14=P1^4;
sbitp15=P1^5;
sbitp16=P1^6;
sbitp17=P1^7;
sbitp20=P2^0;
sbitp21=P2^1;
sbitp22=P2^2;
sbitp23=P2^3;
sbitp24=P2^4;
sbitp25=P2^5;
sbitp26=P2^6;
sbitp27=P2^7;
sbitp30=P3^0;
sbitp32=P3^2;
sbitp33=P3^3;
externvoiddelay(uintx);//延时函数
externvoidsettime(void);//设定时间函数
externvoidInit(void);//程序初始化
externvoiddisplayjian(void);//时间减
externvoiddisplayjia(void);//时间加
externvoiddisplay(void);//显示函数
#endif
#include"SysCtl.h"
//共阴数码管0~9字符
ucharcodetabl[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uintcount=0;//定义秒
ucharmstime=0;//定义分
ucharstopp=1;//停止标志
ucharchushizhi=20;//设定时间值
//uchartuoshui=0;
voiddisplay(void)//显示函数
{
p20=Y;
p21=X;
p22=X;
p23=X;
P1=tabl[mstime/10];
delay(T);
p20=X;
p21=Y;
p22=X;
p23=X;
P1=tabl[mstime%10];
delay(T);
p20=X;
p21=X;
p22=Y;
p23=X;
P1=tabl[count/10];
delay(T);
p20=X;
p21=X;
p22=X;
p23=Y;
P1=tabl[count%10];
delay(T);
}
voiddisplayjian(void)
{
mstime--;
if(mstime>=20)mstime=19;
display();
}
voiddisplayjia(void)
{
mstime++;
if(mstime>=20)mstime=0;
display();
}
voiddelay(uintx)
{
uinti=0,j=0;
for(i=0;i for(j=0;j<=500;j++); } //定时50ms timer0()interrupt1using1 { p33=! p33; TH0=0x3c;//重置定时初值 TL0=0xb0; } //定时1s tomer1()interrupt3using2 { count++;//1s到 if(count==1) { p26=1; p27=0; } if(count==25) { p26=0; p27=0; } if(count==38) { p26=0; p27=1; } if(count==49) { p26=0; p27=0; } if(count==60) { count=0; displayjia(); if(mstime==chushizhi) { p30=1; TR0=0; TR1=0; } } } int0()interrupt0using3 { delay(15); if(p32==0) stopp=0; } voidInit() { p26=0; p27=0; p30=0; p33=0; TMOD=0x61;//T0方式1定时,T1方式2计数 TH0=0x3c;//预置定时初值 TL0=0xb0; TH1=-7; TL1=-7; ET0=1; EX0=1; IT0=0; ET1=1; TR0=0; TR1=0; EA=1; } voidsettime(void) { while(stopp) { if(p24==0) { delay(50); if(p24==0) { displayjia(); } } if(p25==0) { delay(50); if(p25==0) { displayjian(); } } display(); } chushizhi=mstime; mstime=0; TR0=1; TR1=1; } #include"SysCtl.h" voidmain() { uinti; Init();//程序初始化 settime();//设定定时时间 while (1) { display();//显示时间 if(mstime==chushizhi) { for(i=0;i<200;i++) { display();//显示时间 delay (1);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 智能 洗衣机 系统 设计 实现
![提示](https://static.bdocx.com/images/bang_tan.gif)