自动控制系统课程设计全自动洗衣机控制系统的设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第1章前言
1.1 全自动洗衣机的发展背景
从古到今,洗衣服都是一项难于逃避的家务劳动,而在洗衣机出现以前,对于许多人而言,它并不像田园诗描绘的那样充满乐趣,手搓、棒击、冲刷、甩打……这些不断重复的简单的体力劳动,留给人的感受常常是:辛苦劳累。

1858年,汉密尔顿·史密斯制成了世界上第一台洗衣机。

1874年,“手洗时代”受到了前所未有的挑战,美国人比尔·布莱克斯发明了世界上第一台人工搅动洗衣机。

1911年美国人又研制了世界上第一台电动洗衣机。

1920年美国的玛依塔格公司又把洗衣机的木制桶改为铝制桶体,第二年又把铝制桶体改为外层铸铝、内层为铜板的双层结构。

1936年,他们又将搪瓷用于洗衣机桶体。

与此同时,世界各地也相继出现了洗衣机。

欧洲国家研究成功了喷流式洗衣机和滚筒式洗衣机。

1932年后,美国一家公司研制成功了第一台前装式滚筒全自动洗衣机,洗涤、漂洗和脱水都在同一个滚筒内自动完成,使洗衣机的发展跃上了一个新台阶。

这种滚筒洗衣机,目前在欧洲、美洲等地得到了广泛的应用。

第二次世界大战结束后,洗衣机得到了迅速的发展,研制出具有独特风格的波轮式洗衣机。

这种洗衣机由于其波轮安装在洗衣机桶底,又称涡卷式洗衣机。

1.2 全自动洗衣机的设计目的及意义
目前中国洗衣机市场正进入更新换代期,市场潜力巨大,人们对于洗衣机
的要求也越来越高。

这就要求设计者们有更高的专业和技术水平,能够提
出更多好的建议和新的课题,将人们的需要变成现实,设计出更节能、功
能更全面、更人性化的全自动洗衣机。

目前的洗衣机都没有实现全方面的
兼容,大多洗衣的厂家都注重各自品牌的洗衣机的特长,突出一两个与别
的洗衣机不同的个性化的功能,洗衣机的各项功能是由单片机控制实现的,
单片机的体积小,控制功能灵活,因此,设计出基于单片机的全自动洗衣机控制电路系统具有很强的实用性。

1.3 设计任务
(1)将水位通过水位开关设在合适的位置(高、中、低),按下“启动“按钮,开始进水,达到设定的水位(高、中、低)后,停止进水;
(2)进水停止2s 后开始洗衣;
(3)洗衣时,正转20s,停2s,然后反转20s,停2s;
(4)如此循环共5次,总共220s后开始排水,排空后脱水30s;
(5)然后再进水,重复(1)~(4)步,如此循环共3次;
(6)洗衣过程完成,报警3s并自动停机。

第2章硬件设计
2.1 洗衣机控制器的外部设计
洗衣机控制面板主要包括:启动开关K0、拨码器(选择水位)。

完成洗衣一次洗衣所需要的过程包括:
(1)进水动作进行洗涤时,盛水桶内的水量必须达到水位设定要求。

洗衣机的进水和水位判断,是由水位开关和进水阀的开合来进行控制的,当桶内没有水或水量达到设定水位时,单片机程序将控制进水阀闭合,开始注水,当桶内的水位达到设定水位时,水位开关受压闭合,程序就可进入下步。

(2)排水动作进入脱水动作前应先排水。

为了避免空排水造成时间浪费以及排水不完而带水脱水造成对电机的损害。

洗农机能够根据实际水量对排水时
间进动态控制。

(3)洗涤动作是电机周期性的“正转—停止—反转—停止”。

不同的洗衣过程,控制电机执行“正转—停止—反转—停止”的时间是相同的。

