基于模糊控制的恒溫控制系統(tǒng)設(shè)計(jì)
1.3 溫度控制和超界報(bào)警模塊
系統(tǒng)利用單片機(jī)控制電熱絲在一個(gè)加熱周期內(nèi)的加熱時(shí)間來(lái)實(shí)現(xiàn)對(duì)水溫的控制。單片機(jī)端口信號(hào)經(jīng)過(guò)光耦隔離后,利用三級(jí)管驅(qū)動(dòng)電磁繼電器的閉合與斷開(kāi),從而控制加熱時(shí)間。當(dāng)溫度超過(guò)100℃或者實(shí)時(shí)溫度變化超過(guò)10℃時(shí),單片機(jī)將驅(qū)動(dòng)蜂鳴器進(jìn)行長(zhǎng)時(shí)間報(bào)警提示,當(dāng)設(shè)置溫度變化超過(guò)10℃時(shí),蜂鳴器進(jìn)行短時(shí)間報(bào)警提示。
2 軟件系統(tǒng)設(shè)計(jì)
系統(tǒng)的控制思路為:根據(jù)模糊控制模型和實(shí)際應(yīng)用情況推理出模糊查詢表,模糊查詢表表示對(duì)于不同狀態(tài)的加溫周期時(shí)間。單片機(jī)根據(jù)實(shí)時(shí)采樣溫度的變化查取模糊查詢表,對(duì)加溫周期做出調(diào)整,從而達(dá)到對(duì)溫度控制的目的。
2.1 主程序
主程序一直處于等待接收串口信號(hào)狀態(tài),同時(shí)判斷是否需要發(fā)送數(shù)據(jù)。定時(shí)中斷每秒對(duì)采樣溫度進(jìn)行平均值濾波后,置串口發(fā)送標(biāo)志,在主程序中發(fā)送。單片機(jī)接收到PC信號(hào)的第一個(gè)字節(jié)時(shí),調(diào)用接收數(shù)據(jù)子程序,將剩余數(shù)據(jù)接收到緩沖區(qū)內(nèi),并判斷接收數(shù)據(jù)的類型,執(zhí)行相應(yīng)操作。
為避免串口干擾信號(hào),系統(tǒng)采用應(yīng)答模式和單向傳輸混用的串口通信,以提高通信的穩(wěn)定性和系統(tǒng)的實(shí)時(shí)性。上位機(jī)下發(fā)命令采用應(yīng)答模式,單片機(jī)實(shí)時(shí)溫度信息上傳采用單向通信模式。通信協(xié)議由包頭、命令、數(shù)據(jù)長(zhǎng)度、數(shù)據(jù)包、校驗(yàn)位組成。
2.2 1ms定時(shí)中斷程序
1ms定時(shí)中斷作為系統(tǒng)的總時(shí)鐘。每1 ms刷新一位數(shù)碼管,每10 ms掃描一次按鍵,每1 s的最后100 ms中,每隔10 ms采樣一次溫度值,將10次采樣值冒泡排序,去掉最大值和最小值后的平均值,作為本次實(shí)時(shí)采樣的最終值送入顯示緩沖區(qū)。若恒溫控制開(kāi)關(guān)打開(kāi),則每1 s還要調(diào)用恒溫控制程序。若報(bào)警開(kāi)關(guān)打開(kāi),則每1 s取反一次揚(yáng)聲器輸出。定時(shí)中斷返回前將重置看門(mén)狗。
2.3 模糊控制模型建立
系統(tǒng)利用了雙輸入單輸出的模糊控制模式。2個(gè)輸入語(yǔ)言變量E,EC分別表示溫度誤差和溫度誤差的變化率,輸出語(yǔ)言變量U表示繼電器的閉合時(shí)間。語(yǔ)言變量E賦8個(gè)值,即正小(PS)、正零(PO)、負(fù)零(NO),負(fù)小(NS),負(fù)中(NM),負(fù)大(NL),負(fù)加大(NXL),負(fù)超大 (NXXL),考慮到系統(tǒng)中并未設(shè)置降溫措施,E的賦值并不對(duì)稱。EC賦7個(gè)值,即正大(PL)、正中(PM)、正小(PS)、零(PO)、負(fù)小 (NS)、負(fù)中(NM)、負(fù)大(N-L)。U賦4個(gè)值:零(O)、正小(PS)、正中(PM)、正大(PL)。為補(bǔ)償溫度控制無(wú)超調(diào)量,E的量化值為 -10~2,EC,U的量化值分別為-6~6,0~6。每個(gè)值采用三角形隸屬函數(shù)模型,如圖3~圖5所示。本文引用地址:http://2s4d.com/article/162581.htm
依靠經(jīng)驗(yàn)來(lái)建立控制規(guī)則,但是得到的控制量并是一個(gè)模糊量,不能直接用來(lái)作為控制輸出,采用C語(yǔ)言進(jìn)行解模糊處理,得到模糊查詢表,并在測(cè)試中反復(fù)調(diào)整,最終得到模糊查詢表如表1所示。
2.4 模糊控制程序
在單片機(jī)的程序中,設(shè)置了變量TOUT表示恒溫控制周期,TSET表示一個(gè)恒溫控制周期中韻加熱輸出時(shí)間,即表中的U。每隔TOUT的時(shí)間,將調(diào)用模糊推理程序,求出誤差E和誤差變化率EC。其中:
E=實(shí)時(shí)采樣溫度值-設(shè)定溫度值
EC=當(dāng)前誤差-上次誤差
當(dāng)誤差較大時(shí),不必進(jìn)行模糊控制,只需判斷是全速加熱或是停止加熱。當(dāng)誤差進(jìn)入預(yù)設(shè)的控制范圍時(shí),量化E,EC,并由量化值查詢模糊查詢表,得出該周期應(yīng)該輸出的加熱時(shí)間TSET。
在測(cè)試中發(fā)現(xiàn),采用單一的E,EC論域的效果并不讓人滿意,系統(tǒng)靈敏度較低??紤]加熱慣性和高溫散熱較快的影響,采用了兩級(jí)控制的方式。在第一級(jí)控制中,E和EC的論域范圍較大,可快速加熱到恒溫設(shè)定溫度附近;此后進(jìn)入第二級(jí)控制,縮小E和EC的論域范圍,提高控制的靈敏度。經(jīng)測(cè)試,采用此方式可在各溫度層次控制過(guò)程中將恒溫誤差穩(wěn)定在±0.3℃以內(nèi)。
評(píng)論