当前位置:文档之家› 全自动洗衣机控制器

全自动洗衣机控制器

实验四全自动洗衣机控制器一、实验目的1.学习掌握全自动洗衣机的控制原理。

2.掌握基于有限状态机的控制电路设计方法。

二、预习要求1.预习全自动洗衣机的控制原理和基于有限状态机的控制电路的设计方法。

2.画出洗衣机控制器包括不同洗衣模式的完整的状态转移图。

3.用Verilog HDL语言编程实现全自动洗衣机控制器,并进行时序仿真。

4.对顶层设计文件进行引脚锁定。

三、实验要求1.设计一个全自动洗衣机控制器电路,实现对洗衣机的全自动控制。

根据全自动洗衣机的控制原理设计一个控制电路,使之能够控制全自动洗衣机完成整个工作过程。

洗衣机工作过程分为两种情况:(1)全部自动完成当按下复位按钮时,洗衣机上电,控制电路复位到初始状态(默认水位为“中”);使用者可根据衣服的多少,按下水位控制按钮,改变水位设置,以控制上水时加水的多少;当按下启动/暂停按钮时,洗衣机开始洗衣的第一个操作:进水阀门打开,开始上水,并根据水位设置(高、中、低、少)历时不同的时间timeadd(8s、7s、6s、5s);然后进水阀门关闭,电机开始运转,开始洗衣过程,并历时9s;然后电机停止运转,排水阀门打开,开始排水,并根据水位设置(高、中、低、少)历时不同的时间timedrain(7s、6s、5s、4s);然后排水阀门关闭,进水阀门打开,开始第二次上水,并历时timeadd……当甩干结束后,整个洗衣过程完成,扬声器发出持续15秒的急促的“嘀嘀”音,提示用户洗衣结束。

正常运行状态下全自动洗衣机工作过程如图1. 1所示。

注意:在甩干过程中,电机一边高速旋转,一边排水。

图1. 1 正常运行状态下默认水位为“中”时全自动洗衣机工作过程从图中可以看出,洗衣机整个工作过程可分为9个状态,要求运用有限状态机的设计思想来实现。

(2)人工干预在每个工作状态下,如果想要洗衣机暂停工作,可按下启动/暂停按钮,则洗衣机立刻暂停当时的操作。

比如,在第一次加水过程中,若按下启动/暂停按钮,则进水阀门立刻关闭,暂停上水,计时暂停;当再次按下启动/暂停按钮,则进水阀门又打开,并继续计时,直到加水满timeadd后,进入洗衣过程。

洗衣机功能设置:①打开洗衣机盖/合上洗衣机盖:当洗衣机在甩干过程中,若打开洗衣机盖,则洗衣机应立即暂停工作,停止电机运转和排水;只有合上洗衣机盖,洗衣机才能继续工作。

因此洗衣机控制器有一个open_door输入信号,并根据此信号控制洗衣机的动作。

提示:这里有open_door信号,就一定有一个close_door信号。

当合上洗衣机盖时,则传感器产生close_door信号,并送给洗衣机控制器。

在本实验中,我们仅用一个按钮信号open_door来模拟打开洗衣机盖/盖上洗衣机盖,即第一次按是“开盖”,再按一次则是“合盖”。

②水位控制:有一个水位控制按钮,逐次按动它,水位可以在高、中、低、少这4档间切换,以控制上水时加水的多少。

③洗衣模式选择:有一个洗衣模式选择按钮,在洗衣机上电后开始启动之前,按动此按钮,可以选择洗衣机单独执行不同的洗衣程序:浸泡、洗涤、漂洗、脱水(甩干);若不按此按钮,则默认全程自动执行浸泡、洗涤、漂洗、甩干这4个程序。

提示:这里规定在选择各种单独的洗衣程序时,当按下启动/暂停按钮时,控制器从idle 态跳转到的下一状态:(1)若选择浸泡程序,则控制器从idle态跳转到water1状态,洗衣机完成加水(water1)后,将返回idle态;(2)若选择洗涤程序(假定洗衣机已执行了浸泡程序),则控制器从idle态跳转到wash状态,洗衣机完成wash、drain1这两个状态后,将返回idle态;(3)若选择漂洗程序(假定洗衣机已执行了洗涤程序),则控制器从idle态跳转到water2状态,洗衣机完成water2、rinse、drain2这三个状态后,将返回idle态;(4)若选择脱水程序(假定洗衣机已执行了漂洗程序),则洗衣机完成dry、beep后将返回idle态。

当然实际中的控制可能比这更复杂一些,还可以选择几个程序的组合(如洗涤、漂洗)作为一个新的洗衣模式。

试根据系统功能进行模块划分和设计,并对主要子模块进行仿真。

2.在GW48-SOPC+实验台上进行设计的下载和验证。

(1)设置实验箱工作在模式7;(2)已消抖按键1(高有效)作为rst信号控制键,已消抖按键4作为start_pause信号控制键,已消抖按键7(高有效)作为mode信号控制键,未消抖按键9、按键10(低有效),作为level_n与open_door_n信号的控制键;(3)用发光管D8、D7、D6分别显示进水阀门控制信号W、引擎工作信号M、排水阀门控制信号D;(4)用7段数码管1显示当前状态工作时间,数码管2显示当前工作状态,数码管7显示所选洗衣模式,数码管8显示当前水位档位;(5)用扬声器speaker发出提示用户洗衣结束的“嘀嘀”音。

四、实验原理1.基于状态机的控制电路设计有限状态机(FSM,Finite State Machine)是一种重要的时序逻辑电路单元,尤其适合于设计数字系统的控制模块。

状态机可以认为是组合逻辑和寄存器逻辑的特殊组合,它一般包括两个部分:组合逻辑部分和寄存器部分。