2.2 硬件设计框图
针对上述,一方面涉及到硬件电路,另一方面要配合相应的软件,才能完成上述
功能。

下面为本设计的整机框图如下:
图2.2 整机设计框图
洗衣机控制系统是由AT89c51单片机控制,其主要控制的对象包括:进水阀、排水阀、电机及数码管显示。

这些被控刘象是需要根据不同的洗衣程序来设定它们的不同工作状况和工作时间的,进水阀和排水阀的控制还需要水位检测,同时需要数码管显示洗衣的次第和每次洗衣电机正反转的次第及电机正反转所用的时间。

发光二极管用来指示工作状态。

(1)直流电源电路这是为单片机及其外…控制电路提供晓以电压直流电源的电路,它将输入的220v交流电经过变压、整流、滤波、稳压后,变为稳
定的低压直流电,送给单片机、可控硅触发电路、显示电路等。

(2)复位电路此电路的作用是复位。

在单片机接上电源以后,或电源出现过低电压时,将单片机存储器复位,使其各项参数处于初始位置,即处于开机时的标准程序状态,以消除由于某种原因的程序紊乱。

(3)时钟电路由晶振元件与单片机内部电路组成,产牛的振荡频率为单片机提供时钟信号,供单片机信号定时和训时。

(4)按键输入电路按键开关按定的矩阵排列,当按键被按动时,其接通
的信号将输送到单片机。

单片机对应地调出内部软件进行工作,使洗衣机进入相应的洗涤程序。

除了启动开关,水位开关有拨码器代替。

(5)显示电路由发光一极管按一定的矩阵排列而成,它是程序控
制系统向用户直接观察到洗衣机的工作状态的窗口。

预设工作程序时,可根据指示灯的闪亮来判断洗衣机是否接受了指令;还可以通过批示灯的显示来判断洗衣机工作是否正常。

(6)负载驱动电路该电路多由双向可控硅及触发电路组成。

双各可控硅作为无触点开关控制电机等负载的通断及运行。

单片机根据按键输入指令或接收到的检测信号,输出相应的控制信号,控制可控硅触发电路的导通,使电机等负载得电运转。

2.3 系统硬件电路
2.3.1 水位选择开关
本设计中水位高、中、低的选择是采用六路选择开关来选取的。

仿真图中采用拨码开关选取。

拨码器如下图:
图2.3.1.a 2位拨码开关图2.3.1.b 2—4译码器
图2.3.1.c 水位选择控制电路
2.3.2 水位检测电路
图2.3.2 水位检测电路
Proteus中无法进行水位的检测,故采用软件延时控制实现。

2.3.3 进水(排水)和报警电路
图2.3.2.a 进水(排水)电路
图2.3.2.b 报警电路
2.3.4 电机正反转电路
图2.3.3.a “H”桥式驱动电路
如上图,该电路是基PWM原理的“H”桥式驱动电路。

单片机各引脚提供10mA 左右的驱动力,可以作为“H”形驱动电路中各达林顿管的基极电流。

“H”桥式驱动电路的4个达林顿管与单片机得4个I/O段口相连。

4个二极管以对角组合分为两组;根据两个输入端的高、低电平决定达林顿管的导通和截止。

4个二极管在电路中起防止达林顿管产生反向电压的保护作用。

当Q1和Q4导通,电流方向从左到右。

则直流电动机正转;Q3和Q2导通时,电流方向从右向左,则直流电机反转。

当Q1、Q2 、Q3及Q4均截止,无电流流过直流电动机,则直流电动机停机。

仿真图中采用继电器电路来简单控制电机的正反转。

如下图所示:
图2.3.3.a 继电器电路
2.3.5 单片机的复位与震荡电路
图2.3.4.a AT89C51单片机的震荡电路
图2.3.4.b AT89C51单片机的复位电路
图2.3.4.c BCD数码管
2.3.6 AT89C51单片机引脚及功能
(1) 信号引脚的功能介绍
①输入/输出口线
P0.0~P0.7 P0口的8位双向口线;
P1.0~P1.7 P1口的8位双向口线;
P2.0~P2.7 P2口的8位双向口线;
P3.0~P3.7 P3口的8位双向口线。

