智能洗衣机控制系统剖析.pptx
一、大作业摘要一、大作业摘要洗衣机控制电路由一片altera公司的cyclone2系列EP2C5T144C8的FPGA作为中心控制器加上必要的外围电路组成,实现对洗衣机工作状态的控制。芯片编程采用Quartus2作为开发工具,由控制模块块,显示译码模块组成,顶层使用原理图实现,底层由Verilog HDL语句实现。中心控制器FPGA根据控制键盘的信号,向洗衣机发出正传,反转,待机信号,并通过数码管和LED灯显示当前的状态及剩余时间。该洗衣机控制电路可以方便快捷的实现对洗衣机的控制和状态的显示功能。第1页/共34页二、设计的背景、目的和意义二、设计的背景、目的和意义现今社会家用电器日益增多,技术也是不断更新。主要家用电器更是发展迅速。洗衣机现在已经成为不可或缺的家用电器。我设计的这款洗衣机的控制器是基于verliogHDL基础。这款洗衣机的实用性很高,具有反转,正转,报警之后暂停工作的功能。对于现今的洗衣机大多数都不具备报警功能。这一控制器的设计正好填补了这一空缺。第2页/共34页三、设计任务及要求三、设计任务及要求1洗衣机的状态为待机5s正转60s待机5s反转60s,并用3个LED灯和7段显示器分别表示其工作状态和显示相应工作状态下的时间。2可自行设定洗衣机的循环次数,这里设置最大的循环次数为9次。3具有紧急情况的处理功能。当发生紧急情况时,立即转入待机状态,紧急情况解除后,继续执行后续步骤;4洗衣机设定循环次数递减到零时立即报警,以表示洗衣机设定的循环次数已经结束第3页/共34页四、确定输入和输出变量四、确定输入和输出变量四个输入量 :clk时钟脉冲信号 rst控制器复位按键 start开始状态开关 en紧急状态开关 add设置循环次数 八个输出量 :numa倒计时器的个位 numb倒计时器的十位 fore显示正转状态 back显示反转状态 alarm显示警告状态 led【2.0】显示当前状态 第4页/共34页五、确定输入状态五、确定输入状态启动start后,控制器首先进入待机s0状态,时间从5秒倒计时,如果没有到0秒则继续等待,时间自减;当t=0,进入洗衣机正转s1状态,时间从60秒倒计时,如果没有到0秒则继续等待,时间自减;当t=0,进入洗衣机待机s2状态,同理等待5秒;当t为零后,进入s3洗衣机发转状态,时间从60秒倒计时,如果没有到0秒则继续等待,时间自减;整个过程依次循环。紧急状态emergency,当按下紧急停止按钮后,处于正反转状态中的电机停止转动,同时紧急报警LED灯亮,因此紧急状态不设定独立状态第5页/共34页第6页/共34页七、输入和输出变量对应部件说明七、输入和输出变量对应部件说明clk:采用实验箱里的频率产生器,产生1Hz频率add:实验箱里的按键 rst,start,en:状态开关按键numa,numb:实验箱中的共阳七段数码管led【2.0】:实验箱中的3个led灯fore,back,alarm:实验箱中的3个led灯第7页/共34页八、方案论证八、方案论证方案1:基于Verilog原理实现的数字电路控制方案2:基于单片机原理实现的控制 确定选择方案1,理由是Verilog语言灵活简单,方便快捷易懂,有较好的实用价值第8页/共34页第9页/共34页十、状态编码十、状态编码 s0=4b0001,s1=4b0010,s2=4b0100,s3=4b1000;采用独热编码第10页/共34页十一、状态机设计十一、状态机设计module washer(clk,rst,en,start,add,fore,back,numa,numb,alarm,led,tim);input clk,rst,start,add,en;/en为紧急状态信号output fore,back,alarm;output 3:0numa,numb,tim;/numa为倒计时个位,numb为倒计时十位output 2:0led;reg 2:0led;reg 3:0tim;reg 3:0numa,numb;reg fore,back,alarm;reg 3:0count3;reg 3:0state;wire A;parameter s0=4b0001,s1=4b0010,s2=4b0100,s3=4b1000;第11页/共34页always(posedge add or posedge rst)/循环次数count设置beginif(rst)count3=1b0;else beginif(start=0)beginif(count3=14)count3=count3+1b1;elsecount3=1b0;endend end第12页/共34页 always(posedge clk or posedge rst)beginif(rst)/系统复位begin back=1b0;fore=1b0;numa=4b0000;numb=4b0000;state=s0;led=3b001;alarm=1b0;end elsebeginif(!en&start)/start为1,en为0则正常工作第13页/共34页begin alarm0,开始工作 begin case(state)s0:begin if(numb=0&numa=0)/时间为0,状态转移begin state=s1;numa=4b0100;numb=4b0000;led=3b001;back=1b0;fore=1b0;end第14页/共34页 else begin state=s0;led=3b100;back=1b1;fore=1b0;end ends1:begin if(numb=0&numa=0)begin state=s2;numa=4b1001;numb=4b0101;back=1b0;fore=1b1;led=3b010;end第15页/共34页 else begin state=s1;led=3b001;back=1b0;fore=1b0;end ends2:begin if(numb=0&numa=0)begin state=s3;numa=4b0100;numb=4b0000;back=1b0;fore=1b0;led=3b001;end第16页/共34页 else begin state=s2;back=1b0;fore=1b1;led=3b010;end ends3:begin if(numb=0&numa=0)begin state=s0;numa=4b1001;numb=4b0101;led=3b100;back=1b1;fore=1b0;end第17页/共34页 else begin state=s3;back=1b0;fore=1b0;led=3b001;end enddefault:state0)/倒计时控制部分beginif(numa=0)/numa为0,则numa赋值9,numb自减1 begin numa=4b1001;numb=numb-1b1;end第18页/共34页else numa=numa-1b1;endif(numa=0&numb=0&state=s0&!en&led=3b100)begin /一次循环结束tim自减1 tim=tim-1b1;end end else begin back=1b0;fore=1b0;numa=4b0000;numb=4b0000;state=s0;led=3b001;end第19页/共34页end else if(en&start)/en为1,进入紧急状态begin back=1b0;fore=1b0;alarm=1b1;endelse /start为0,给循环次数tim赋值begin tim=count3;numa=4b0000;numb=4b0000;alarm=1b0;end endend endmodule第20页/共34页原理图第21页/共34页第22页/共34页十二、仿真时序图十二、仿真时序图 图4-1洗衣机正常运行的仿真图如图4-1所示,rst置高电平,控制器复位,rst低电平后,add按下两次,设置循环次数为2,按下start后置为高电平,洗衣机开始工作。第23页/共34页图4-2紧急暂停仿真图如图4-2所示,紧急状态发生,en变为高电平,洗衣机暂停工作,电机停止运转,紧急状态结束后,恢复原状态。第24页/共34页如图4-3所示,紧急暂停结束,en恢复低电平,再次开始工作,进入下一循环。图4-3紧急状态结束,状态恢复第25页/共34页十三、使用说明十三、使用说明(1)电路上电后,先按下复位键rst复位,在Start拨码开关未闭合前可以由add按键开关设置总的工作循环次数,确定洗衣机控制器工作循环次数。(2)设定好允许工作时间后,闭合Start开关,洗衣机控制器开始工作。(3)可以看见指示待机LED灯亮5s,正转LED灯亮60S,待机LED亮5s,反转LED灯亮60s,如此反复直至工作允许时间为0。第26页/共34页十六、设计结论及评价十六、设计结论及评价优点:能根据不同的衣物的干脏程度来调整循环次序,并且具有报警功能和回到正常状态的功能不足:不能在洗衣时自动加洗衣粉结论:该设计有待提高第27页/共34页第28页/共34页第29页/共34页 第30页/共34页第31页/共34页第32页/共34页 谢谢大家!第33页/共34页感谢您的观看!第34页/共34页