组合逻辑部分又包括次态逻辑和输出逻辑,分别用于状态译码和产生输出信号;寄存器部分用于存储状态。

状态机的次态是现态及输入信号的函数,输出信号根据状态机的现态或输入信号而定。

根据输出信号产生方法的不同,状态机可分为两类:摩尔(Moore)型状态机和米里(Mealy)型状态机。

对于Moore型状态机,其输出只为状态机当前状态的函数,而与输入无关。

而对于Mealy型状态机,其输出不仅与状态机当前状态有关,而且与输入有关。

实用的状态机一般都设计为同步时序电路,它在时钟信号的触发下,完成各状态之间的转移,并产生相应的输出。

采用Verilog HDL语言实现基于状态机的控制电路设计,就是在时钟信号的触发下,完成两项任务:(1)用case或if-else语句描述出状态的转移,(2)描述状态机的输出信号(通常是控制信号)。

2.洗衣机控制器的工作原理(1)洗衣机的工作状态(1)洗衣机的工作状态洗衣机有9个工作状态分别为:空闲(idle)、第一次加水(water1)、洗衣(wash)、第一次排水(drain1)、第二次加水(water2)、漂洗(rinse)、第二次排水(drain2)、甩干(dry)、蜂鸣(beep)。

(2)全自动洗衣过程最简单的操作是在洗衣机上电后(默认水位为“中”),通过水位控制按钮设置好合适的水位,然后按下start_pause启动/暂停按钮,使洗衣机全自动完成整个洗衣过程,此时洗衣机控制器状态转移图如图1. 2所示。

图1. 2 全自动完成洗衣时(默认水位为“中”)洗衣机控制器的状态转移图提示:① 图中每个方框内横线上方文字为状态机的状态,横线下方文字为状态机的输出。

② 图中标注“浸泡”、“洗涤”、“漂洗”、“甩干”为这4个单独执行的洗衣程序所经过的工作状态,完成程序后都返回idle态。

一旦按下rst按钮,则电路复位到初始状态,控制信号m=0,w=0,d=0。

当按下start_pause 启动/暂停按钮时,则进入water1状态,w = 1,使进水阀门打开,开始上水,并历时7s。

然后转移到下一状态——wash,w = 0,使进水阀门关闭;同时m = 1,使电机开始运转,开始洗衣过程,并历时9s。

再转移到下一状态——drain1,……直到当甩干结束后,整个洗衣过程完成,扬声器发出持续15秒的急促的“嘀嘀”音,提示用户洗衣结束,控制器又返回到初始状态。

(3)单独执行某个洗衣程序但有时候,人们可能需要单独执行某个洗衣程序,如洗涤或脱水,这时可以在洗衣前通过按动洗衣模式选择按钮来选择不同的洗衣程序。

在这种情况下,洗衣机控制器的状态转移图就会比图1. 2更复杂一些,下面加以详细说明。

首先在idle状态下,当按下启动/暂停按钮时,控制器要根据不同的洗衣模式跳转到不同的状态:若默认是全自动洗衣程序或选择浸泡程序,则跳转到water1;若选择洗涤程序,则跳转到wash;若选择漂洗程序,则跳转到water2;若选择甩干,则跳转到dry。

而当洗衣机执行完相应的洗衣程序后,则所有控制信号、计时器应清零,同时控制器应返回初始状态。

因此,在water1状态下,当加好水时控制器不是直接跳转到wash,而是要先判断洗衣模式是否为浸泡程序,若是,则跳转到idle;若不是,才直接跳转到wash。

同理,在drain1状态下,当排完水时控制器不是直接跳转到water2,而是要先判断洗衣模式是否为洗涤程序,若是,则跳转到idle;若不是,才直接跳转到water2。

在drain2状态下,当排完水时控制器不是直接跳转到dry,而是要先判断洗衣模式是否为漂洗程序,若是,则跳转到idle;若不是,才直接跳转到dry。

五、实验步骤/指导1.设计思路洗衣机控制器系统结构图如图1. 3所示,将整个设计划分为两个子模块:时钟分频子模块和洗衣机状态控制器子模块。

图1. 3 洗衣机控制器系统结构图(1)时钟分频子模块clkdiv.v将系统时钟50MHz分频为1KHz,再将1KHz分频为1Hz,以产生洗衣结束时的提示蜂鸣音speaker=clk_1Hz&clk_1KHz&alarm(每间隔1s产生一个音频为1KHz的提示音)。

1Hz的时钟信号还作为洗衣机状态控制器子模块的输入时钟信号,驱动洗衣定时器计数。

提示:在设计时,注意使输出时钟信号clk_1Hz为方波!这是因为clkdiv.v的输出时钟clk_1Hz,将送入洗衣机状态控制器子模块,作为提示蜂鸣音speaker信号,如果clk_1Hz不是对称方波,则产生的提示音就不会是均匀的嘀嘀声。

(2)洗衣机状态控制器子模块wash_ctrl.v设计时,首先应画出状态转移图并仔细分析,明确在每个状态下控制器要输出哪些控制信号,计数器该怎样计数;当希望洗衣机暂停时,所有控制信号应都变为0,计数器暂停计数。

当计数器正常计数到预定值时,应跳转到下一状态。

然后用case语句、if-else语句对状态转移和输出进行描述。

信号定义:input clk_1KHz, clk_1Hz, rst, start_pause, mode, level, open_door;/***********************************************start_pause:启动/暂停按钮信号,高有效;mode:洗衣模式选择信号,高有效。

不按时,默认全程执行浸泡、洗涤、漂洗、甩干这4个程序;每按一下,单独选择浸泡,或洗涤,或漂洗,或甩干程序。

相关主题