② ALE 地址锁存控制信号
在系统扩展时,ALE用于控制把P0口输出的低8位地址送入锁存器锁存起来,以实现低位地址和数据的分时传送,此外由于ALE是以六分之一的晶振频率的固定频率输出正脉冲,因此可作为外部时钟或外部定时脉冲使用。

③PSEN外部程序存储器选通信号
在读外部的ROM时PSEN有效(低电平),以实现外部ROM单元的读操作。

④EA访问程序存储器控制信号
当EA信号为低电平时,对ROM的读操作限定在外部程序存储器;而当EA信号为高电平的时候,则对于ROM的读操作是从内部程序存储器开始,并可以延续至外部程序存储器。

⑤RST 复位信号
当输入的复位信号延续2个机器周期以上高电平时即为有效,用以完成单片机的复位操作。

⑥XYAL1和XTAL2 外接晶体引线端
当使用芯片内部时钟时,此二引线端用于外接石英晶体和微调电容;但是当使用外部时钟脉冲信号。

⑦VSS 地线
⑧VCC +5V电源
以上就是80C51单片机芯片的40条引脚的定义及简单说明。

(2) 信号引脚的第二功能
由于工艺及标准化等原因,芯片的引脚数目是有限的,例如MCS-51系列芯片引脚数目40条,但单片机为实现其功能所需要的信号数目却远远超过此数,因此就出现了供需矛盾。

①EPROM存储器程序固化所需要的信号
有内部EPROM的单片机芯片,如87C51,为写入程序需提供专门的编程脉冲和编程电源,它们是由信号引脚的第二功能的形式提供的,即:
编程脉冲: 30脚(ALE/PROG)
编程电源:(25V)31脚(EA/VPP)
②备用电源的引入
MCS-51单片机的备用电源也是以信号引脚的第二功能方式由9脚(RST/VPD)引入的。

当电源发生故障的时候,电源下降到下限值时,备用电源经此端向内部的RAM提供电压,以保护内部RAM信息不会丢失。

表2.4 P3口线的第二功能
口线第二功能信号名称
P3.0 RXD 串行数据接收
P3.1 TXD 串行数据发送
P3.2 0
INT外部中断0的申请P3.3 1
INT外部中断1的申请P3.4 T0 定时器/计数器0计数输入
P3.5 T1 定时器/计数器1计数输入
P3.6 WR外部RAM的写通道
P3.7 RD外部RAM的读通道
(3) 最后,引脚的第一、第二功能是不会在用的时候混淆的,因为:
①对于各种型号的芯片,所有管脚的第一功能信号是相同的,所不同的是引脚的第二功能信号上。

②对于9、30和31各个引脚,由于第一功能信号与第二功能信号是单片机在不同的工作方式下的信号,因此不会发生使用上的矛盾。

③P3口线的情况却有所不同,它的第二功能信号都是单片机上的重要控制信号,因此,在实际使用的时候,总是先按照需要优先选用它的第二功能,剩下不用的再考虑作为口线使用。

第3章软件设计及软硬件调试3.1 设计流程图
根据设计任务设计流程框图:
单片机应用系统的硬件调试和软件调试是分不开的,许多硬件故障是存调试软件时发现的,但通常是先排除系统中明显的硬件故障后才和软件结合起来
调试。

常见的硬件故障有:
逻辑错误:硬件的逻辑错误是由丁设计错误和加工过程中的工艺性错误所造成的。

这类错误包括:错线、开路、短路、相位等。

