智能空調(diào)溫度控制電路的設(shè)計(jì)
智能空調(diào)溫度控制電路的設(shè)計(jì)
一、 目的 單片機(jī)綜合練習(xí)是一項(xiàng)綜合性的專業(yè)實(shí)踐活動(dòng),目的是讓學(xué)生將所學(xué)的基礎(chǔ)理論和專業(yè)知識運(yùn)用到具體的工程實(shí)踐中,以培養(yǎng)學(xué)生綜合運(yùn)用知識能力、實(shí)際動(dòng)手能力和工程實(shí)踐能力,為此后的畢業(yè)設(shè)計(jì)打下良好的基礎(chǔ)。 二、 任務(wù) 本次單片機(jī)綜合練習(xí)的任務(wù)是設(shè)計(jì)并制作一個(gè)空調(diào)控制器。 基本任務(wù)是利用AT89C51單片機(jī)、ADC0809模數(shù)轉(zhuǎn)換器等芯片設(shè)計(jì)并制作一個(gè)具有制冷、制熱、通風(fēng)和自動(dòng)運(yùn)行的手控型空調(diào)控制器。 三、硬件部分的具體內(nèi)容和要求 1.手控型空調(diào)控制器的功能: 1)空調(diào)控制器應(yīng)具有制冷、制熱、通風(fēng)和自動(dòng)運(yùn)行四種工作模式。 a.制冷:室內(nèi)風(fēng)機(jī)、壓縮機(jī)及室外風(fēng)機(jī)工作,而四通換向閥停止工作。 b.制熱:室內(nèi)風(fēng)機(jī)、壓縮機(jī)、室外風(fēng)機(jī)和四通換向閥均工作。 c.通風(fēng):室內(nèi)風(fēng)機(jī)工作,而壓縮機(jī)、室外風(fēng)機(jī)和四通換向閥均不工作。 d. 自動(dòng)運(yùn)行:能根據(jù)當(dāng)前室內(nèi)溫度和自動(dòng)運(yùn)行的設(shè)定溫度,自動(dòng)選擇制冷、制熱或通風(fēng)工作模式。 e.每按一下工作模式選擇鍵時(shí),工作模式按圖3所示的箭頭方向依此變換: 圖3 工作模式選擇
2).能對溫度進(jìn)行設(shè)定和控制: a.制冷時(shí)溫度調(diào)節(jié)范圍為:20℃~32℃。當(dāng)室內(nèi)溫度高于設(shè)定溫度1℃時(shí),開始制冷;而當(dāng)室內(nèi)溫度降到設(shè)定溫度時(shí),則轉(zhuǎn)為通風(fēng)狀態(tài)。 b.制熱時(shí)溫度調(diào)節(jié)范圍為:14℃~30℃。當(dāng)室內(nèi)溫度低于設(shè)定溫度1℃時(shí),開始制熱;而當(dāng)室內(nèi)溫度升到設(shè)定溫度時(shí),則轉(zhuǎn)為通風(fēng)狀態(tài)。 c.通風(fēng)時(shí)溫度設(shè)置欄顯示“ 一 一 ”,并且溫度設(shè)置鍵無效。 d. 自動(dòng)運(yùn)行溫度調(diào)節(jié)范圍為:25℃、27℃、29℃。若室內(nèi)溫度低于設(shè)定溫度5℃時(shí),自動(dòng)按制熱工作模式運(yùn)行;若室內(nèi)溫度高于設(shè)定溫度時(shí),則按制冷模式運(yùn)行;否則按通風(fēng)模式運(yùn)行。 e.溫度設(shè)定鍵每按一下,則溫度上升或下降1℃(在設(shè)定范圍內(nèi))。 f.控溫精度為±1℃ 3).室內(nèi)風(fēng)機(jī)具有高、中、低三檔風(fēng)速和自動(dòng)風(fēng)控制功能。 每按一下風(fēng)速選擇鍵時(shí),風(fēng)速模式按圖4所示的箭頭方向依此變換: 圖4 風(fēng)速模式選擇
其中自動(dòng)風(fēng)與工作模式及溫度有關(guān): a.制冷時(shí),當(dāng)室內(nèi)溫度高于設(shè)定溫度5℃時(shí),為高速風(fēng); 當(dāng)室內(nèi)溫度高于設(shè)定溫度2℃~5℃時(shí),為中速風(fēng); 當(dāng)室內(nèi)溫度不高于設(shè)定溫度2℃時(shí),為低速風(fēng); b.制熱時(shí),當(dāng)室內(nèi)溫度低于設(shè)定溫度5℃時(shí),為高速風(fēng); 當(dāng)室內(nèi)溫度低于設(shè)定溫度2℃~5℃時(shí),為中速風(fēng); 當(dāng)室內(nèi)溫度不低于設(shè)定溫度2℃時(shí),為低速風(fēng); c.通風(fēng)時(shí),當(dāng)室內(nèi)溫度高于25℃時(shí),為高速風(fēng); 當(dāng)室內(nèi)溫度介于20℃~25℃時(shí),為中速風(fēng); 當(dāng)室內(nèi)溫度低于設(shè)定溫度20℃時(shí),為低速風(fēng); 4).具有壓縮機(jī)三分鐘自動(dòng)保護(hù)功能。由于家用空調(diào)器所使用的壓縮機(jī)大多為電容啟動(dòng)運(yùn)行電動(dòng)機(jī),帶載啟動(dòng)能力較差,因此無論在制冷運(yùn)行還是在制熱運(yùn)行時(shí),當(dāng)壓縮機(jī)停止工作后,必須在三分鐘后才允許重新啟動(dòng)。
2.電路設(shè)計(jì)、制作的功能和要求: 1)用6只共陰極的八段數(shù)碼管來分別顯示工作模式、風(fēng)速狀態(tài)、設(shè)定溫度和室內(nèi)溫度。為了統(tǒng)一起見,對6只八段數(shù)碼管的具體排列和工作狀態(tài)的顯示符號作如下規(guī)定:
2)用5只按鈕來分別作為啟動(dòng)/關(guān)閉鍵、工作模式鍵、風(fēng)速選擇鍵、溫度設(shè)定上升鍵和下降鍵。(此外還有1只系統(tǒng)復(fù)位按鈕,共6只) 3)上電后,自動(dòng)顯示自動(dòng)工作模式、自動(dòng)風(fēng)速檔、設(shè)定溫度27℃和實(shí)際室內(nèi)溫度,這時(shí)用戶可以對工作模式、風(fēng)速檔、設(shè)定溫度進(jìn)行設(shè)定,但只有在按下啟動(dòng)/關(guān)閉鍵后,空調(diào)器才正式開始運(yùn)行;在空調(diào)器運(yùn)行期間,若 對上述狀態(tài)進(jìn)行設(shè)定,則空調(diào)器馬上開始執(zhí)行。若關(guān)機(jī)后(非斷電)重新啟動(dòng)空調(diào)器,則空調(diào)器自動(dòng)進(jìn)入上次關(guān)機(jī)前的設(shè)定狀態(tài)。 4)用6只LED發(fā)光二極管來分別表示室內(nèi)風(fēng)速的高、中、低三檔,壓縮機(jī)、室外風(fēng)機(jī)和四通換向閥,所有發(fā)光二極管均要求用2003達(dá)林頓管或三極管放大驅(qū)動(dòng)。 5)溫度傳感器采用AT502熱敏電阻。 3.空調(diào)控制器硬件電路圖
4.硬件設(shè)計(jì)思想 1)根據(jù)任務(wù)書可知,該系統(tǒng)需要人機(jī)界面(按鍵輸入7段碼LED顯示),AD采樣,以及單片機(jī)控制部分等模塊,并且可以得到以下硬件系統(tǒng)框圖
2)各部分硬件的設(shè)計(jì) a.溫度傳感器選擇 根據(jù)任務(wù)要求我們選擇了AT502作為溫度傳感器,根據(jù)電阻分壓(如下圖左),實(shí)現(xiàn)由溫度到電壓值的轉(zhuǎn)換,因?yàn)锳T502的溫度系數(shù)比較大,經(jīng)計(jì)算當(dāng)溫度變化范圍是0-99度時(shí),IN0口的電壓范圍是0.64—3.6伏,所以就可以不用運(yùn)放,直接送到AD采樣的輸入端進(jìn)行AD采樣。
b.AD芯片的選擇 因?yàn)闇囟茸兓秶?-99度,理論上AD位數(shù)只要7位(128級)就夠了,所以系統(tǒng)采用了經(jīng)典的ADC0809(8位AD)作為AD采樣芯片。 溫度的計(jì)算公式:V=5*Rt/(R+R1+Rt) c.按鍵輸入: 因?yàn)榘存I數(shù)目不多,所以系統(tǒng)直接采用非編碼方式,直接連接單片機(jī)I/O口。 系統(tǒng)采用74HC573和ULN2003作為驅(qū)動(dòng),P0和P2作為輸出口,控制動(dòng)態(tài)顯示的LED顯示器。
e.輸出控制 任務(wù)要求用6只LED發(fā)光二極管來分別表示室內(nèi)風(fēng)速的高、中、低三檔,壓縮機(jī)、室外風(fēng)機(jī)和四通換向閥,51單片機(jī)的低電平驅(qū)動(dòng)能力較強(qiáng),LED可以直接連接單片機(jī)的I/O口。 四、軟件程序設(shè)計(jì) 1.工作模式和風(fēng)扇模式設(shè)計(jì)思想: 由系統(tǒng)要求可以列出下表:
根據(jù)上表,我們列出一系列子程序,再根據(jù)當(dāng)前狀況選擇相應(yīng)的子程序。例如在制冷模式時(shí),我們的子程序是: void work_csub() //制冷子程序 { if(compressor_delay==0&&compressor_on==1) { compressor_on=0; compressor_delay=compressor_delay_s; } else //灰色部分是實(shí)現(xiàn)壓縮機(jī)保護(hù)功能的 if(compressor_delay!=0&&compressor_on==1) compressor_block=1; //3 min protect
ext_room_fan =0; //開室外風(fēng)機(jī) valve =1; //關(guān)換向閥 work_mode_fact=1; //設(shè)實(shí)際工作模式為1(制冷) } 2.壓縮機(jī)三分鐘保護(hù)功能的實(shí)現(xiàn) 壓縮機(jī)三分鐘保護(hù)功能相對而言是程序中相對較難的的部分,在編程前提出過多種實(shí)現(xiàn)方案,最后確定了以下的設(shè)計(jì)方案: 設(shè)置一個(gè)全局變量 compressor_delay,在定時(shí)子程序的1秒定時(shí)中,發(fā)現(xiàn)如果變量compressor_delay 〉0就減一,而在壓縮機(jī)需要工作時(shí),先判斷compressor_delay是否為“0” 如果為0,則執(zhí)行壓縮機(jī)打開動(dòng)作,否則compressor_block置1,主程序發(fā)現(xiàn)compressor_block置位了,并且三分鐘時(shí)間已經(jīng)到了,就執(zhí)行壓縮機(jī)打開子程序。 相關(guān)程序流程圖如下: 3.為了能夠在關(guān)機(jī)的時(shí)候能夠自動(dòng)關(guān)閉LED顯示,用了類似于壓縮機(jī)3分鐘保護(hù)功能的處理方法,實(shí)現(xiàn)了當(dāng)系統(tǒng)處于關(guān)機(jī)狀態(tài)并且無按鍵持續(xù)7秒鐘(可設(shè))時(shí),LED顯示會(huì)自動(dòng)關(guān)閉。
五、系統(tǒng)程序流程圖 六、設(shè)計(jì)中遇到的問題及解決方法 1.在畫protel圖時(shí),我們使用網(wǎng)絡(luò)名,NET走線。但是有時(shí)候因?yàn)槭韬觯瑳] 靠在線上,從而出現(xiàn)錯(cuò)誤(要兩黑點(diǎn)載同一點(diǎn)上才算是連接上)。 2.畫原理圖時(shí),由于將一些不必要的元器件刪去后沒有及時(shí)將net網(wǎng)絡(luò)名刪去, 或者更改,致使網(wǎng)絡(luò)名成單個(gè)出現(xiàn),導(dǎo)致錯(cuò)誤。 3.將所有的錯(cuò)誤都去掉,如果有一些沒有錯(cuò)誤但被打上錯(cuò)誤標(biāo)志的連接 線用“No Error”標(biāo)示。 4.剛開始編寫的程序中,工作模式切換后,容易出現(xiàn)溫度超過調(diào)節(jié)范圍的情況。比如:通風(fēng)模式的溫度調(diào)節(jié)范圍是14~32度,而制熱模式下的溫度范圍是14~30度。當(dāng)工作模式從通風(fēng)模式轉(zhuǎn)換到制熱模式下的時(shí)候,若通風(fēng)模式的溫度是31或32度,切換到制熱模式后它的溫度仍然是31或32度,這就超出了制熱模式的溫度調(diào)節(jié)范圍,出現(xiàn)bug。 后來,我們在切換模式時(shí)做了一些改進(jìn):當(dāng)工作模式切換時(shí),程序先判斷當(dāng)前的溫度是否超出溫度調(diào)節(jié)范圍,若超出,將其設(shè)置為溫度調(diào)節(jié)范圍內(nèi)的溫度。 5.在工作模式的選擇上,原本只用了work_mode來表示四種工作模式,后來發(fā)現(xiàn)若只有work_mode,則有不能選擇制冷和通風(fēng)模式的可能。比如:使用者選擇的模式為自動(dòng),空調(diào)會(huì)根據(jù)當(dāng)前的實(shí)際溫度選擇制冷、通風(fēng)或制熱模式。假設(shè)空調(diào)自動(dòng)選擇的是通風(fēng)模式(模式2),那么無論使用者怎么按模式選擇鍵,它都將跳過制冷模式(模式1),從而無法選擇制冷模式。 我們采取的辦法是增加變量work_mode_fact,意為在自動(dòng)模式下實(shí)際執(zhí)行的工作模式。方便工作在在自動(dòng)模式的時(shí)候進(jìn)行風(fēng)速的調(diào)節(jié)。 6.一開始,我們將按鍵讀入、處理和執(zhí)行一攬子進(jìn)行,發(fā)現(xiàn)無論選擇哪種模式,壓縮機(jī)都會(huì)啟動(dòng),而后才判斷工作模式,讓它繼續(xù)工作或關(guān)閉。雖然這個(gè)時(shí)間很短,沒有影響LED的顯示,但這樣一來增加了壓縮機(jī)的損耗,也使執(zhí)行效率降低,顯然是我們不愿看到的。我們的措施如前程序設(shè)計(jì)中所提。 7. 在處理工作在自動(dòng)模式下實(shí)際工作模式選擇時(shí),使用了一下語句: if((tempr_set-temperature_get)>5) //判斷1:如果設(shè)定溫度比室溫大5度以上 work_hsub(); //選擇制熱模式 else if(temperature_get-tempr_set>0) //判斷2:如果室溫大于設(shè)定溫度 work_csub(); //采用制冷模式 else work_fsub(); //否則通風(fēng) 在調(diào)試的時(shí)候發(fā)現(xiàn)室溫大于設(shè)定溫度的時(shí)候還會(huì)繼續(xù)制熱,經(jīng)再三檢查還是沒有發(fā)現(xiàn)問題,發(fā)現(xiàn)是因?yàn)?temperature_get和tempr_set都是用的是無符號數(shù),即使temperature_get < tempr_set 在相減之后得到的是temperature_get+255-tempr_set的值, 所以判斷2修改為if((temperature_get>tempr_set)); 判斷1 則用if((tempr_set-5)>temperature_get);
七、學(xué)習(xí)心得及體會(huì) 在畫原理圖時(shí),雖然我們組成員有參加過電子設(shè)計(jì)的同學(xué),但是過于粗心,以致出了許多錯(cuò)誤,后來在同學(xué)和老師的幫助下一一改正。學(xué)習(xí)知識一定要扎扎實(shí)實(shí)的一步一步走,走捷徑、一步登天的想法是萬萬不能有的。 編程時(shí),如上所述,出現(xiàn)了很多的小錯(cuò)誤(篇幅和時(shí)間所限,我們沒有一一將其列出),甚至有時(shí)從流程上就走不通,我們不斷的進(jìn)行修改和測試,逐步完善整個(gè)程序。只有耐心、細(xì)致的工作,才使得整個(gè)程序越來越完善。 另外在整個(gè)實(shí)驗(yàn)中,我們組兩名成員相互幫助,測試硬件、編寫程序及流程圖等等,相互檢錯(cuò)、提供改進(jìn)思路,更好地完成了任務(wù)。 當(dāng)然,我們的設(shè)計(jì)還有很多需要改進(jìn)的地方,我們想在日后通過老師的指導(dǎo)、同學(xué)的幫助下,逐步使這個(gè)設(shè)計(jì)更加完美、成熟起來。
八、感謝 經(jīng)過一個(gè)星期的忙碌,本次短學(xué)期任務(wù)已經(jīng)接近尾聲,作為一個(gè)沒有實(shí)踐經(jīng)驗(yàn)的學(xué)生,難免有許多考慮不周全的地方,如果沒有老師的指導(dǎo),隊(duì)友的努力以及同學(xué)們的支持,想要完成這個(gè)設(shè)計(jì)是難以想象的。
|
|