电子设计大赛广西区初赛论文.docx
《电子设计大赛广西区初赛论文.docx》由会员分享,可在线阅读,更多相关《电子设计大赛广西区初赛论文.docx(39页珍藏版)》请在冰豆网上搜索。
![电子设计大赛广西区初赛论文.docx](https://file1.bdocx.com/fileroot1/2022-12/7/33b9e701-eaa2-49ca-ab74-54a657bf59bd/33b9e701-eaa2-49ca-ab74-54a657bf59bd1.gif)
电子设计大赛广西区初赛论文
2009全国电子设计大赛广西区初赛论文
洗衣机控制模型
作者:
谭伟李华平伍世昌
时间:
2009年5月
引言……………………………………………………………………
整体结构设计…………………………………………………………
电源模块………………………………………………………………
主控单元模块…………………………………………………………
水位检测模块…………………………………………………………
进出水控制模块………………………………………………………
洗衣粉投放模块………………………………………………………
液晶显示模块…………………………………………………………
键盘模块………………………………………………………………
操作说明………………………………………………………………
总结……………………………………………………………………
讨论……………………………………………………………………
程序流程图……………………………………………………………
程序……………………………………………………………………
引言
技术愿景:
在拿到题目之后,我们设想了我们组的洗衣机所要达到的技术指标。
1.能达到洗衣机模型所具有的基本功能:
能够基本显示各种洗衣状态。
能够识别进水量,并将信息反馈到单片机上。
通过单片机控制进水及进水量、电机正反转时间、出水、甩干等各项功能。
2.拓展功能:
基本显示设备为LCM液晶显示器。
用水位传感器监测水位,并将水位信息传递到单片机上,并显示在液晶屏上。
在洗衣机中增加水温传感器和水温加热器。
通过单片机控制加热水温来达到最适温度。
以提高洗衣效率。
在进衣口增加金属传感器,在衣物有钥匙手表之类的金属时能够及时发出警报。
增设压力传感器来自动检测衣物的重力来推断进衣量的多少,进行全自动智能洗衣。
设置人性化的洗衣模式,例如:
标准模式、手动模式、特效模式、和自动模式。
能够在不降低洗衣机性能的基础上尽量节约能源。
3.发展方向:
在初步实现自动化之后能够和手机链接,通过短信来控制洗衣机的工作,真正达到全自动的理念。
在设计过程中。
我们以以上的技术指标来设计我们的洗衣机模型。
在设计过程中也碰到了一些问题。
首先是水位传感器。
我们购买的水位传感器是压力型的传感器,需要在密封的条件下使用,考虑到我们的洗衣机模型无法达到传感器的使用条件最后我们采用了比较器来代替水位传感器。
在金属探测方面,激光金属传感器能够达到我们的设计要求,但是考虑到成本的问题,抛弃了原来的设计,在这个洗衣机模型中没有实现金属探测报警的功能。
而由于模型体积的限制,增设的水温加热功能在模型中也没能够实现。
这是设计中所出现的问题。
最后我们的设计,初步完成了本洗衣机模型。
本作品除了具有题目所要求的基本功能的基础上,增设了三项功能:
第一项是在显示部分上增设了“浸泡”“预约”“洗衣时间”的功能的设置,这让洗衣机能够更人性化的执行各种洗衣机的功能。
此外,在题目所要求的功能之外,我们还增设了各种洗衣模式的设置,例如“手动”,“自动”,“标准”,“特效”等功能,能够根据各种情况选择最佳的洗衣模式,达到提高洗衣的效率。
最有特色的是自动模式,它能根据衣物的多少(根据重量测定)计算,然后利用模糊算法来计算出洗衣次数,循环次数,水位,转速。
并自动的加入适当的洗衣粉。
实现了在全程的自动化,初步实现了具有初步智能的“智能”洗衣机。
在节能方面,我们选择了MCU的闲置节能方式,在不用洗衣机的或者洗衣机处于等待阶段的时候能降低功耗。
洗衣机模型的所有参数、状态、模式全部采用LCM液晶显示器显示,将洗衣机的即时信息显示出来。
整个作品分为两大部分,分别是主控系统和模拟洗衣机的机体部分。
通过紧凑的连接,组成了我们的洗衣模型。
一、整体结构设计
主控系统采用双层结构,各层间用铜柱支撑和连接。
上方是键盘,电源,和LCM模块,进出水控制模块(如图所示)其中LCM液晶显示器倾斜位于前方以便观察和控制。
键盘左边是电源开关,右上角是总电源指示灯和电磁阀电源指示灯,LCM模块的右下角是LCM模块的电源开关,可以控制显示屏的开关。
模拟容器采用了符合题目要求的两升容器。
主电机安装在瓶盖上。
由于没能找到转轴足够长的电机,我们采用一般的笔芯做为电机的外部转轴,为了解决电机转动过程中的晃动问题,我们做了个支架,解决了电机转动时振动过大的问题。
此外,我们还在适当的地方
上图:
箱体构造
增加了转轮,在离盖子附近位置安装了直径4厘米的塑料圆盘,在圆盘上放置了一块小磁铁,在磁铁转动轨迹的正下方安放了一个霍尔开关,用于计数,用于测量转速。
在容器的上下部分别安装了能够分别控制进出水的两个电磁阀。
并在机体的侧面增加了直径为7毫米的连通管。
其水位与机体内部实际的水位一致。
并且在连通管中加入了用比较器做成的水位检测电极。
我们设立了四个水位在状态,分别是“无水”“低水位”“中水位”“高水位”模拟容器上方的小容器为洗衣粉放置装置,通过装置下方的电机转动,运用叶扇把洗衣粉甩入模拟容器。
用单片机控制叶扇转动的时间和转速来实现定量投放洗衣粉的目的。
二、主控单元模块
电磁阀电源指示灯
上图:
主控单元模型
在主控单元中主控芯片的选择上,由于考虑到程序会比较大,我们暂时接触到的51单片机已经无法满足要求,综合各方面的因素,我们最终采用的是AT89s52(可存16k的程序)。
在主控单元中,89s52的外围芯片有L293D,74LS14,LM393.其中L293D为电机驱动芯片,其内部继承了2个双极型H桥电路,可以同时控制两路电机。
控制1A(1B)和2A(2B),可以控制电机的转向,10正转,01反转,使能端EN1(EN2)可用于脉宽调节(PWM),调节PWM的占空比可以方便的调节电机的转速。
通过单片机的P0.6和P0.7经过反相器74LS14接到1A(1B)、2A(2B)引脚,P2.6口和P2.7口控制EN1和EN2,以调节两路电机的转速,本设计中两电机转向控制共用两个引用脚,同时控制两电机的转向,通过PWM(EN1),PWM(EN2)的控制,又可以选择电机和控制转速,仅使用了4个I/O口,优于原来采用的6线,节约了I/O口。
L293D峰值输出电流为1.2A,连续输出电流为600mA,电压为12V,是作为本模型比较合适的器件。
上图:
主控单元原理图
上图:
主控单元PCB图
控制系统单元电路图如图所示,在设计电路图和转成PCB图时,最初采用单面布线,但是由于连线比较复杂最终采用了双层布线的结构,同时也增加了焊接和调试的难度,但是综合各方面的因素,最终我们采用了双层布线结构。
最后,经过调试,全板的控制线路完全正常,在采用控制单元整合之前,各个功能小模块用实验的方法一一检测,如水位监测,电机转向转速蜂鸣器等模块的调试成功后,再整合成一块板子。
因此,这块控制电路是经过由小到大,由分到和的制作过程,使制作的成功率大大提高,保证了主控单元的可靠性。
单片机I/O口配置如下图所示
1.电源模块
上图:
电源PCB图
电源PCB如图所示,在电源设计时,我们组曾经考虑过采用稳定的开关电源。
但是在之后的设计过程中发现。
模型的各部分对电源的稳定性要求不高。
为了精简模块,我们最
终采用了普通的电源模式。
采用变压器将家用220V交流电压转成15V的交流电压。
通过2A的整流堆整流后,再通过7812,7912和7805来实现12V、正负12V和5V电压的输出。
并在各稳压管上增加铝制散热片来加快稳压管的散热,以增加电源的使用寿命和使用安全。
在电源上我
上图:
电源电路图
们设置了较多的电源接口,以方便了设计过程中的各种实验的需要。
比较器(水位检测)
LM339集成块内部装有四个独立的电压比较器,每个比较器有两个输入端和一个输出端。
两个输入端一个称为同相输入端,用“+”表示,另一个称为反相输入端,用“-”表示。
用作比较两个电压时,任意一个输入端加一个固定电压做参考电压,另一端加一个待比较的
比较器原理图
信号高于“+”端时,输出管饱和,相当于输出端接低电位。
两个输入端电压差别大于10mV就能确保输出能从一种状态可靠地转换到另一种状态,因此,选用LM339用在通过检测水的电阻而检测水的有无比较理想(如图1)。
LM339的输出端相当于一只不接集电极电阻的晶体三极管,在使用时输出端到正电源一般须接一只上拉电阻。
选不同阻值的上拉电阻输出端得到不同高电位的值,在此选用4.7k电阻作为上拉电阻。
比较器的各输入输出口所接元器件的参数如上图所示,没有接触水的时候,7端的电位比6端的电位要高,此时1端为高电平;当In1和In2接触到水的时候,由于水的阻值与R4的阻值相仿,二者并联阻值变小,迫使7端的电位下降,此时7端的电位比6端的电位要低,1端输出低电平,由此可作为单片机的输入口触发信号,从而检测水位。
号电压。
当“+”端电压高于“-”端时,输出管截止,相当于输出端开路。
当“-”端电压
进出水控制模块
电路图如图所示,单片机P0.4,P0.5,P2.5分别控制达林顿管(LTIP-127,PNP型三极管(低电平导通))的导通与截止,从而控制继电器吸合与释放。
进出水电磁阀是采用交流电220V的洗衣机进水电磁阀,在实际安装中,出水电磁阀由于水压不够无法出水,于是我们对电磁阀内部结构加以改造,把铁芯加长,胶塞做成小圆片,削低封底,经过改造,这一出水电磁阀已可以使用。
当排水时,单片机P0.5输出一个低电平,达林顿管导通,继电器吸合,电磁阀打开,水从电磁阀流出。
同理,当P0.4口输出低电平时,进水电磁阀打开。
我们之所以选择用达林顿管TIP-127,一是他的耐压很高,而且有高增益,响应快等特点。
当复位单片机时,各引脚为高电平,为了防止误动作,所以要采用低电平导通的PNP型达林顿管,而TIP-127正好符合了设计要求,故选择其作为控制继电器电磁阀的“开关”,弱电控制强电,最简单、方便的就是采用继电器,所以控制电路中采用了四个继电器。
洗衣粉放置装置
洗衣粉放置装置采用了经过改装之后的12V水泵做成,洗衣粉进入水泵内部时,由电机叶扇甩出,经L293D一路电机的控制转速和时间,从而确定投放洗衣粉的量。
自动投放的原理是根据衣物的重量,控制投放洗衣粉的量,重量的检测是根据转动定理估算出来的,进水到低水位搅动电机开始转动3秒,到转速平稳后,打开计数器,计算相隔2秒间0.2秒内电机转动的周数T1,T2后,计算得2秒前后的角速度
2π/(0.2/T1),2π/(0.2/T2),进而计算得2秒内的平均角加速度
α=(2π/(0.2/T1)-2π/(0.2/T2)/2=(T1-T2)π/0.2
圆柱的转动惯量为J=mR2/2,R为模拟容器的半径,设摩擦力矩参数为K,则
K=Jα=MR2π(T1-T2)/0.4
如果R的单位为cm,则
M=4000K/(T1-T2)R2π
衣物的质量为ZL=M-Mo,水
调节K的大小,以抵消M0,ZL=M.
根据ZL的大小。
判断洗衣次数,循环次数,水位和洗衣粉的量;采用模糊控制的方法;分四个等级,即小于300,300~500,500~700,700~1000。
大于1000则停止洗衣,即洗衣粉量范围为0~1000.
以上由程序自动完成,计数用AT89s52的T2计数,传感器为霍尔传感器,采用中断方式计数,具体见程序部分。
液晶显示模块
LCM模块
LCM采用中文LCM(TS-12864A-3),可以显示4*8共32个汉字,采用中文LCM既方便又不占用单片机的内存,液晶显示器的引脚如下图:
LCM接口1
键盘部分:
键盘原理图如图所示,当键盘0按下的时候,Out端接有上拉电阻的单片机I/O接口,二级管导通,相应的二进制码为0000;当按下键盘1的时候,相应的二进制码为0001;其他以此类推。
操作说明:
按键排布(下图):
操作说明:
打开总电源,设定模式(采用“浸泡”或者“预约”,先设置当前时间),然后选择“水位”,“洗衣次数”,“循环次数”,”洗衣强度”。
完成设定后按下“启动”,则进入洗衣状态(若进入“浸泡”或者“预约”模式只需按下“运行”即可)。
键盘功能键说明
水位:
按下水位键,显示水位“高”“中”“低”三个水位档,默认水位为“低”,即低水位。
时间:
开机时,按“时”则液晶屏上的“时”位增加增加1.按“分”,则分加1,加到“60”时返回“0”,设默认时间为00:
00:
00。
浸泡:
开机时,按“时”则液晶屏上的“时”位增加增加1.按“分”,则分加1,加到“60”时返回“0”,设置浸泡时间后,同时液晶显示屏显示“浸泡”,按下“运行时间”系统按设定的水位自动进水后,停止,直到浸泡时间结束后自动洗衣。
预约:
开机时,按“时”则液晶屏上的“时”位增加增加1.按“分”,则分加1,加到“60”时返回“0”,设定预约时间,同时同时液晶显示屏显示“预约”,当到达预约时间后自动进水洗衣。
洗衣次数:
每按一次,次数加1,在1-5次循环,初始值为“0”。
循环次数:
每按一次,循环次数加1,在1-9次间循环,初始值为“0”。
运行时间:
用于开始计时。
模式选择:
手动:
用户自己设定水位,洗衣次数循环次数,洗衣强度。
自动:
设为自动模式后,按下“启动”系统自动测定衣物量,自动设置水位,洗衣次数,循环次数,洗衣强度,然后自动运行。
标准:
系统设置一般的洗衣方式:
水位为“中”,洗衣次数为“3”循环次数为“3”,洗衣强度为“中”,转速脉宽为70%。
特效:
系统设定了特殊参数:
水位“中”,洗衣次数为“3”,水位为“中”,循环次数为“3”,洗衣强度为“高”,脉宽为100%。
复位:
复位系统后,所有的参数归为初始化状态。
洗衣强度:
有“高”“中”“低”三种选择,脉宽分别为100%,60%,30%。
电磁阀开关:
初始时,电磁阀的状态为开,若长按此键5秒以上,则为关,并进入低功耗模式。
总结:
从4月20日题目公布开始,我们组马上讨论参赛题目,根据我们组里面个人的专长,综合各方面的情况,最终决定制作洗衣机模型。
并在当天确定了我们上述我们所确定的技术指标。
在我们队制作的过程中,有时候为了解决一个难题我们会熬夜到很晚!
我们这个队伍也是刚刚成立的,经过这个月的磨合,我们懂得了团队之间的合作,同心协力完成我们的作品!
这是我们这个月来的共同目标!
这个洗衣机模型,凝集了我们的汗水!
在制作成功之后,我们感到十分的欣慰与自豪。
不管结果怎么样,我们努力过了,同时我们对我们的作品也充满了信心!
这个洗衣机模型最大的特点是模块化设计!
这样大大提高了制作的成功率以及降低了调试的难度。
在最终的整合过程中经过反复的考虑,将主控系统整合成了一个大模块,使得我们的洗衣机模型体积小巧而功能强大。
在题目基本要球的基础上。
我们所设想的各项功能,虽然金属探测和温度加热模块由于各种原因没能在我们的模型中体现出来,但是我们的洗衣机已经拥有了足够强大的功能——拥有了一定的智能化!
这也是社会发展的方向。
我们还考虑到了能源的节约!
这是我们组最大的优势所在!
当然,我们的作品也会存在一定的问题,我们发现的问题是比电源的散热的问题,还有模型的排水系统排水不太完全。
当然还会有别的以我们的角度想不到的问题,希望评委们指出,我们将会认真听取评委们的意见,在以后设计过程中加以改进。
讨论:
在设计这个洗衣机模型的时候,我们也在考虑洗衣机未来的发展方向……就是由现在的机械化向智能化发展。
而在洗衣机真正到达真正的智能化之前,首先要达到我就是人性化和自动化。
目前的洗衣机已经能够初步达到自动化的阶段了,我们的洗衣机模型也初步达到了自动化。
但是要向智能化发展还需要很长的时间!
我们提出了一个设想就把手机和洗衣机终端联系在一起,让洗衣机能够接受机主所发来的特定信息,然后根据指令控制洗衣机的运行,这是我们希望的洗衣机的所能达到的下一个目标。
当然,还有很多别的设想,希望大家能够发挥自己的想象。
让我们的生活更加精彩!
程序流程图:
程序部分:
#include"reg52.h"
#include"intrins.h"
#include"math.h"
#defineucharunsignedchar
#defineuintunsignedint
#definedataportP1//定义LCM数据口
----------------------------------------
/*定义各按键的宏*/
#defineSHWSP2&0x0f
#defineCISHSP2&0x0f
#defineXHSP2&0x0f
#defineQDP2&0x0f
#defineSETHP2&0x0f
#defineSETMP2&0x0f
#defineJPHP2&0x0f
#defineJPMP2&0x0f
#defineTIMRUNP2&0x0f
#defineYUHP2&0x0f
#defineYUMP2&0x0f
#defineZHSUP2&0x0f
#defineMODEP2&0x0f
-------------------------------------------
#defineR8//模拟洗衣桶半径8CM
#defineK1000//摩擦力矩系数
-------------------------------------------
/*各种显示状态的字符*/
ucharcodestr0[]={"时间:
"};
ucharstrz[]={'0','\0'};
ucharstr1[]={'0','0',':
','0','0',':
','0','0','-','-'};
ucharjinpao[]={'0','0','-','0','0','-','0','0','-','-'};
ucharcodestr2[]={"水位..洗衣强度"};
ucharcodestr3[]={"重复..次循环..次"};
ucharcoded[]={"模式:
手动—准备"};
ucharcodeshoud[]={"手动"};
ucharcodezid[]={"自动"};
ucharcodebiaozh[]={"标准"};
ucharcodetex[]={"特效"};
ucharcodezhsu1[]={"弱"};
ucharcodezhsu2[]={"中"};
ucharcodezhsu3[]={"强"};
ucharcodeshw1[]={"低"};
ucharcodeshw2[]={"中"};
ucharcodeshw3[]={"高"};
ucharcodezhtaixi[]={"洗衣"};
ucharcodezhtaij[]={"进水"};
ucharcodezhtait[]={"脱水"};
ucharcodezhtaip[]={"排水"};
ucharcodezhtaiw[]={"完成"};
ucharcodeyuyuez[]={"预约:
"};
ucharcodejinpaoz[]={"浸泡:
"};
-------------------------------------------
sbitRS=P3^0;//LCM寄存器脚
sbitRW=P3^6;//LCM读写控制端
sbitE=P3^7;//LCM使能端
sbitPWM=P2^7;//主电机PWM控制端
sbitPWM2=P2^6;//洗衣粉电机PWM控制端
sbitMR=P0^6;//电机转向控制端
sbitML=P0^7;//电机转向控制端
sbitJSH=P0^4;//进水控制端
sbitCHSH=P0^5;//出水控制端
sbitBZ=P3^1;//蜂鸣器
sbitSHW0=P0^0;//水位0
sbitSHE1=P0^1;//水位1
sbitSHW2=P0^2;//水位2
sbitSHW3=P0^3;//水位3
sbitPOWER=P2^5;//电磁阀电源控制端
ucharmd=1;//模式标记
ucharshw_c=1,cish=0,xh=0;//水位、洗衣次数、循环次数标记
ucharhour=0;//时间的时
ucharminite=0;//时间的分
ucharsecond=0;//时间的秒
ucharcount=20;//计数标记
ucharf=0;//时间、浸泡、预约间隔时间计数标记
ucharh=0;//浸泡、预约时
ucharm=1;//浸泡、预约分
uchars=1;//浸泡、预约秒
uchart=0;//电磁阀开关延时标记
ucharflag=0x00;//状态标记
ucharzhs=1;//转速标记
ucharq=60;//转速强度标记,PWM默认位60%
uintfreq=0;//储存计数寄存器变量1
uintcun=0;//储存计数寄存器变量2
ucharc=0;//计数间隔变量
sfr16DPTR=0x82;//16位计数寄存器地址
uintzl=0;//衣物质量变量
----------------------------------------------------------------------
*****************************************************************
----------------------------------------------------------------------
voiddelay0_5ms(uintx)//0.5s延时函数
{uinti,j;
for(i=0;ifor(j=0;j<60;j++);
}
voiddelay1s(uintx)//1s延时函数
{uinti,j;
for(i=0;ifor(j=0;j<100;j++)
delay0_5ms(20);
}
voidclokinit(void)//定时初始化
{IE=0x8b;
TCON=0x00;
TMOD=0x51;
PCON=0x00;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TR0=0;
}
voidcheckBF(void)//检忙函数
{dataport=0xff;
RS=0;RW=1;
_nop_();
E=1;
_nop_();_nop_();
while(dataport&0x80);
E=0;
}
voidwritecmd(ucharcmd,ucharattribc)//LCM写入指令函数
{if(attribc)
checkBF();
RS=0;RW=0;
_nop_();
dataport=cmd;
_nop_()