超聲波液位可控恒溫水浴系統(tǒng)
超聲波液位可控恒溫水浴系統(tǒng),超聲波,可控,恒溫,水浴,系統(tǒng)
超聲波液位可控恒溫水浴系統(tǒng)733和諧宿舍隊隊長:黃 姸隊員:譚映彤隊員:李美玲 二一四年五月0目錄一、設(shè)計要求21.1 基本要求21.2 擴(kuò)展要求21.3 說明2二、整體設(shè)計與創(chuàng)新32.1 整體設(shè)計32.2 創(chuàng)新功能43、 方案比較53.1 硬件方案53.2 軟件方案74、 設(shè)計與論證10 電路圖及有關(guān)設(shè)計文件105、 測試數(shù)據(jù)及測試結(jié)果分析145.1 測試方法與儀器145.2 測試數(shù)據(jù)及測試結(jié)果分析14七、附錄15一、設(shè)計要求設(shè)計并制作出一個液位可調(diào),溫度可調(diào)的水浴系統(tǒng)。容器形狀、材質(zhì)不限,高度不高于35cm,長寬不長于10cm,容積大于等于500ml。在容器除頂面外的任意位置安裝半導(dǎo)體制冷器件(制冷片冷熱兩用),制冷片的外側(cè)面可加散熱片、小風(fēng)扇等加快熱交換的裝置。超聲波探頭安裝于容器底部,進(jìn)水口、出水口安裝位置不做要求。1.1基本要求1) 系統(tǒng)穩(wěn)定,有明顯溫控表現(xiàn),溫度可調(diào)節(jié)范圍為1550(可寬于此范圍),最小設(shè)定分度為1。2) 有明顯液位調(diào)控現(xiàn)象,液位可調(diào)范圍為15cm30cm,最小設(shè)定分度為1cm。3) 當(dāng)溫度或液位達(dá)到某一設(shè)定值并穩(wěn)定后,水溫的波動控制在2以內(nèi),液位的波動控制在1cm以內(nèi)。要求溫度或液位調(diào)控達(dá)到穩(wěn)定狀態(tài)時,必須分別給出聲或光提示信號。4) 在超調(diào)量=10%的情況下,調(diào)節(jié)時間盡量短。1.2擴(kuò)展要求1) 溫度可調(diào)節(jié)范圍盡量寬;當(dāng)水溫達(dá)到某一設(shè)定值并穩(wěn)定后,其波動控制在1內(nèi)2) 能記錄并實時顯示溫度和液位調(diào)節(jié)過程的曲線, 溫度顯示的誤差絕對值小于2,液位顯示的誤差絕對值小于1cm。3) 在不影響以上水浴功能的情況下,增加必要器件(如小水泵等),改裝成水冷循環(huán)系統(tǒng),給外部發(fā)熱器件散熱。1.3說明1)系統(tǒng)電源可使用市售開關(guān)電源或者主辦方提供的學(xué)生電源。參賽隊亦可使用自制電源。2)采用半導(dǎo)體致冷器件實現(xiàn)制冷或加熱(亦可通過向容器內(nèi)抽進(jìn)冷水降溫),如果單片功率不夠允許多片串聯(lián),最多不能超過3片。3)測評時,此題參賽者以5隊為一小組同時測評,可自帶檢測工具。測評時,每隊注入相同體積熱水,測報當(dāng)前溫度后,先統(tǒng)一設(shè)定某一和較低溫度值制冷,同時向設(shè)定的某一較低液位調(diào)節(jié),再設(shè)定某一較高溫度值加熱,同時向設(shè)定的某一較高液位調(diào)節(jié)。4)當(dāng)溫度或液位達(dá)到穩(wěn)定狀態(tài)的提示信號出現(xiàn)后立即檢測并記錄調(diào)控的溫度值和液位值,檢測時間延續(xù)120s,以記錄溫度波動和液位波動的最大值;能實時顯示溫度曲線或液位曲線的可直接記錄曲線。5)超調(diào)量:輸出量的最大值減去穩(wěn)態(tài)值,所得之差與穩(wěn)態(tài)值之比的百分?jǐn)?shù)。6)調(diào)節(jié)時間:響應(yīng)曲線達(dá)到并保持在偏離穩(wěn)態(tài)值5%(或2%)之內(nèi)所需要的最短時間。7)以上液位值為超聲波探頭傳感器位置到液面位置的距離。二、整體設(shè)計與創(chuàng)新2.1整體設(shè)計2.1.1超聲波液位可控恒溫水浴系統(tǒng)設(shè)計超聲波液位可控恒溫水浴系統(tǒng)結(jié)構(gòu)圖如下:提示部分:1602液晶顯示LED提示蜂鳴器提示Labview上位機(jī)監(jiān)控開關(guān)電源水冷循環(huán)系統(tǒng)后臺處理:DS18B20溫度傳感器超聲波模塊AT24C02掉電保護(hù)MAX232串口通信AT89C52最小系統(tǒng)繼電器控制:進(jìn)水泵出水泵加熱片制冷片水箱:(長*寬*高)6cm*7cm*35cm控制部分:1*3鍵盤根據(jù)題目要求,1)水箱外形設(shè)計。水箱設(shè)計為長6cm,寬7cm,高35cm。2)溫度控制。使用冷熱兩用的制冷片,一塊用來加熱,一塊用來制冷。制冷片外側(cè)加水冷循環(huán)系統(tǒng),用以散熱。利用繼電器控制加熱片,制冷片的啟動與停止。使用DS18B20溫度傳感器測量當(dāng)前溫度。3)液位控制。在水箱靠上方安裝進(jìn)水泵,靠下方安裝出水泵。利用繼電器控制進(jìn)水泵,出水泵的啟動與停止。使用超聲波模塊測量液位高度。4)Labview上位機(jī)監(jiān)控。為了能記錄并實時顯示溫度和液位調(diào)節(jié)過程的曲線,采用Lab view上位機(jī)監(jiān)控。用芯片MAX232實現(xiàn)串口通信,使下位機(jī)單片機(jī)傳送數(shù)據(jù)給上位機(jī)Labview。5)1*3按鍵控制。按鍵1表示“確定”,按鍵2表示 “設(shè)定值加一”,按鍵3表示“設(shè)定值減一”。6)提示部分。1602液晶顯示當(dāng)前溫度temp,當(dāng)前液位S,期望溫度set_temp,期望液位set_S。提示當(dāng)前狀態(tài)HOT(加熱),COLD(降溫),ADD(加水),DRAW(出水),ON(確定),OFF(停止),OK(任務(wù)完成)。LED有四個,D2亮表示正在加熱,D3亮表示正在降溫,D4亮表示正在加水,D5亮表示正在出水。當(dāng)?shù)竭_(dá)溫度或者液位的期望值時,蜂鳴器會提示。7)AT24C02掉電保護(hù)。AT24C02實現(xiàn)掉電保護(hù)功能,當(dāng)溫度或液位調(diào)節(jié)過程中途停電,AT24C02會記錄掉電前所設(shè)定的期望值。待再次上電時,程序會接著掉電前的狀態(tài)繼續(xù)進(jìn)行下去。2.1.2超聲波液位可控恒溫水浴系統(tǒng)程序設(shè)計程序設(shè)計結(jié)構(gòu)圖如下:開始測量當(dāng)前溫度temp測量當(dāng)前液位S設(shè)定期望溫度set_temp設(shè)定期望液位set_S NOset_S-0.5S set_S+0.5 液位控制YESNO恒溫控制set_temp-1temp0x19) /若到達(dá)字串尾則退出if (X 0) i-; ds = 1; i = 4; while(i0) i-;void dsWait() uint i; while(ds); while(ds); i = 4; while(i 0) i-;bit readBit()/讀一位數(shù)據(jù) uint i; bit b; ds = 0;i+; ds = 1; i+; i+; b = ds; i = 8; while(i0) i-; return b;uchar readByte() uint i; uchar j, dat; dat = 0; for(i=0; i8; i+) j = readBit(); dat = (j 1); return dat;void writeByte(uchar dat) uint i; uchar j; bit b; for(j = 0; j = 1; if(b) /寫1 ds = 0;i+; i+; ds = 1; i = 8; while(i0) i-; else /寫0 ds = 0; i = 8; while(i0) i-; ds = 1; i+; i+; void sendChangeCmd() dsInit(); dsWait(); delayMs(1); writeByte(0xcc); writeByte(0x44);void sendReadCmd() dsInit(); dsWait(); delayMs(1); writeByte(0xcc); writeByte(0xbe); void getTmpValue() uint tmpvalue; /int value; float t; uchar low, high; sendReadCmd(); low = readByte(); /讀低八位 high = readByte();/讀高八位 tmpvalue = high; tmpvalue = 8; tmpvalue |= low; t = tmpvalue * 0.0625; tmpvalue = t*10+ 0.5; /大于0加0.5, 小于0減0.5 ES=0;TI=1; printf(%fn,t); while(!TI); TI=0;ES=1; temp=tmpvalue*0.1; DisplayListChar(0, 0, T:); DisplayListChar(6, 0, C); /if(jdq_hot=1&jdq_cold=1) disbuff3 = tmpvalue / 100; disbuff4 = tmpvalue %100/10; disbuff5 = tmpvalue%10; DisplayOneChar(2, 0, ASCIIdisbuff3); DisplayOneChar(3, 0, ASCIIdisbuff4); DisplayOneChar(4, 0, ASCII10); DisplayOneChar(5, 0, ASCIIdisbuff5); /* if(tmpvalue14)beep=1; else beep=0; /DisplayListChar(5, 0, -); */ void changeT(int p)if(p14)/調(diào)節(jié)范圍:15-50 setT2=p/10; setT3=p%10; /DisplayListChar(8, 0, +); DisplayOneChar(9, 0, ASCIIsetT2); DisplayOneChar(10, 0, ASCIIsetT3); else if(p50)set_temp=50;DisplayListChar(9, 0, 50);/*超聲波*/void Conut()int SS; time=TH0*256+TL0; TH0=0; TL0=0; ES=0;TI=1; /SS=(time*1.7)/10; /SS=325-SS; /1.7 ,算出來是CM S=33.0- (time*1.78)/100; SS=(int)(S*10.0); printf(%fn,S); while(!TI); TI=0;ES=1; /if(S30)beep=0; /elsebeep=1; /set_S=S; DisplayListChar(0, 1, H:); DisplayListChar(6, 1, CM); if(flag=1) /超出測量范圍顯示 flag=0; /printf(-n); /beep=0; else if(jdq_add=1&jdq_draw=1) disbuff0=SS/100; disbuff1=SS%100/10;/0/10; disbuff2=SS%10; DisplayOneChar(2, 1, ASCIIdisbuff0); DisplayOneChar(3, 1, ASCIIdisbuff1); DisplayOneChar(4, 1, ASCII10); DisplayOneChar(5, 1, ASCIIdisbuff2); void changeS(int p)if(p13)/調(diào)節(jié)范圍:14-30 setT0=p/10; setT1=p%10; DisplayOneChar(9, 1, ASCIIsetT0); DisplayOneChar(10, 1, ASCIIsetT1); else if(p30)set_S=30;DisplayListChar(9, 1, 30); void StartModule() /啟動模塊 TX=1; /啟動一次模塊 _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); TX=0; /*鍵盤control*/int keyscan(int goal)/鍵盤掃描 if(up=0) delayMs(10); if(up=0) goal+; while(!up); if(down=0) delayMs(10); if(down=0) goal-; while(!down); return goal;int stateT()/按鍵確定命令 int com=1; if(on=0) delayMs(10); if(on=0) com=0; while(!on); return com;/*check*/void checkT()sendChangeCmd(); delayMs(1000); /溫度轉(zhuǎn)換時間需要750ms以上 getTmpValue();void checkS()uint i; /ET0=1; /TR0=0; for(i=5;i0;i-) StartModule();/啟動模塊 while(!RX);/當(dāng)RX為零時等待 TR0=1; /開啟計數(shù) while(RX);/當(dāng)RX為1計數(shù)并等待 TR0=0;/關(guān)閉計數(shù) Conut();/計算 delayMs(80);/80MS/ET0=0; /TR0=0; void main() sendChangeCmd(); init(); /LCM初始化 TMOD=0x21; /設(shè)T0為方式1T1為方式2,GATE=1; / SCON=0x50;TH1=0xFD;/串口波特率9600TL1=0xFD;TH0=0;TL0=0; TR0=1; ET0=1; /允許T0中斷TR1=1; /開啟定時器SM0=0;SM1=1;REN=1;EA=1; /開啟總中斷 ES=1;while(1) /S=0; checkT(); set_temp=(int)(temp+0.5); checkS(); changeT(set_temp); /set_S=20; set_S=(int)(S+0.5); changeS(set_S); DisplayListChar(12, 0, OFF&); DisplayListChar(12, 1, OFF); do changeT(set_temp); set_temp=keyscan(set_temp); while(stateT(); DisplayListChar(12, 0, ON ); DisplayListChar(12, 1, OFF&); do changeS(set_S); set_S=keyscan(set_S); while(stateT(); DisplayListChar(12, 1, ON ); /checkS(); if(set_S-S1.0)|(S-set_S1.0) compareS(); checkS(); delayMs(1000); checkT(); while(1) float tmp = fabs(set_temp+0.0-temp); if(tmp0.7) compareT(); checkT(); 26華南理工大學(xué)智能控制大賽之初級組第四題超聲波液位可控恒溫水浴系統(tǒng)隊名: 熱刃 作品: 熱刃牌恒溫水浴箱 專業(yè): 自動化 隊長: 鄭陸楠(2013級創(chuàng)新班)隊員: 陳思遠(yuǎn)(2013級創(chuàng)新班)隊員: 許耀釗(2013級1班) 日期: 2014,5,21 【摘要】恒溫水浴系統(tǒng)是當(dāng)今社會的一個主流研究,對于溫度的系統(tǒng)控制操作需要精密穩(wěn)定的感應(yīng)模塊與精細(xì)適當(dāng)?shù)恼{(diào)整控制,同時恒溫水浴亦被許多的科研項目所需求。本次大賽選擇了以恒溫水浴作為參賽作品,結(jié)合水位控制,準(zhǔn)確的聲光報警系統(tǒng)以及提示系統(tǒng),組裝成為一個較為完善的可控液位恒溫水浴裝置。同時,本次系統(tǒng)裝置的設(shè)計使得我們對于控制系統(tǒng)的認(rèn)識進(jìn)一步加深,對于算法以及硬件的設(shè)計運用進(jìn)一步得到鍛煉?!灸夸洝空?2參賽要求及作品功能展示 41. 方案分析及比較 71.1系統(tǒng)總體設(shè)計及分析 71.1.1硬件電路部分 71.1.2軟件程序部分 81.2各模塊方案比較 91.2.1外部模型部分 91.2.2最小系統(tǒng)板模塊 91.2.3加熱器、節(jié)流裝置 101.2.4 LCD顯示模塊 101.2.5 超聲波模塊 101.2.6紅外線模塊 111.2.7電源穩(wěn)壓模塊 111.2.8上位機(jī)模塊 111.2.9水冷模塊111.2.10語音模塊 111.2.11程序設(shè)計 122. 設(shè)計與論證122.1外部結(jié)構(gòu)122.1.1鐵盒平臺(水泵)122.1.2鐵盒平臺(水箱)122.1.3 冷水系統(tǒng)(環(huán))122.1.4 水箱132.2硬件部分132.2.1單片機(jī)模塊(3機(jī)通信)132.2.2開關(guān)電源繼電器模塊142.2.3LCD12864顯示模塊152.2.4語音模塊172.2.5紅外接收模塊182.2.6電源穩(wěn)壓模塊182.2.7超聲波模塊182.2.8LED及溫度表盤顯示模塊 182.2.9水冷模塊 182.3軟件部分192.3.1程序設(shè)計193. 電路圖及相關(guān)設(shè)計資料193.1最小系統(tǒng)板模塊 193.2水冷模塊243.3LCD12864顯示模塊293.4超聲波模塊293.5溫度感應(yīng)模塊303.6紅外接收模塊323.7電源及穩(wěn)壓模塊333.8制冷片模塊333.9語音模塊344. 調(diào)試及結(jié)果分析354.1上位機(jī)354.2溫度表盤374.3溫度、液位曲線375. 總結(jié)39附錄41初級組題目四:超聲波液位可控恒溫水浴系統(tǒng)一 、設(shè)計任務(wù):計并制作出一個液位可調(diào),溫度可調(diào)的水浴系統(tǒng)。容器形狀、材質(zhì)不限,高度不高于35cm,長寬不長于10cm,容積大于等于500ml。在容器除頂面外的任意位置安裝半導(dǎo)體制冷器件(制冷片冷熱兩用),制冷片的外側(cè)面可加散熱片、小風(fēng)扇等加快熱交換的裝置。超聲波探頭安裝于容器底部,進(jìn)水口、出水口安裝位置不做要求。二、設(shè)計要求:1) 系統(tǒng)穩(wěn)定,有明顯溫控表現(xiàn),溫度可調(diào)節(jié)范圍為1550(可寬于此范圍),最小設(shè)定分度為1。2) 有明顯液位調(diào)控現(xiàn)象,液位可調(diào)范圍為15cm30cm,最小設(shè)定分度為1cm。3) 當(dāng)溫度或液位達(dá)到某一設(shè)定值并穩(wěn)定后,水溫的波動控制在2以內(nèi),液位的波動控制在1cm以內(nèi)。要求溫度或液位調(diào)控達(dá)到穩(wěn)定狀態(tài)時,必須分別給出聲或光提示信號。4) 在超調(diào)量=10%的情況下,調(diào)節(jié)時間盡量短3、 發(fā)揮部分:1) 溫度可調(diào)節(jié)范圍盡量寬;當(dāng)水溫達(dá)到某一設(shè)定值并穩(wěn)定后,其波動控制在1內(nèi)2) 能記錄并實時顯示溫度和液位調(diào)節(jié)過程的曲線, 溫度顯示的誤差絕對值小于2,液位顯示的誤差絕對值小于1cm。3) 在不影響以上水浴功能的情況下,增加必要器件(如小水泵等),改裝成水冷循環(huán)系統(tǒng),給外部發(fā)熱器件散熱。4) 其他。4、 說明:1. 系統(tǒng)電源可使用市售開關(guān)電源或者主辦方提供的學(xué)生電源。參賽隊亦可使用自制電源。2. 采用半導(dǎo)體致冷器件實現(xiàn)制冷或加熱(亦可通過向容器內(nèi)抽進(jìn)冷水降溫),如果單片功率不夠允許多片串聯(lián),最多不能超過3片。3. 測評時,此題參賽者以5隊為一小組同時測評,可自帶檢測工具。測評時,每隊注入相同體積熱水,測報當(dāng)前溫度后,先統(tǒng)一設(shè)定某一和較低溫度值制冷,同時向設(shè)定的某一較低液位調(diào)節(jié),再設(shè)定某一較高溫度值加熱,同時向設(shè)定的某一較高液位調(diào)節(jié)。4. 當(dāng)溫度或液位達(dá)到穩(wěn)定狀態(tài)的提示信號出現(xiàn)后立即檢測并記錄調(diào)控的溫度值和液位值,檢測時間延續(xù)120s,以記錄溫度波動和液位波動的最大值;能實時顯示溫度曲線或液位曲線的可直接記錄曲線。5. 超調(diào)量:輸出量的最大值減去穩(wěn)態(tài)值,所得之差與穩(wěn)態(tài)值之比的百分?jǐn)?shù)。6. 調(diào)節(jié)時間:響應(yīng)曲線達(dá)到并保持在偏離穩(wěn)態(tài)值5%(或2%)之內(nèi)所需要的最短時間。7. 以上液位值為超聲波探頭傳感器位置到液面位置的距離。5、 評分標(biāo)準(zhǔn) 項目中良優(yōu)基本要求設(shè)計與總結(jié)報告:方案比較、設(shè)計與論證,理論分析與計算,電路圖及有關(guān)設(shè)計文件,測試方法與儀器,測試數(shù)據(jù)及測試結(jié)果分析。18-2223-2627-30第(1)項18-2223-2627-30第(2)項6-78-910第(3)項12-1415-1718-20第(4)項, 6-78-910發(fā)揮部分第(1)項10-1112-1314-15第(2)項12-1415-1718-20第(3)項10-1112-1314-15所做作品: (作品名字:熱刃牌恒溫水浴箱)本次作品應(yīng)要求利用超聲波檢測液面高度,利用溫度傳感器感應(yīng)水流溫度,利用繼電器控制制冷片完成冷卻與加熱對水箱的水,其中水的環(huán)流也將被用于輔助該功能,減少消耗時長。同時,LCD12864屏幕、語音模塊與指示燈等聲光提示模塊會及時提醒使用者相關(guān)狀態(tài)與操作。另外,紅外遙控的操作使得該“熱刃牌恒溫水浴箱”的使用更加方便,液位、溫度的更是可以在遠(yuǎn)處控制。完成要求:1.系統(tǒng)穩(wěn)定,溫度可調(diào)節(jié)范圍為1060,最小設(shè)定分度為0.1。2.液位可調(diào)范圍為15cm30cm,最小設(shè)定分度為0.1cm3.溫度、液位達(dá)到設(shè)定值并穩(wěn)定,水溫波動在1以內(nèi),液位波動在0.5cm以內(nèi)。達(dá)到穩(wěn)定狀態(tài)時,分別給出聲或光提示。4.能記錄并實時顯示溫度和液位調(diào)節(jié)過程的曲線, 溫度顯示的誤差絕對值小于2,液位顯示的誤差絕對值小于1cm。5.利用小水泵水制成冷循環(huán)系統(tǒng),給外部發(fā)熱器件散熱。創(chuàng)新點:1. 內(nèi)、外水箱一體式:解決水冷系統(tǒng)的水回收問題。2. 塑料板內(nèi)放置超聲波探頭:解決進(jìn)出水時液面的震動帶來讀書誤差。3. 噴水式水冷系統(tǒng):改變傳統(tǒng)的接觸式冷水系統(tǒng),冷卻效率大大提高。4. 利用塑料板將液體隔開,給超聲波提供一個穩(wěn)定的檢測空間。5. 大粗調(diào)系統(tǒng):設(shè)定溫度與當(dāng)前溫度相差較大時,利用換水快速改變溫度,高效利用熱能,節(jié)省電能。存在問題:1. 缺攪拌系統(tǒng):改變溫度后,上下水層存在較大溫差。2. 水冷系統(tǒng)缺少冷卻裝置:水泵不間斷工作,容易發(fā)熱。3. 導(dǎo)線多是分節(jié)連接:工程量增加,焊點出容易出現(xiàn)斷開、放電問題。1 方案分析及比較1.1.系統(tǒng)總體設(shè)計及分析1.1.1硬件電路部分STC15F2K60S2 主機(jī)(處理數(shù)據(jù))紅外遙控模塊語音模塊制冷片、水泵LCD顯示模塊直接直接控制直接控制超聲波模塊溫度感應(yīng)模塊影響STC15F2K60S2 副機(jī)1(顯示數(shù)據(jù),接受設(shè)定直接處理結(jié)果設(shè)定值傳回檢查結(jié)果上位機(jī)收集數(shù)據(jù)并處理數(shù)據(jù)樣本間接STC15F2K60S2 副機(jī)2(顯示數(shù)據(jù),接受設(shè)定處 理結(jié) 果LED顯示模塊溫表顯示模塊溫液設(shè)定數(shù)值傳輸硬件電路的設(shè)計如下圖所示:各個主模塊主要實現(xiàn)功能:51單片機(jī)系統(tǒng)板(主機(jī)):作為處理中心,接受來自超聲波模塊、溫度感應(yīng)模塊的數(shù)據(jù),簡單處理后判斷是否達(dá)到設(shè)定的要求,并憑借處理結(jié)果通過PID控制繼電器模塊,進(jìn)而控制制冷片、水泵的工作,另外,主機(jī)還把接收到的數(shù)據(jù)分別通過串口跟藍(lán)牙傳給副機(jī)和上位機(jī)。51單片機(jī)系統(tǒng)板(副機(jī)1):作為與用戶交流的界面。接收來自主機(jī)的數(shù)據(jù),并把數(shù)據(jù)分別顯示在LCD12865上,供用戶了解。另外接收來自紅外遙控器的信號,根據(jù)用戶的操作,設(shè)定溫度和液位并將結(jié)果反饋給主機(jī)及副機(jī)2。51單片機(jī)系統(tǒng)板(副機(jī)2):作為輔助系統(tǒng)。接收來自主機(jī)的數(shù)據(jù),并根據(jù)數(shù)據(jù)控制工作指示燈、溫度和液位表、語音提示。電源穩(wěn)壓模塊:作為51單片機(jī)系統(tǒng)板的電源供給模塊,使電壓穩(wěn)定在5v。主要由L7805CV組成。溫度感應(yīng)模塊:用于感應(yīng)水溫,將溫度信號傳給單片機(jī)。單片機(jī)根據(jù)傳回溫度數(shù)據(jù)與設(shè)定溫度作比較后通過繼電器控制制冷片的工作狀態(tài)。超聲波模塊:用于測出水箱液位的高度,將液位信號傳給單片機(jī)。單片機(jī)根據(jù)傳回液位數(shù)據(jù)與設(shè)定的液位數(shù)據(jù)作比較后通過繼電器控制水泵的工作狀態(tài)。語音模塊:主要由單片機(jī)控制,在需要時發(fā)出語音提醒,告知當(dāng)前狀態(tài),提醒動作完成。使設(shè)計人性化程度加強(qiáng)。LCD12864模塊:用于顯示操作界面,方便使用者設(shè)置各種參數(shù),同時,該模塊能夠顯示出溫度、液位關(guān)于時間的變化曲線(粗略),有利于對數(shù)據(jù)的分析和系統(tǒng)的改進(jìn)。紅外感應(yīng)模塊:用于對水箱進(jìn)行遠(yuǎn)程控制,可以設(shè)定目標(biāo)溫度和目標(biāo)水位,查看溫液的變化曲線。上位機(jī)模塊:用于對溫、液數(shù)據(jù)進(jìn)行處理,分別畫溫度和液位關(guān)于時間的變化曲線圖(精確)。水冷模塊:用于對工作中的制冷片回溫(制冷時降溫,制熱時升溫),提高溫度控制的效率。LED燈顯示模塊:用于顯示當(dāng)前的工作狀態(tài)。開關(guān)電源繼電器模塊:通過開關(guān)電源把220V轉(zhuǎn)化為12V。以繼電器當(dāng)媒介,實現(xiàn)弱電控強(qiáng)電。1.1.2軟件程序部分各種初始化主機(jī)程序初始化紅外輸入判斷執(zhí)行繼電器輸出PWM輸出傳感器工作,讀取數(shù)據(jù)執(zhí)行器工作,數(shù)據(jù)反饋副機(jī)1程序初始化12864液晶屏幕顯示,紅外工作濾波算法,PID算法執(zhí)行溫液設(shè)定參數(shù)改變串口數(shù)據(jù)傳輸啟動 上位機(jī)圖像顯示副機(jī)2程序初始化步進(jìn)電機(jī)表盤角度調(diào)整語音芯片放音執(zhí)行 指示燈閃爍執(zhí)行濾波算法:采用一階互補濾波,平均濾波及限幅濾波的手法對溫度液位數(shù)據(jù)進(jìn)行處理。使得圖線盡可能的光滑,除去噪聲。PID算法:采用PID算法對溫度進(jìn)行控制,PID算法可以使得控制量準(zhǔn)確,快速,超調(diào)量小的情況下對繼電器及溫度進(jìn)行調(diào)節(jié),使得測量曲線穩(wěn)定快速得達(dá)到設(shè)定值。串口數(shù)據(jù)協(xié)議:僅使用了傳輸標(biāo)記命令的簡單的協(xié)議對串口數(shù)據(jù)進(jìn)行傳輸處理。1.2各模塊方案比較1.2.1外部模型部分水浴箱:方案1:用盒飯盒。獲取方便,大部分飯盒底比較大,不符合規(guī)格。方案2:用保溫杯。保溫效果好,基本為圓筒型,制冷片難以安裝。方案3:用亞克力板。規(guī)格、形狀可以定制。但密封性能不佳。1.2.2最小系統(tǒng)板模塊方案1:使用傳統(tǒng)C51或S51系列單片機(jī),片內(nèi)功能較少,運算速度較慢。方案2:采用stm32單片機(jī),運算效果好,功能強(qiáng)大。缺點為對伍內(nèi)部無熟悉stm32單片機(jī)的隊員,重新學(xué)習(xí)較費時間。方案3:采用STC15系列51單片機(jī)。STC15系列51單片機(jī)內(nèi)部集成了許多傳統(tǒng)51所不具有的功能,如內(nèi)置AD,PWM,DA,SPI等模塊,中斷服務(wù)齊全,隊伍內(nèi)較stm32更為熟悉。除去許多外設(shè)。同時也減少IO口的使用。1.2.3加熱器、節(jié)流裝置A. 加熱器:方案1:熱得快。功率高,加熱快,使用簡單。220V使用電壓過高,難以控制,危險系數(shù)較大。防水性差,價格貴,性價比低。方案2:加熱片。價格便宜,但功率較低,且不防水,放在水里引起短路。方案3:制冷片。加熱速度快,防水性能適中,接12V直流電,可控性強(qiáng),網(wǎng)上有套裝,購買方便。B. 節(jié)流裝置:方案1:電磁閥。電磁控制,方便弱電控制。無法產(chǎn)生動力,只能依托重力勢能使水流動,對水的控制不靈活。方案2:水泵。通過繼電器,可以達(dá)到很好的控制性能。安裝要求低,使用方便。1.2.4 LCD顯示模塊方案1:數(shù)碼管。可以顯示數(shù)字,所需IO口教少,使用簡單,可顯示字符過少。動態(tài)顯示對程序占用大。靜態(tài)顯示需借助轉(zhuǎn)串口芯片。方案2:LCD1602。可顯示所有字符以及數(shù)字,操作方便,編程簡單,分辨率低,畫圖效果差。方案3:LCD12864。自帶漢字庫,使用方便,分辨率高,作圖精確,靈活性較大。編程較難,所需IO口較多。1.2.5超聲波模塊方案1:防水型超聲波模塊。具有防水性能,可直接放在水里,直接測出液位高度。價格很貴。方案2:利用浮標(biāo)把液位轉(zhuǎn)化到水箱外,用一般超聲波探頭進(jìn)行檢測,可以貼合題意,從下方直接檢測液位。工程量大,浮標(biāo)容易晃動,容易被制冷模塊卡住。方案3:普通超聲波模塊。不具防水性,價格便宜。1.2.6紅外接收模塊方案1:紅外接收。紅外接收是指使用紅外接收頭接收紅外線發(fā)射管所發(fā)出的紅外線,波長在750-1150NM。所需光學(xué)元件為紅外接收頭及紅外發(fā)射器,電路較為簡便,感應(yīng)迅速,可在適當(dāng)距離進(jìn)行遠(yuǎn)程控制??傻钟渌饩€的干擾。利用紅外接收三極管作為接收元件,價格低廉。方案2:無線電接收。利用電磁波作為信號傳遞,遙控距離遠(yuǎn)。相較紅外模塊效果更佳。不足之處為拓展功能部分隊內(nèi)隊員對無線電模塊了解得較少。1.2.7電源穩(wěn)壓模塊對單片機(jī)供電:方案:采用L7805CV穩(wěn)壓芯片驅(qū)動穩(wěn)壓電路,單片機(jī)使用9V紐扣電池組進(jìn)行供電,質(zhì)輕且體積小,大小適合。對水泵、制冷片供電:方案:使用開關(guān)電源,220V轉(zhuǎn)12V,使用方便,功率大。1.2.8上位機(jī)模塊方案1:利用Visual Basic編寫。操作簡單,但VB語言不熟,編寫時間長。方案2:利用C #編寫。操作較難,且C#不熟,編寫時間長。方案3:利用Labview編寫。操作簡單,掌握編寫程序時間短。1.2.9水冷模塊方案1:利用軟管讓水繞過過熱部位帶走熱量。對水管的耐熱性以及柔軟程度要求較高,熱傳遞受到管壁阻礙。方案2:利用舵機(jī)牽動水管對散熱片進(jìn)行噴水。降溫效果好,效果均勻。舵機(jī)架空固定難度大,角度控制要求高。方案3:在水管上打孔,利用水泵使水噴出,冷卻制冷片。固定簡單,操作簡單,降溫效果好,水資源利用率大。1.2.10語音模塊方案1:功放芯片1、8腳懸空,為20倍增益。20倍增益的雜音較少,但是音量也相對較小,喇叭移遠(yuǎn)一點就會聽不清所說的話。方案2:功放芯片1、8腳之間接10uF電容,200倍增益。200倍增益相對電流聲較大,但是聲音較為清晰,不放音時可以使芯片下電而消除電流聲。1.2.11 程序設(shè)計A:濾波算法方案1:使用一階互補濾波算法,濾波效果好,曲線光滑度高。但滯后程度過大,不適合用于處理液位數(shù)據(jù),容易導(dǎo)致調(diào)節(jié)滯后。方案2:使用算術(shù)平均濾波算法和限幅濾波算法的結(jié)合算法,濾波效果不錯,曲線相對光滑,但不滯后,實時性高,同時也排除瞬間的較大干擾。B:PWM輸出算法方案1:僅適用設(shè)定死區(qū)的簡單調(diào)節(jié)操作,程序簡便,調(diào)節(jié)簡單,占用單片機(jī)CPU時間小,效果較差。方案2:一階函數(shù)式PWM調(diào)節(jié):PWM呈現(xiàn)一階函數(shù)形式,然而在接近死區(qū)部分時,PWM輸出將會大大受到削弱,升溫降溫效果不好。方案3:PID控制PWM輸出。PID控制可以使得調(diào)節(jié)迅速,穩(wěn)定,并且超調(diào)量可以降到最低。然而PID程序調(diào)節(jié)需要占用較大的CPU時間及單片機(jī)內(nèi)存,并且調(diào)節(jié)參數(shù)難度較大。2 設(shè)計與論證2.1外部結(jié)構(gòu)2.1.1 鐵盒平臺(水泵)為了使水泵順利抽水,利用既有材料搭構(gòu)平臺,放置水泵,避免水管大角度彎曲而抽水不暢的情況。2.1.2 鐵盒平臺(水箱)為了方便水冷系統(tǒng)的水循環(huán)使用,利用既有材料搭構(gòu)平臺,放置水箱,使噴水式水冷系統(tǒng)的水直接往下流即可回到蓄水箱供其他水泵利用,同時又避免了水箱下部長時間浸泡在水里導(dǎo)致水箱內(nèi)部水溫變化。2.1.3 冷水系統(tǒng)(環(huán))由于外部有散熱片阻擋,只需把幾個螺絲孔堵住,就可以直接往散熱片上噴水,回溫效果非常好。2.1.4 水箱為了達(dá)到規(guī)定的規(guī)格要求,把底面設(shè)計成40*60(mm),高為350mm,在一較寬側(cè)面開了兩個方孔,上方蓋子開了大小4個圓孔。底面較小的底面積利于液位控制;方孔的開鑿剛好可以放進(jìn)制冷片的導(dǎo)熱片,讓導(dǎo)熱片直接與水接觸,可提高控溫效率;圓孔剛好能放進(jìn)超聲波探頭、溫感探頭和輸水管。2.2硬件部分2.2.1單片機(jī)模塊(3機(jī)通信)由于傳統(tǒng)51系列(AT89S52)內(nèi)部功能較少,運算速度較慢,故棄用。而stm32芯片功能齊全,不過學(xué)習(xí)控制所化時間較長,故亦棄用,最終選擇STC15系列單片機(jī)(STC15F2K60S2)STC15F2K60S2芯片選擇原因如下: 由于上位機(jī)信息的傳輸需要較高晶振頻率,恒溫水箱功能較多,液位、溫度、繼電器、LCD12864等多個功能需要處理的數(shù)據(jù)量大,該芯片能夠軟件設(shè)定晶振且處理速度快?;谏鲜鲈?,我們選擇STC15F2K60S2系列8051芯片。 STC15F2K60S2引腳部分功能圖STC15F2K60S2芯片優(yōu)勢:該芯片具有以下優(yōu)勢:1) 自帶內(nèi)部課配置時鐘(晶振),并可以通過軟件選擇時鐘頻率。2) 提供7中復(fù)位方式:外部RST引腳復(fù)位,軟件復(fù)位,掉電復(fù)位/上電復(fù)位(并選擇增加額外的復(fù)位延時180ms,也叫MAX810專用復(fù)位電路),內(nèi)部低壓檢測復(fù)位,MAX810專用復(fù)位電路復(fù)位,看門狗復(fù)位以及程序地址非法復(fù)位。3) 內(nèi)部硬件完備,大量減少準(zhǔn)備階段的工作量4) 內(nèi)部集成3路可編程計數(shù)器陣列(CCP/PCA)模塊,可用于軟件定時器、外部脈沖捕捉、高速脈沖輸出以及脈寬調(diào)制(PWM)輸出2.2.2開關(guān)電源繼電器模塊繼電器電路選擇:利用三極管放大電路驅(qū)動繼電器模塊。利用SRD-05VDC-SL-C固態(tài)繼電器搭建簡易的控制電路??刂品奖阌行В憫?yīng)迅速??沈?qū)動10A以內(nèi)電流,無火花,壽命長。IO口變?yōu)榈碗妷杭蠢^電器制動。主要驅(qū)動控制部件有水泵,制冷片。因為考慮到制冷片工作效率,采取反接方式驅(qū)動兩片制冷片。故采用兩個繼電器構(gòu)成一個可控的反向電流控制模塊。NE555繼電器模塊選擇原因:由于考慮到散熱水泵不需要持續(xù)開著,可以開一小段時間又關(guān)一段時間實現(xiàn)類似PWM的模式,但是因為水冷降溫不需要太精確,用單片機(jī)實現(xiàn)方波輸出對單片機(jī)的資源有點浪費,于是考慮用簡單的數(shù)字電路實現(xiàn)該功能,實現(xiàn)方波輸出我們想到了NE555芯片,因為要控制繼電器,因此頻率不能太高,因此將頻率定在0.8s左右,占空比可調(diào)。并用仿真軟件檢測確認(rèn)原理正確。測試結(jié)果(NE555輸出電位):2.2.3 LCD12864顯示模塊主界面(顯示溫度與顯示液位反應(yīng)曲線,溫度設(shè)定進(jìn)入設(shè)定界面):PS:紅外2鍵光標(biāo)向上,8鍵為光標(biāo)向下,EQ鍵為確認(rèn)。溫度曲線界面(其中運行時T顯示為現(xiàn)在溫度,T0為設(shè)定溫度,液位曲線類似。):PS:紅外CH鍵為退出。溫液設(shè)定主界面(溫度設(shè)定及液位設(shè)定選擇后跳入設(shè)定界面,溫液清零跳入溫度液位曲線清零界面。):PS:紅外2鍵光標(biāo)向上,8鍵為光標(biāo)向下,EQ鍵為確認(rèn)。液位設(shè)定子屏幕:(其中R0為現(xiàn)在想要的設(shè)定溫度,r為上次設(shè)定溫度,若無設(shè)定則會顯示“無”,初始狀態(tài)下恒定原箱內(nèi)水溫,R為現(xiàn)在的溫度。溫度設(shè)定模塊類似。)PS:紅外2鍵光標(biāo)向上,8鍵為光標(biāo)向下,EQ鍵為確認(rèn)。寫入設(shè)定數(shù)字時,數(shù)字鍵為鍵入數(shù)字,CH鍵為清零,|為退出(不改變設(shè)定溫度),EQ為確認(rèn)鍵溫液清零界面(兩個清零選項用于清除12864畫曲線時的曲線數(shù)組,鍵入后自動返回溫液設(shè)定主屏幕):PS:紅外2鍵光標(biāo)向上,8鍵為光標(biāo)向下,EQ鍵為確認(rèn)。2.2.4 語音模塊功放芯片1、8腳懸空,為20倍增益,用軟件延時或定時器延時讀秒停止放音,然后開始下一個指令(連續(xù)播音或下電),用軟件延時或定時器延時讀秒停止放音,然后開始下一個指令(連續(xù)播音或下電),對于較長的語音用外部中斷進(jìn)行判斷,對于讀數(shù)字用軟件延時實現(xiàn)。語音-地址對應(yīng)表:2.2.5紅外接收模塊鑒于對無線電遙控模塊的認(rèn)知較為陌生,本次設(shè)計選擇了紅外線接收模塊。該模塊具有小巧輕便,可直接連接到單片機(jī)上且紅外線精準(zhǔn)快速,抗干擾能力強(qiáng),可遠(yuǎn)距離控制等優(yōu)點。接收元件選用了紅外接收三極管,它集接收與放大功能于一體,使用方便。發(fā)射模塊的初步設(shè)定為利用單片機(jī)和紅外發(fā)射二極管制作發(fā)射模塊,最終由于濾波不足沒能完成此模塊,考慮到時間限制,最終選擇使用現(xiàn)成附帶編碼芯片的遙控器。2.2.6電源及穩(wěn)壓模塊對單片機(jī)供電部分:對于穩(wěn)壓5v的單片機(jī)電源輸入,本次采用了L7805CV穩(wěn)壓芯片。電源上利用9v紐扣電池,通過穩(wěn)壓模塊穩(wěn)定后形成了穩(wěn)定的5V VCC電壓。模塊小且電池質(zhì)輕,減輕了小車重量。輸出電壓:4.75-5.25V;最大輸入電壓:35V;靜態(tài)電流:4.2-8mA;輸出噪音電壓:40uV;紋波抑制比:78dB;輸出電阻:17m;輸出電壓溫度系數(shù)-1.1mV/C;(注:L7805CV與7805相通)2.2.7超聲波模塊利用超聲波模塊的探測距離的功能,從水箱頂部探測水箱頂蓋到液面的距離,再由水箱高度減去探測的距離,得出水位高度??紤]到防水探頭比較貴,故選用普通超聲波模塊。2.2.8LED及溫度表盤顯示模塊把LED燈串成鏈,固定在水箱一側(cè),當(dāng)水位到達(dá)該高度時,燈發(fā)亮,另外,兩對紅、綠LEC燈分別作為制冷片、水泵的工作指示燈,不同工作狀態(tài)有不同的亮燈組合。溫度表盤則是以步進(jìn)電機(jī)作為動力,自制指針和表盤,直觀地顯示當(dāng)前的溫度。2.2.9水冷模塊考慮到普通水管冷凝效果不佳,舵機(jī)控制較為麻煩。把水泵作為動力源,把出水管的末端堵住,再往水管邊上開孔,使水在水泵的作用下從水管側(cè)面噴出,直接灑在散熱片上,調(diào)節(jié)制冷片的溫度。2.3軟件部分2.3.1程序設(shè)計程序部分使用keil軟件編程,使用STC專用下載器進(jìn)行下載,頭文件上無需包含普通51頭文件,取而代之的是STC15系列專用頭文件。主機(jī)模塊間有:溫感模塊,超聲波模塊,PID控制PWM模塊,子應(yīng)用程序模塊等。副機(jī)1包括紅外模塊,12864顯示模塊及副機(jī)1子程序模塊等。副機(jī)2包括語音模塊,溫度表盤模塊,led顯示模塊,副機(jī)2子程序模塊等(具體程序內(nèi)容見附錄)3 電路圖及相關(guān)設(shè)計資料3.1最小系統(tǒng)板模塊STC15F2K60S2芯片引腳圖: STC15F2K60S2引腳部分功能圖相關(guān)寄存器:定時器2:串口2:3.2水冷模塊 NE555 相關(guān)資料:控制電路電路圖:【圖解】3.3LCD12864顯示模塊:3.3.1.模塊引腳說明 3.3.2.液晶硬件接口 1、邏輯工作電壓(VDD):4.55.5V 2、電源地(GND):0V 3、工作溫度(Ta):060(常溫) / -2075(寬溫) 4、電氣特性見附圖1 外部連接圖(參考附圖2) 模塊有并行和串行兩種連接方法(時序如下): 1、8位并行連接時序圖 MPU寫資料到模塊 MPU寫資料: MPU讀出資料:3.3.3.用戶指令集 a、指令表1:(RE=0:基本指令集)3.3.4.顯示坐標(biāo)關(guān)系a、圖形顯示坐標(biāo)B、漢字顯示坐標(biāo)3.3.5.顯示步驟 1、 顯示資料RAM(DDRAM) 顯示資料RAM提供642個位元組的空間,最多可以控制4行16字(16個字)的中文字型顯示,當(dāng)寫入顯示資料RAM時,可以分別顯示CGROM、HCGROM與CGRAM的字型;ST7920A可以顯示三種字型 ,分別是半寬的HCGROM字型、CGRAM字型及中文CGROM字型 ,三種字型的選擇,由在DDRAM中寫入的編碼選擇,在0000H0006H的編碼中將自動的結(jié)合下一個位元組,組成兩個位元組的編碼達(dá)成中文字型 的編碼(A140D75F),各種字型詳細(xì)編碼如下: 1、 顯示半寬字型 :將8位元資料寫入DDRAM中,范圍為02H7FH的編碼。 2、 顯示CGRAM字型:將16位元資料寫入DDRAM中,總共有0000H,0002H,0004H, 0006H四種編碼。3、 顯示中文字形:將16位元資料寫入DDRAMK ,范圍為A1A1HF7FEH的編碼。 2、繪圖RAM(GDRAM) 繪圖顯示RAM提供6432個位元組的記憶空間,最多可以控制25664點的二維也納繪圖緩沖空間,在更改繪圖RAM時,先連續(xù)寫入水平與垂直的坐標(biāo)值,再寫入兩個8位元的資料到繪圖RAM,而地址計數(shù)器(AC)會自動加一;在寫入繪圖RAM的期間,繪圖顯示必須關(guān)閉,整個寫入繪圖RAM的步驟如下: 1、 關(guān)閉繪圖顯示功能。 2、 先將水平的位元組坐標(biāo)(X)寫入繪圖RAM地址; 3、 再將垂直的坐標(biāo)(Y)寫入繪圖RAM地址; 4、 將D15D8寫入到RAM中; 5、 將D7D0寫入到RAM中; 6、 打開繪圖顯示功能。 繪圖顯示的記憶體對應(yīng)分布請參考表 3、游標(biāo)/閃爍控制 ST7920A提供硬體游標(biāo)及閃爍控制電路,由地址計數(shù)器(address counter)的值來指定DDRAM中的游標(biāo)或閃爍位置。 3.4超聲波模塊超聲波模塊電路圖:發(fā)射電路接收電路距離計算公式:1550C,平均溫度32.5C,此溫度的聲速是351.5175m/s機(jī)器周期=4.52112268518519*10(-8)s時間周期=12*機(jī)器周期=5.425347222222*10(-7)s距離=351.5175m/s*0.542534*10(-6)s*time*10(2)/2(0.01cm)3.5溫度感應(yīng)模塊溫感探頭資料:相關(guān)電路圖:3.6紅外接收模塊紅外接收器電路圖:紅外遙控模型圖:紅外控制數(shù)據(jù)格式:紅外控制位定義:遙控器上對應(yīng)按鍵的數(shù)據(jù)碼:10100010 01100010111000100010001000000001110000101110000010101000100100000110100010011000101100000011000000011000011110100001000000111000010110100100001001001010010100103.7電源及穩(wěn)壓模塊 電路圖:輸出電壓:4.75-5.25V;最大輸入電壓:35V;靜態(tài)電流:4.2-8mA;輸出噪音電壓:40uV;紋波抑制比:78dB;輸出電阻:17m;輸出電壓溫度系數(shù)-1.1mV/C;(注:L7805CV與7805相通)3.8制冷片模塊定電壓為:12v, 額定電流為4.5A,大概是50-60W,最大溫差可達(dá)60攝氏度,外型尺寸為4 X 4 X 0.Cm,重約25克。它的工作特點是一面制冷而一面發(fā)熱。冷熱兩面溫差68度(只要熱面溫度包持68度以下,冷面溫度就能控制在0到-68度或者更底)接上12伏的電源制冷片的兩面就會出現(xiàn)溫差,一面冷,一面熱,千萬不要在無散熱器的情況下為致冷器長時間通電,否則會造成致冷器內(nèi)部過熱而燒毀??蓱?yīng)用于各種制冷場合(如,冷熱飲水機(jī),電腦的CPU,顯卡散熱等)還可以把它應(yīng)用于其他用途和領(lǐng)域 如電子冰箱,電子降溫頭帶 ,電子降溫頭盔,電子冷熱杯等等用做電腦散熱,5伏電壓足夠了也就是電腦電源那一把線中 任意一根紅線和黑線就是5伏,紅線是正極,黑線是負(fù)極(制冷片也如同紅正黑負(fù))安裝使用制冷片的安裝及使用很簡單。在安裝前,最好準(zhǔn)備一點導(dǎo)熱硅脂,然后,找一節(jié)干電池,接在制冷器兩根引線上,就可感到一端明顯發(fā)涼而另一端發(fā)熱,記住引線的極性并確定好制冷器的冷、熱端。如果想得到更大的制泠量,建議采用二級制冷方式,即用兩片疊起來用,上面一塊的冷面吸收下面一塊的發(fā)熱,實驗證明二級制冷比單級效果好得多,如果有條件可以選三級的,當(dāng)然要有大功率電源支持。3.9語音模塊電路圖如下:4 結(jié)果分析及問題解決主要記錄如下:上位機(jī):一開始時遇到過較多問題。后來就一個個基本解決掉了1、終止符問題一開始是默認(rèn)終止符是0x00,在測試的時候發(fā)現(xiàn)溫度圖線沒變化一段會出現(xiàn)未知的突變再過一段時間有恢復(fù)正常,后來檢查發(fā)現(xiàn)是終止符的問題,因為數(shù)據(jù)是分成整數(shù)部分和小數(shù)部分分別發(fā)到上位機(jī),小數(shù)部分的數(shù)值會出現(xiàn)0的數(shù)值,上位機(jī)誤認(rèn)為這個是終止符,于是數(shù)據(jù)就開始出錯,后來講終止符改成0xff后就沒出現(xiàn)該問題了。最后上位機(jī)數(shù)據(jù)格式為:溫度整數(shù)部分 溫度小數(shù)部分 液位整數(shù)部分 液位小數(shù)部分 終止符2、數(shù)據(jù)延時問題測試的時候發(fā)現(xiàn)當(dāng)溫度或液位改變時,上位機(jī)過了將近半分鐘才出現(xiàn)剛才變化的圖線,后來發(fā)現(xiàn),上位機(jī)是通過串口接收數(shù)據(jù)然后放在緩沖區(qū)中,圖線是通過讀取緩沖區(qū)數(shù)據(jù)作出圖像,因為上位機(jī)并不是讀取數(shù)據(jù)就畫出來,而是每過一定時間讀取一個數(shù)據(jù)將其畫出來,沒有讀取出來的數(shù)據(jù)被堆積在緩沖區(qū)中,于是每過一段時間讀出來的數(shù)據(jù)是緩沖區(qū)中最舊的數(shù)據(jù),新的數(shù)據(jù)沒有被讀取出來,于是出現(xiàn)了延時現(xiàn)象,后來我們在每讀取一個數(shù)據(jù)后就將緩沖區(qū)清空,使得數(shù)據(jù)不會發(fā)生堆積,延遲問題基本解決。溫度表盤:溫度、液位曲線:(PS:上位機(jī)讀取數(shù)據(jù)存在BUG出現(xiàn),偶爾出現(xiàn)巨大跳變)降溫曲線:40C - 15C升溫曲線:20C - 40C波動曲線:20C 大粗調(diào):20C - 40C;20cm - 40cm部分溫液變化數(shù)據(jù):初始溫度/C設(shè)定溫度/C初始液位/cm設(shè)定液位/cm是否大粗調(diào)過程用時/min30202727否1030152727否1440152525否1430402525否620401919否620402025是630202020否9問題:超聲波測距存在死區(qū)解決方案:把超聲波探頭架高,使液面變化總在有效測距范圍內(nèi)問題:進(jìn)出水時,液面波動大,引起讀數(shù)變化解決方案:把水隔離開為不同區(qū)域,構(gòu)造一個穩(wěn)定液面的空間問題:超聲波探頭過于靈敏,曲線不夠平滑解決方案:利用均值濾波算法,使變化更加平緩5 總結(jié)關(guān)于作品,熱刃牌恒溫水浴箱修修改改,現(xiàn)在基本定型,以上下兩塊制冷片調(diào)節(jié)溫度;利用兩個水泵實現(xiàn)水位升降,另外一個水泵用于保持制冷片的溫度;超聲波放置于塑料豎板內(nèi)檢測水位;紅外控制用于發(fā)送指令;LCD、LED用于顯示提醒。智控大賽個人總結(jié)(陳思遠(yuǎn))比賽進(jìn)行得如火如荼,各個隊伍都拼盡全力地準(zhǔn)備著作品。我們隊也一樣。由于是未接觸過的題目類型,許多模塊都不熟悉甚至有些是第一次接觸,困難重重,總會遇到些許難題。例如超聲波模塊的死區(qū)內(nèi)死機(jī)、非定時器啟動無限循環(huán)、制冷片的防水問題、散熱問題等。經(jīng)常得把一整天的時間用在調(diào)試、檢測上。鍛煉了我們查找資料的能力以及不斷嘗試的精神。同時,在面臨困難并試圖解決問題的過程中,我們的大腦、思維也得到了極大的鍛煉,思維更加活躍、更加發(fā)散。期間還有不少小創(chuàng)意出現(xiàn),例如用復(fù)印紙包裹超聲波防止水管噴水得水位檢測的影響、用筷子搭成井字形固定架固定水箱底座、水浴箱和水浴箱雙箱一體、零食瓶作平臺支腳、飲料瓶當(dāng)防水罩等等。這極大地增強(qiáng)了我們的動手能力以及團(tuán)隊合作能力。雖然有時候總是熬到凌晨12點,但收獲的總是跟付出的成正比,看到我們的作品,我感到很滿意。智控大賽總結(jié)(許耀釗)在本次大賽中我主要負(fù)責(zé)傳感器及外設(shè),其中包括有l(wèi)abview上位機(jī)制作,藍(lán)牙數(shù)據(jù)傳輸,溫度傳感器,語言模塊,步進(jìn)電機(jī)溫度表盤,散熱裝置數(shù)字電路設(shè)計,以及后期參數(shù)調(diào)整。因為我的工作涉及到大量新的模塊、芯片、軟件等,因此要迅速地學(xué)習(xí)使用新的東西,比如labview,我以前從未聽過,stc15系列,isd4004,hc05等以前最多只是聽說過但從未接觸過。因此我努力研究數(shù)據(jù)手冊理解網(wǎng)上的程序,從無到有實現(xiàn)了所有模塊的程序封裝,因為要最后由另一個隊友整合起來,因此每個程序都要做好注釋與備注,以方便他人使用。調(diào)試工作非常耗時間,還要處理大量的數(shù)據(jù),參數(shù)調(diào)整的同時也要不斷思考模型是否還要改動,實驗中遇到的問題應(yīng)如何解決,這鍛煉了我面對問題的處理能力與團(tuán)隊合作能力,讓我學(xué)到了很多東西。這次的比賽讓我獲益良多。智能控制大賽總結(jié)(鄭陸楠) 本次為期一個月的智能控制大賽,已逐步接近了尾聲。就三個大一學(xué)生而言,沒有充足的比賽經(jīng)驗與豐富的電路知識,參加本次大賽無疑充滿著未知的挑戰(zhàn),再加上要與大多數(shù)的學(xué)長同臺競技,足以看到我們所要面臨的挑戰(zhàn)是多么巨大。雖然在大一期間已經(jīng)接觸了許多關(guān)于電路與控制的知識,在比賽開始時對伍內(nèi)也并不認(rèn)為能產(chǎn)生多大優(yōu)勢,首次作為隊長,也希望自己所在的隊伍能在比賽中脫穎而出。從最初的題目分析與選題,到系統(tǒng)的構(gòu)建,再到模塊的分工與組裝,我們都進(jìn)行了充分的討論與試驗,雖然期間碰到了許多問題,也在我們的努力之下被一一攻克。比賽的時間較短讓我們的精神總處于緊張的狀態(tài),在短短的一個月時間內(nèi),我們完成了一個較為滿意的作品,無論結(jié)果如何,已經(jīng)可以從中學(xué)到不少的東西。在本次比賽中學(xué)到了很多。以往的幾次比賽中,都是選擇小車作為主題進(jìn)行比賽,而本次選擇了水浴系統(tǒng),作為隊長而言也是有一定考慮的,首先可以學(xué)到更多的東西,其次是初級組,相對競爭壓力也較小,故在討論后選擇水浴做為題目。同時,這也是我們所完成的第一個系統(tǒng)類的作品。溫度液位控制,PID算法,冷凝水循環(huán)系統(tǒng),上位機(jī),一些陌生的名詞在一步步的學(xué)習(xí)和改進(jìn)之中,被我們所熟悉。雖然期間波瀾不斷,也在我們的細(xì)心調(diào)整下,模塊被完成,系統(tǒng)越來越穩(wěn)定。而我們也對本次的作品充滿了希望??偟脕碚f,本次比賽學(xué)到了很多,收獲了很多。我們依舊沖著第一努力,然而即便沒有獲獎,也覺得心滿意足,以為已經(jīng)盡了最大的力氣了。6 附錄(主機(jī)程序)File:Main engine.c#include STC15F2K60S2.h/STC15F2K60S2專用頭文件#include subprogram_main.h/包含所有獨立子函數(shù)#include ds18b20.h/包含溫度傳感模塊#include SuperWave.h/包含超聲波模塊#include PID.h/包含PID控制模塊#include 1602.h/1602頭文件void main()UartInit();/串口初始化WC_init();/超聲波模塊初始化lcd1602_init();/1602初始化Timer1_Init();/定時器初始化INIT_EX0();/外部中斷初始化while(button=1);/開啟按鈕while(1)xianshi_1602();/1602顯示函數(shù)File: ds18b20.c#include STC15F2K60S2.h/STC15F2K60S2專用頭文件#include ds18b20.h/包含溫度傳感模塊#include /_nop_()函數(shù)/*以下3個延時為22.1184M下的延時,由軟件延時計算器算出*/void delay15(void)/用16us計算unsigned char i;i = 86;while (-i);void delay60(void)/用64us計算unsigned char i, j;i = 2;j = 93;dowhile (-j); while (-i);void delay500(void)/用500us計算unsigned char i, j;_nop_();_nop_();_nop_();i = 11;j = 190;dowhile (-j); while (-i);/初始化DS18B20/讓DS18B20一段相對長時間低電平, 然后一段相對非常短時間高電平, 即可啟動void dsInit()ds = 0;delay500();/拉低約500us, 符合協(xié)議要求的480us以上ds = 1; /產(chǎn)生一個上升沿, 進(jìn)入等待應(yīng)答狀態(tài)delay15();delay15();void dsWait()while(ds);while(ds); /檢測到應(yīng)答脈沖delay15();delay15();/向DS18B20讀取一位數(shù)據(jù)/讀一位, 讓DS18B20一小周期低電平, 然后兩小周期高電平,/之后DS18B20則會輸出持續(xù)一段時間的一位數(shù)據(jù)bit readBit()bit b;ds = 0;_nop_(); /符合協(xié)議要求至少保持1us_nop_();_nop_();ds = 1;delay15(); /符合協(xié)議要求的至少延時15us以上b = ds;delay60();/符合讀時隙不低于60us要求return b;/讀取一字節(jié)數(shù)據(jù), 通過調(diào)用readBit()來實現(xiàn)unsigned char readByte()unsigned int i;unsigned char j, dat;dat = 0;for(i=0; i8; i+)j = readBit();/最先讀出的是最低位數(shù)據(jù)dat = (j 1);return dat;/向DS18B20寫入一字節(jié)數(shù)據(jù)void writeByte(unsigned char dat)unsigned char j;bit b;for(j = 0; j = 1;/寫1, 將DQ拉低15us后, 在15us60us內(nèi)將DQ拉高, 即完成寫1if(b) ds = 0;delay15(); /符號要求1560us內(nèi)ds = 1; delay60();/符合寫時隙不低于60us要求else /寫0, 將DQ拉低60us120usds = 0;delay60();/符號要求ds = 1;delay15();/整個寫0時隙過程已經(jīng)超過60us, 這里就不用像寫1那樣, 再延時60us了/向DS18B20發(fā)送溫度轉(zhuǎn)換命令void sendChangeCmd()dsInit(); /初始化DS18B20, 無論什么命令, 首先都要發(fā)起初始化dsWait(); /等待DS18B20應(yīng)答delay500(); /延時500us, 因為DS18B20會拉低DQ 60240us作為應(yīng)答信號writeByte(0xcc); /寫入跳過序列號命令字 Skip RomwriteByte(0x44); /寫入溫度轉(zhuǎn)換命令字 Convert T/向DS18B20發(fā)送讀取數(shù)據(jù)命令void sendReadCmd()dsInit();dsWait();delay500();writeByte(0xcc); /寫入跳過序列號命令字 Skip RomwriteByte(0xbe); /寫入讀取數(shù)據(jù)令字 Read Scratchpad/獲取當(dāng)前溫度值int getTmpValue()unsigned int tmpvalue;int value; /存放溫度數(shù)值unsigned char low, high;sendReadCmd();/連續(xù)讀取兩個字節(jié)數(shù)據(jù)low = readByte();high = readByte();/將高低兩個字節(jié)合成一個整形變量/計算機(jī)中對于負(fù)數(shù)是利用補碼來表示的/若是負(fù)值, 讀取出來的數(shù)值是用補碼表示的, 可直接賦值給int型的valuetmpvalue = high;tmpvalue = 8;tmpvalue |= low;value = tmpvalue;return value;int ds_getdata()int ds_t;sendChangeCmd();/發(fā)送轉(zhuǎn)換命令/使用DS18B20的默認(rèn)分辨率12位, 精確度為0.0625度, 即讀回數(shù)據(jù)的最低位代表0.0625度ds_t = getTmpValue() * 6.25;/度數(shù)并轉(zhuǎn)單位,處理小數(shù)就是你的事了return ds_t;File: ds18b20.h#ifndef _ds18b20_h_#define _ds18b20_h_sbit ds = P16;/數(shù)據(jù)線extern void dsInit();/初始化DS18B20extern void dsWait();/檢測應(yīng)答脈沖extern bit readBit();/向DS18B20讀取一位數(shù)據(jù)extern uns
收藏