譚 藝,陳 歡
(1.上海建峰職業(yè)技術學院,上海201900;2,同濟大學,上海200092)
目前,家用洗衣機的洗滌粉的用量多少,仍依靠人工辦法進行控制,其結果很難使洗衣機的洗滌效果達到最佳狀態(tài)。如何設計一種能隨洗滌量、洗滌強度和水的硬度不同,而能自動調(diào)節(jié)洗滌粉用量的加料裝置,這對改善洗衣機的工作性能、提高洗滌效果具有非常重要的實際意義。
基于以上的目標,筆者提出了一種隨洗滌量、洗滌強度和水的硬度不同而能自動調(diào)節(jié)洗滌粉用量的加料機構。使用直流電動機驅(qū)動,并由光電傳感器反饋位置信號形成閉環(huán)位置伺服控制系統(tǒng)。采用8位微控制器,采用模糊控制策略。并將其用C語言實現(xiàn)。最后設計制作了一個位置控制系統(tǒng)的演示機構,以此調(diào)試控制算法。
控制系統(tǒng)可根據(jù)用戶在控制面板上設定的三個參數(shù):洗滌量、臟的程度和水的硬度,通過控制算法得出執(zhí)行機構的控制量,使執(zhí)行機構輸出滿足需要的洗滌粉量。
首先為實現(xiàn)洗滌粉的定量輸出,設計如圖1的機械機構。
圖1 出料機構剖面圖
此機構的軸在電機驅(qū)動下,旋轉(zhuǎn)一定的角度,軸旋轉(zhuǎn)一周輸出若干單元格的洗滌粉。每個單元格的體積(洗滌粉的體積)是由單元格的長度、半徑以及一周內(nèi)單元格的數(shù)量確定的。在確定了這3個尺寸參數(shù)后,每單元格輸出的洗滌粉量也就確定了。這樣輸出定量洗滌粉的任務,通過這個機械機構轉(zhuǎn)化為控制軸轉(zhuǎn)動一定的角度。為便于制作和控制,我們選擇了4個單元格形式。
驅(qū)動系統(tǒng)是這個控制系統(tǒng)的基本組成部分,也是關鍵的內(nèi)容,其為執(zhí)行機構實現(xiàn)控制策略提供動力。在現(xiàn)實中機械的驅(qū)動,主要有電氣、液壓和氣壓3種方式。由于我們的整個機構是個小型化的設備,所以直流電機的驅(qū)動方式更合適。步進電機也是一種選擇,但考慮到本機構是一個精度要求比較高的角位置控制系統(tǒng),所以需要采用反饋控制的方式。在這種狀況下,由于直流電機較步進電機更易控制,所以決定采用直流電機。通過對負載的估算、驅(qū)動對象運動規(guī)律的確定、傳動系統(tǒng)轉(zhuǎn)動慣量的折算等,確定直流電機的功率。最后選型電機采用KYSAN公司的ZGA20RS79i型直流減速電動機。其額定電壓為直流12V,輸出最高轉(zhuǎn)速為80 r/min,轉(zhuǎn)矩為12 N·m。
使用電機驅(qū)動芯片驅(qū)動電機。MPC17510是Freescale公司的一款集成H橋控制電路的芯片。
軸轉(zhuǎn)動的角位置信號,需要通過傳感器反饋,形成一個閉環(huán)控制系統(tǒng)。傳感器采用SUNX的光電傳感器。其實現(xiàn)結構如圖2所示。
圖2 反饋機構原理圖
為了更適宜整個方案的機械出料結構,我們自制一個面盤。其結構如圖2所示。其形狀為一圓盤,在相對的90°位置都有一通孔,用于透光。光電盤安裝在旋轉(zhuǎn)主軸上。這4個通孔的位置,也正對應了出料機構的每90°的一個出料位置。
在控制方面,只要用微控制器捕捉傳感器信號的上升沿或下降沿,并進行軟件計數(shù),就得到了主軸的轉(zhuǎn)角位置信號。
用戶在操作面板上輸入控制器用于控制量計算的3個參數(shù):洗滌量、臟的程度和水的硬度。
信號輸入使用通過電位器分壓得到的電壓信號,作為模擬量輸入。由于有3個參考參數(shù),所以有3路電壓信號,通過AD轉(zhuǎn)換模塊得到數(shù)字量,由主控制器根據(jù)控制算法得到控制電機的控制量。為便于說明操作面板的操作形式,用VB程序設計一個模擬界面如圖3所示。
圖3 操作界面
在圖3中的操作面板上,共有3個條形的電位器調(diào)節(jié)裝置(當然也可以是旋鈕狀的調(diào)節(jié)電位器),分別是選擇參數(shù)大小的3個電位器:
Wasserha咬rte——水硬度;
Waschenstrenge——臟的程度;
WaschenMenge——洗滌量,
以及執(zhí)行鍵starten和狀態(tài)顯示LED燈。
在此操作面板模式下,用戶的操作方法是:
(1)通過電位器“水硬度”設定水的硬度;
(2)通過電位器“洗滌強度”設定被洗物臟的程度;
(3)通過電位器“洗滌量”設定量的多少;
(4)設定完3個參數(shù)后按“執(zhí)行”鍵。
在這4步后,執(zhí)行指示燈亮,機構開始工作;工作完成后執(zhí)行指示燈暗,結束。
對于此反饋控制系統(tǒng)而言,需要有3路AD采樣通道、PWM輸出模塊和鍵盤中斷模塊。選用Freescale公司的08系列微控制器GZ16。其嵌入式軟件的開發(fā)基于Metrowerk公司的Codewarrior軟件。
此閉環(huán)位置控制系統(tǒng)的框圖如圖4所示。
圖4 控制系統(tǒng)框圖
模糊控制是近代控制理論中建立在模糊集合論基礎上的一種基于語言規(guī)則與模糊推理的控制理論,是智能控制的一個重要分支。其區(qū)別于常規(guī)控制策略的是,無需建立精確的數(shù)學模型。
機構采用模糊控制規(guī)則,并用C語言將其實現(xiàn),以使其能植入微控制器中。
模糊成員集為具有true/false值的變量。一個模糊成員的值域從絕對true(255)到絕對false(0)。 對于這個模糊控制器,定義以下精確輸入成員:
(1)水硬度。weich(軟);normal(正常);hart(硬)。
(2)臟的程度。ss(很臟);sc(臟);ws(不太臟)。
(3)洗滌量。sviel(很多);viel(多);wenig(少)。
由于在8位的單片機GZ16的AD轉(zhuǎn)換模塊中,可設置AD轉(zhuǎn)換的精度為8位或10位。取8位精度。也就是輸入模擬量值在AD轉(zhuǎn)換后得到數(shù)字量(0~255)。也就是說3參數(shù)輸入后的精確值是數(shù)字量0~255。
模糊成員集的圖形化定義如圖5~圖7。
圖5 水硬度的圖形化定義
圖6 臟程度的圖形化定義
圖7 量的多少的圖形化定義
在此定義了3個可調(diào)的閥值:WH、SS、ME。它們在軟件中為常量,用于對控制系統(tǒng)的微調(diào)。在C語言程序中,定義一個模糊函數(shù)以便接收精確輸入并計算各個模糊成員的值。3個可調(diào)閥值作為軟件中影響控制器誤差和響應時間的常量。
以下就是此功能函數(shù):
Die folgende Funktion;
#define WH 64
unsigned char weich,normal,hart;
#define SS 64
unsigned char ws,sc,ss;
#define ME 64
unsigned wenig,viel,sviel;
void InputMembership(void){
if(wasser_harte<=WH){ //wasser_harte ist AD daten
weich=255;normal=0;hart=0;
}else if(wasser_harte<=127){
weich=255*(wasser_harte-127)/(WH-127);
normal=255*(wasser_harte-WH)/(127-WH);
hart=0;
}else if(wasser_harte<=255-WH){
weich=0;
normal=255*(wasser-harte-255+WH)/(WH-128);
hart=255*(wasser-harte-127)/(128-WH);
}else{weich=0;normal=0;hart=255;}
if(waschen_strenge<=SS){ //waschen_strenge ist AD daten
ws=255;sc=0;ss=0;
}else if(waschen_strenge<=127){
ws=255*(waschen_strenge-127)/(SS-127);
sc=255*(waschen_strenge-SS)/(127-SS);
ss=0;
}else if(waschen_strenge<=255-SS){
ws=0;
sc=255*(waschen_strenge-255+SS)/(SS-128);
ss=255*(waschen_strenge-127)/(128-SS);
}else{ws=0;sc=0;ss=255;}
if(menge<=ME){ //menge ist AD daten
wenig=255;viel=0;sviel=0;
}else if(menge<=127){
wenig=255*(menge-127)/(ME-127);
viel=255*(menge-SS)/(127-ME);
sviel=0;
}else if(menge<=255-ME){
wenig=0;
viel=255*(menge-255+ME)/(ME-128);
sviel=255*(menge-127)/(128-ME);
}else(wenig=0;viel=0;sviel=255;}
}
模糊控制器中,輸出量為洗衣粉的總質(zhì)量。但實質(zhì)上該出料機構把洗衣粉凈質(zhì)量的輸出轉(zhuǎn)換為主軸旋轉(zhuǎn)角度的輸出,而且是90°的整數(shù)倍。
然而出于對模糊概念上的直觀考慮,定義以下精確輸出成員為洗衣粉的凈質(zhì)量,但其值為主軸轉(zhuǎn)角。
M1(Menge1)、M2、M3、M4、M5;
在此設置另一個軟件常量MG(#define MG XXX),其模糊含義為洗衣粉的凈質(zhì)量,實際值是主軸轉(zhuǎn)角(見表1)。
表1 各精確輸出成員的關系表
定義輸入模糊成員集和輸出模糊成員集的關系。這些規(guī)則得以直觀地建立控制器。
模糊邏輯規(guī)則包含27條,比如:
Ifweich and ws and wenig then M1;
如果水硬度為軟,洗滌物不很臟并且洗滌量為少,則需要洗衣粉量為M1(MG);
……
Ifhart and sc and viel then M4;
如果水硬度為硬,洗滌物很臟并且洗滌量為多,則需要洗衣粉量為M4(4MG);
……
此27條規(guī)則,可用三張二維表格清楚地表達如表2。
表2 27條規(guī)則的二維表
將規(guī)則綜合起來表示:
M1=(weich and ws and wenig)or(weich and sc and wenig)or(weich and ws and viel)
M2=(weich and ss and wenig)or(weich and sc and viel)or(weich and ws and sviel)or(normal and ws and wenig)or(normal and sc and wenig)or(normal and ws and viel)
M3=(weich and sc and sviel)or(weich and ss and viel)or(weich and ss and sviel)or(normal and ws and sviel)or(normal and sc and viel)or(normal and ss and wenig)or(hart and ws and wenig)or(hart and ws and viel)or(hart and sc and wenig)
M4=(normal and sc and sviel)or(normal and ss and viel)or(normal and ss and sviel)or(hart and ws and sviel)or(hart and sc and viel)or(hart and ss and wenig)
M5=(hart and sc and viel)or(hart and ss and viel)or(hart and ss and sviel)
對于以上模糊邏輯,and運算取最小值,or運算取最大值。由此,計算5個輸出模糊成員得C函數(shù)如下所示:void OutputMenbership(void){
unsigned char temp1,temp2,temp3,temp4,temp5,temp6;
unsigned char temp7,temp8,temp9;
temp1=min (weich,ws,wenig);temp2=min (weich,sc,wenig);temp3=min(weich,ws,viel);
M1=max(temp1,temp2,temp3);
temp1=min (weich,ss,wenig); temp2=min (weich,sc,viel);temp3=min(weich,ws,sviel);
temp4=min (normal,ws,wenig);temp5=min(normal,sc,wenig);temp6=min(normal,ws,sviel);
M2=max(max(temp1,temp2,temp3),max(temp4,temp5,temp6),0);
temp1=min(weich,sc,sviel);temp2=min(weich,ss,viel);temp3=min(weich,ss,sviel);temp4=min (normal,ws,sviel);temp5=min (normal,sc,wenig);temp6=min (normal,ss,wenig); temp7=min (hart,ws,wenig);temp8=min(hart,ws,viel);temp9=min(hart,sc,wenig);
M3=max(max(temp1,temp2,temp3),max(temp4,temp5,temp6),max(temp7,temp8,temp9));
temp1=min (normal,sc,sviel); temp2=min (normal,ss,viel);temp3=min(normal,ss,sviel);
temp4=min(hart,ws,sviel);temp5=min(hart,sc,viel);temp6=min(hart,ss,sviel);
M4=max(max(temp1,temp2,temp3),max(temp4,temp5,temp6),0);
temp1=min(hart,sc,sviel);temp2=min(hart,ss,viel);temp3=min(hart,ss,sviel);
M5=max(temp1,temp2,temp3);
}
其中,
min()是用于取最小值的子函數(shù);
max()是用于取最大值的子函數(shù)。
使用模糊成員集得加權平均值,計算精確輸出。
輸出量為
以上是該機構模糊控制算法的C語言描述。若需要植入微控制器中,還需添加主循環(huán)程序和三個參數(shù)的AD采樣程序。
以上給出了模糊控制的C語言描述,這里給出在Codewarrior平臺上實現(xiàn)整個控制的程序流程。
對于這個控制系統(tǒng),所需要的硬件層的控制有:電動機的PWM驅(qū)動設置,執(zhí)行鍵的鍵盤中斷驅(qū)動設置,3個通道的AD轉(zhuǎn)化的設置。這些內(nèi)容都在GZ16的初始化程序中完成。程序流程如圖8所示。
圖8 程序流程圖
控制器在上電之后,首先進行初始化,其內(nèi)容前面已介紹過。初始化完成后,進入for(;;)循環(huán)。在沒有執(zhí)行指令按鍵輸入的情況下,控制器進入省電STOP模式。當有按鍵輸入操作時,鍵盤中斷使控制器出STOP模式進入正常模式??刂破鞯哪J綘顟B(tài)由變量work_flag標識。
在用戶選擇完3個參數(shù)的值后,便按下執(zhí)行鍵。控制器就根據(jù)設計的控制算法和用戶輸入的參數(shù)值,計算出一個控制量。在此,控制量為電動機轉(zhuǎn)動的角度,其值是90°的倍數(shù)。
控制器啟動電動機,電動機驅(qū)動機構主軸作旋轉(zhuǎn)運動的同時,光電傳感器在以計數(shù)的方式記錄主軸轉(zhuǎn)過的角度。當主軸轉(zhuǎn)動角度達到控制量時,控制器關閉電動機。
一個工作周期之后,控制器再次進入STOP模式。等待下一次操作的執(zhí)行按鍵輸入。
設計并制作一個位置控制系統(tǒng)的演示機構(如圖9),不是為了完全實現(xiàn)設計方案,而是通過這個演示機構,不僅能證明方案的可行性,更重要的是可以在此機構上嘗試調(diào)試控制算法。并能進行分析,找出不足加以改進。
圖9 演示機構
實際情況證明,控制算法是符合邏輯要求的,但控制效果無法在此機構上得到說明。
[1]Jonathan W.Valvano.嵌入式微計算機系統(tǒng)實時接口技術[M].北京:機械工業(yè)出版社,2003.
[2]韓峻峰,李玉惠,等.模糊控制技術[M].上海:同濟大學出版社,2000.
[3]謝宋和,甘 勇,等.單片機模糊控制系統(tǒng)設計與應用實例[M].北京:電子工業(yè)出版社,1999.