元器件失效:元器件不符合要求;方向装反、二极管极器件失效的原因包括两个方面,一方面是器件本身已损坏,另一方面是组装过程中造成元器件失效,如电解电容方面性接反、集成电路或排电阻方向错误、三极管引脚接错等可靠性差:引起系统不可靠的因素很多,如金属化孔、接插件接触不良会造成系统时好时坏,经不起振动;内部和外部的干扰、电源纹波系统过人、器件负载过大或热稳定性差等造成逻辑电平不稳定;另外,走线和布局的不合理等也会引起系统可靠性差。

电源故障:若样机中存在电源故障,加电后将造成器件损坏。

电源故障包括:电压值不符合设计要求,电源引出线和插座不对应,电源功率不足,负载能力差等。

硬件的调试方式有:
脱机调试:脱机调试是仿真机加电之前,先用万用表等工具,根据硬件电气原理图和装配图仔细检查样机的正确性,并核对元器件的型号、规格和安装是否符合要求。

就特别注意电源的走线,防止电源之间的短路和极性错误,并重点检查扩展系统总路线是否存在相互间的短路或与其它信号线的短路。

对于样机所用电源事先必须单独调试,调试好后,检查其电压值、负载能力、极性等均符合设计要求,才能加到系统的各个部件上。

在不插芯片的情况下,加电检查各插件上引脚的电位,仔细测量各点电位是否正常,尤其应注意甲.片机插座上的电位是否正常,若有高压,可能损坏仿真机。

联机调试:通过脱机调试可排除一些明显的硬件故障。

有些硬件故障还是要通过联机调试才能发现和排除。

软件调试与所选用的软件结构和程序设计技术有关。

如果采用模块化程序发计技术,则逐个模块调好以后,再进行系统程序总调试。

调试子程序时,一定要求符合现场环境,即入口条件和出口状态。

调试的手段可采用单步运行方式和断点运行方式,通过检查用户系统CPU的现场、RAM的内容和I/O口的状态,检
测程序执行结果是否符合设计要求。

通过检测,可以发现稃序中的死循环错误、机器码错误及转换地址错误,同时也可以发现用户系统中的硬件故障、软件算法及硬件设计错误。

在调试过程中逐步调整用户系统的软件和硬件。

各程序模块调试好后,可以把相关的功能模块联合起来起进行整体综合调试。

存这个阶段若发生错误,可以考虑各子程序存运行时是否存破坏现场,缓冲区数据是否发生变化,标志位的建立和清除是否影响其它标志位的变化,堆栈区的深度是否小够,输入设备的状态是否正常等。

单步和断点调试后,还应进行连续调试,因为单片机的运行是在严格的时序下进行的,单步运行成功并不代表连续运行成功。

待全部调试完成后,应反复运行多次,除了观察稳定性之外,还要考虑仿真条件是否与实际相符,如晶振频率是否与样机一致,所使用CPU资源是否与实际CPU资源相符等等。

如调试时采用52系统CPU,并且程序中使用RAM地址80H~FFH,而目标程序写入51系列就不能正常运行程序。

参考文献
[1]宁爱民, 兰如波.单片机应用技术.[M]北京:北京理工大学出版社,2009
[2]姜志海, 赵艳蕾.8051单片机C语言程序设计与应用.[M]北京:电子工业出版社,2008
[3]周向红.51单片机课程设计.[M]武汉:华中科技大学出版社,2011
[4]张毅刚, 彭喜元 ,彭宇.单片机51开发与应用.[M] 北京:高等教育出版社,2010
[5]程铮等. 单片机原理与应用系统开发. [M]北京:国防工业出版社,2010
结束语
通过对课程设计论文的方案设计与提出,程序的设计与编程。

使我对大学所学的知识有了一个清晰明确的总体概括,虽然最后仿真实验未能成功,但还是让我学到了很多,亦让我明白还很需要学习。

当然,通过本次课题设计,我了解到洗衣机控制器的主要设计思路,巩固了自己所学电子控制方面的大量学科知识,也加深了诸如preteus 、office办公软件特殊功能等。

