黄 河 ,刘福华 ,王 信
(1.宜宾职业技术学院 电子信息工程系,四川 宜宾644003;2.宜宾职业技术学院 现代制造工程系,四川 宜宾644003)
模糊控制洗衣机是一种智能型的、真正全自动的洗衣机。它能自动识别衣质、衣量及肮脏程度,自动决定水量,自动投入适量的洗涤剂,从而全部自动地完成整个洗涤过程。洗涤程序是通过模糊推理来决定的,因此有极高的洗涤效能,不仅提高了洗衣机的全自动化程度,而且大大提高了洗衣质量。
模糊洗衣机通过对衣质、衣量、衣物肮脏度及初始水位高低情况等输入量,来决定洗涤时间、水流强弱、洗涤剂用量以及脱水时间等。因此,系统的被控对象主要是洗涤时间、水流强弱、洗涤剂用量及脱水时间等[1],即输出量。洗衣机中被控对象的运动规律极其复杂,很难用数学语言的形式来表达。而模糊控制无需建立被控对象的数学模型,因此适用于洗衣机控制。模糊型洗衣机无需人为按键设置水位、水流方式、洗涤时间、清洗时间和脱水时间,用户只需放进待洗衣物,按下启动键,洗衣机便能自动完成洗涤过程,实现了真正的“全自动”。
模糊洗衣机要求控制系统能根据测得的衣质、衣量情况,确定适当水位、水流强度、洗涤时间、洗涤剂用量,并根据肮脏度的变化合理地修正洗涤时间,以达到节水和节能的目的。
图1 模糊洗衣机的电路构成Fig.1 Circuit diagram of fuzzy washing machine
图1 为模糊洗衣机的一般电路构成。模糊控制系统主要由电源电路、洗衣机状态控制电路、显示电路及输出控制电路等组成。由单片机组成的逻辑控制系统是模糊洗衣机硬件控制系统的核心,也是进行模糊推理的物理基础。单片机系统对洗衣机状态的检测,是为了提取模糊推理的一些前件状态,从而得到用于推断后件结果的先前条件。用于进行模糊推理的前件模糊量包括衣质、衣量、肮脏度及水温等的有关语言值。
图2模糊控制系统结构图。各传感器的输出端连接到单片机上,单片机根据各传感器检测到的负载、衣质、水位、水温以及洗涤剂类型等信息,进行分段评估计算,使其模糊化,再根据模糊规则进行推理,最后从规则库中查找对应规则进行模糊判决,从而确定最适当的水流、水位、洗涤时间、清洗方式及脱水时间。由此可见,模糊洗衣机的控制系统是一个多输入多输出的模糊控制系统[2]。
图2 模糊洗衣机控制系统结构框图Fig.2 Structure diagram of fuzzy washing machine control system
在模糊洗衣机中,肮脏度、衣质和衣量无法直接测量的。在实际中是通过有关电路以及有关洗衣机的动态过程,并从这个动态过程在电路中反映出来的有关电信号去进行分析,最终通过模糊化处理得出衣质和衣量的情况。根据经验,衣质分为棉织品、化纤织品以及二者的混织品,棉织品洗涤更困难,而化纤织品洗涤更容易;衣量多一些,则洗涤过程长一些,反之则短一些。由于肮脏度与洗涤水的污浊度有关,水的污浊度又与水的透光率有关,所以通过光电传感器来检测衣物的肮脏度。水位的检测是用专用的水位传感器来实现的。水温则通过热敏电阻来测量。各传感器的选择及测量电路在这里不再赘述。
仅就模糊控制原理部分而言,模糊型洗衣机的开发工作包括:3个输入变量(肮脏度、衣量、衣质)的语言变量值的隶属函数的定义,2个输出变量(洗涤时间、水流强度)的语言变量值的隶属函数的定义以及连接3个输入到两个输出的规则表的制定。
为简化推理及演算和缩小存储容量,隶属度函数采用最简单的三角隶属度函数[3]。在图3中,(a)表示负载的隶属度函数,负载大小由负载传感器检测到的脉冲数决定,负载越大,脉冲数越少;(b)表示水温的隶属度函数;(c)表示衣质的隶属度函数,由衣质传感器检测到的脉冲数增量来确定。在图4中,(a)和(b)分别表示输出量水流强度和洗涤时间的隶属度函数。
1)输入量(分三级)
图3 输入量的隶属度函数Fig.3 Degree membership function of the input value
图4 输出量的隶属度函数Fig.4 Degree membership function of the output value
负载:偏大、中等、偏小;
衣质:棉织品偏多、棉和化纤各半、化纤织品偏多;
水温:偏高、中等、偏低。
2)输出量(分五级)
水流强度:特强、强、中等、弱、特弱;
洗涤时间:特长、长、中等、短、特短。
洗衣机模糊控制系统的主要工作就是依据语言规则进行模糊推理决策。因此,在进行模糊规则推理之前,先要确定好语言控制规则(即知识库)。语言控制规则是根据经验知识来确定的,并在实验过程中不断加以修正和完善[1,4]。它相当于计算机程序设计语言的条件语句:“IF……THEN……”。
根据输入量与输出量的分级组合,对于水流强度和洗涤时间可以用以下 27(=3×3×3)条模糊规则来表示。
规则一:如果负载偏小,衣质化纤织品偏多,且水温偏高;那么将水流特弱,洗涤时间特短。
规则二:如果负载偏大,衣质化纤织品偏多,且水温偏高;那么将水流中等,洗涤时间中等。
……
依次类推,可以写出其他规则,如表1所示。
为了提高响应速度、缩小资源开销,规则表(即知识库)的获取采用离线计算的方式获取,将其固化到单片机的程序存储器中。洗衣机工作时,采用查表法,从规则表中找到对应规则,从而进行模糊判断和推理。推理时可采用最大最小推理法或者最大乘积推理法。两种方法的推理结果在面积形式上有所差别,但差别不大[5-6]。
表1 全自动洗衣机模糊控制规则表Tab.1 Fuzzy control rules table of full automatic washing machine
在模糊推理结束之后,我们得到的是以模糊子集表示的水流强度和洗涤时间的校正量,它不能直接调节水流和洗涤时间,还需要进行反模糊化。
输出反模糊化就是要将语言表达的模糊量恢复到精确的数值,即要根据输出模糊子集的隶属度计算出确定的值。反模糊化采用质心法。质心法对于输出变量模糊子集三角形定义,其汇编语言编程相当复杂。为简化编程,输出变量模糊子集采用单值定义。这样反模糊化过程编程就大为简化。
洗衣机模糊控制系统的软件主要包括以下6个功能模块:系统初始化功能模块、信号检测与处理模块、模糊推理模块、中断处理模块、显示输出模块、过载报警模块。所有模糊推理在洗涤之前都已执行完毕。所以在程序进行完功能设置之后就开始启动信号检测模块,开始一系列检测工作,以确定模糊推理的先件条件(输入变量值),然后进行模糊推理,确定洗涤时间及水流强度等输出量。在推理完成后就开始洗涤工作。在洗涤过程中,如果发生故障,则系统自动报警并进入相应的中断处理模块。主程序框图如图5所示。
图5 控制系统主程序框图Fig.5 Main program block diagram of control system
图6 查表过程示意图Fig.6 Sketch map of table look-up process
图6 表示三输入二输出模糊控制系统的查表法过程。离线设计得到一查询表用于在线运行,可以提高运算速度和精度[7]。查询表体现了模糊控制算法的最终运行结果。在每一采样时刻, 对采样值ei、ej、ek进行量程转换 (即乘以量化因子K1、K2和K3)然后进行量化(即将输入的物理信号值转换为输入论域上的点),再通过查询表查到输出的控制作用,它也是输出论域上的点,再分别乘以比例因子K4和K5进行量程转换,就得到了要求的物理量。
由于模糊规则表有3个输入量构成了一张三维数据表,假设规则表以三维数组a[i][j][k]和b[i][j][k]的形式存储,并且各维变量定义如下:
i=0,1,2分别代表负载偏小、中等、偏大;
j=0,1,2分别代表质料棉织品偏多、中等棉和化纤各半、化纤织品偏多;
k=0,1,2分别代表负载偏低、中等、偏高;
数组a中某元素的值表示水流的某个模糊值(特弱、弱、中等、强、特强分别用数值 0,1,2,3,4 来表示);数组 b 中某元素的值表示洗涤时间的某个模糊值(特短、短、中等、长、特长分别用数值 0,1,2,3,4 来表示)。 例如:a[0][2][2]=0 且 b[0][2][2]=0它代表规则一,即“如果负载偏小,衣质化纤织品偏多,且水温偏高时,那么将水流特弱,洗涤时间特短。”同理a[2][2][2]=2且b[0][2][2]=2代表规则二。依次类推可以得到如下查询表,如表2所示。
当模糊控制系统主程序调用查表子程序时,通过参数传递,将采集到的输入量ei、ej、ek经量化后得到的模糊量作为实参,分别传送给查表子程序的形参i、j、k,然后通过查找对应数组元素来确定它所符合的模糊规则,完成模糊推理。将对应数组元素的数值作为子程序的返回值。查表程序如下:
……
/*以数组形式存放的规则表*/
extern int a[3][3][3],b[3][3][3];
static a[3][3][3]={1,1,1,1,1,1,1,1,0,2,2,2,2,2,2,2,1,1,4,3,3,3,3,2,2,2,2};
static b [3][3][3]={2,2,1,2,1,1,2,1,0,3,2,1,3,2,2,2,2,1,4,3,3,3,3,2,3,2,2};
表2 查询表Tab.2 Query table
int Current(int i, int j, int k) /* 水流强度 */
{if(i<0||i>2||j<0||j>2||k<0||k>2)
{printf("Error! ");
return(-1); /*数组越界,故障*/
}
else return(a[i][j][k]);/*返回对应数组的的值 */
}
int Time(int i, int j, int k) /* 洗涤时间 */
{if(i<0||i>2||j<0||j>2||k<0||k>2)
{printf("Error! ");
return (-1);
}
else return(b[i][j][k]);
}
在调用以上查表子程序之后,得到的数值如果是-1则认为出现故障;正确数值数为整数0到4,必须将其转化为相应的模糊量,然后再进行乘以相应的比例因子进行量程转换,得到物理量,这样就是需要的水流强度和洗涤时间。
文中针对以单片机控制为核心的洗衣机控制系统,采用模糊控制技术进行优化改进,能自动识别衣料、衣量等,更好的模仿人工洗涤过程,实现了一键全自动洗衣,提高了洗衣机的智能化程度和洗涤效果。
[1]贾佩山.全自动模糊控制洗衣机的设计[J].工业控制计算机,1998(2):8-9.JIA Pei-shan.Design of automatic fuzzy controlled washing machine[J].Industrial Control Computer,1998(2):8-9.
[2]王力新.模糊系统与模糊控制教程[M].王迎军,译.北京:清华大学出版社,2003.
[3]席爱民.模糊控制技术[M].西安:西安电子科技大学出版社,2008.
[4]王万森.人工智能原理及其应用[M].北京:电子工业出版社,2007.
[5]刘金琨.先进PID控制及MATLAB仿真[M].北京:电子工业出版社,2004.
[6]郭代仪.模糊控制技术及其在冶金工业中的应用 [M].重庆:重庆大学出版社,1999.
[7]江和.单片机查表程序自动生成技术[J].单片机与嵌入式系统应用,2002(5):36-38.JIANG He.Automatic generation technique of table look-up program based on MCU[J].Microcontrollers&Embedded Systems,2002(5):36-38.