课程设计论文所需要的必须辅助技能的使用熟练程度,另外还有专门值得一提的是对新生事物的熟悉和迅速掌握其特性规律、结构原理及相关功能作用的认知能力有了大幅提高,这是关键的,也是我最看重的,最珍惜的。

同时,也了解到洗衣机控制器系统具体步骤措施、这其中的要点难点、技术处理,和作为主控制器的AT89c5l单片机的工作原理以及电源电路的内部功能结构,完成本次设计后,使自己多年来所学的理论知识和实践有了一次有机结合允分发挥的绝好机会,进步深化巩固了自己的专业知识。

附录Ⅰ程序
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit Low_key=P1^5;
sbit Mid_key=P1^6;
sbit Hig_key=P1^7;
sbit Start_key=P1^4;
sbit P34=P3^4;
sbit P36=P3^6;
sbit P37=P3^7;
sbit P33=P3^3;
sbit P30=P3^0;
sbit P31=P3^1;
sbit P10=P1^0;
sbit P13=P1^3;
sbit P14=P1^4;
uchar code table1[10]={0XF0,0XF1,0XF2,0XF3,0XF4,0XF5,
0XF6,0XF7,0XF8,0XF9};
uchar code table2[10]={0X0F,0X1F,0X2F,0X3F,0X4F,0X5F,
0X6F,0X7F,0X8F,0X9F};
void Delay(uint i)
{
uint j;
for(;i>0;i--)
for(j=0;j<333;j++);
}
void r_display(void) //电机转动计时
{
uint j,k;
uint count;
for(count=0;count<=20;count++)
{
if(count==20)
continue;
j=count/10; //十位数
k=count%10; //个位数
P0=table2[j]& table1[k];
Delay (1000);
}
}
void s_display(void) //电机停转计时{
uint j,k;
uint count;
for(count=20;count<=22;count++)
{
if(count==22)
continue;
j=count/10; //十位数
k=count%10; //个位数
P0=table2[j]& table1[k];
Delay (1000);
}
}
void P_T_display(uint i)
{
uint j,k;
uint count;
for(count=0;count<=i;count++) {
if(count==i) //第i秒不延时 continue;
j=count/10;
k=count%10;
P0=table2[j]& table1[k];
Delay(1000);
}
}
void main(void)
{ uint i,j,k,t,p;
P0=0X00;P2=0X00;
P10=1; P13=0;
if(Start_key==0)
{
for(t=0,i=0;i<3;i++)
{
P2=table1[++t]& 0X0F;
if(Low_key==0) //低中高水位选择{P31=0;
Delay(4000);}
if(Mid_key==0)
{P31=0;
Delay(6000);}
if(Hig_key==0)
{P31=0;
Delay(8000);}
for(j=2;j>0;j--)
{P31=0;
Delay (500);
P31=1;
Delay (500);
}
for(p=0,k=0;k<5;k++)
{ P2=table1[t]& table2[++p];
P36=1;P37=0;
r_display(); //数码管显示正转20秒(程序延时20秒)
P36=1;P37=1;
s_display();
P36=0;P37=1;
r_display();
P36=1;P37=1;
s_display();
}
P30=0;P10=0; //开始排水,排水指示灯亮,水位指示灯息灭 P_T_display(10);
P0=0X00;
P30=1; //10秒后停止排水,排水指示灯熄灭
if(P30==1) //排水完成后,开始脱水
{P33=0;
P_T_display(30);
P0=0X00;
P33=1; //30秒后脱水完成,脱水指示灯熄灭 }
P10=1; //水位指示灯点亮
}
P34=0;
Delay (3000);
P34=1; //报警3秒
P2=0X00;
P10=0;P13=1; //停机
P14=0;
while(1);
}
else
while(1)
{
if(Start_key==0)
break;
}
}
附录Ⅱ硬件原理图。

相关文档
最新文档