蔬菜大棚的智能控制系統(tǒng)
一、 要求和意義 1、 要求 蔬菜大棚的智能控制系統(tǒng)的設(shè)計,使用51單片機(jī)和無線通信模塊完成以下基本功能: 使用溫度傳感器測量大棚溫度; 使用兩位數(shù)碼管進(jìn)行動態(tài)顯示; 超過35度自動打開風(fēng)機(jī)(用led燈模擬),低于28度關(guān)閉風(fēng)機(jī)。 擴(kuò)展功能: 利用光敏傳感器檢測,實現(xiàn)大棚外路燈的自動控制,白天關(guān)燈,晚上亮燈(節(jié)點模塊); 紅外遙控手動控制風(fēng)機(jī)和路燈(上位機(jī)模塊)。 可選用的器件與元件:(具體實物要根據(jù)學(xué)校給出的作為標(biāo)準(zhǔn)) STC89C51單片機(jī)、nRF24L01模塊各兩塊,18B20、光敏電阻各一個,共陽兩位一體數(shù)碼管一塊,電阻、電容、三極管、LED燈、按鍵任選。 學(xué)生2人一組,獨立完成電路分析和設(shè)計,并完成系統(tǒng)調(diào)整和測試。每個人必須能完成不同的功能,最后組成一個總系統(tǒng),并且做成電路實物系統(tǒng)。
2、 意義 根據(jù)需要選學(xué)參考書,查閱手冊,圖表和文獻(xiàn)資料的自學(xué)能力,通過獨立思考﹑深入鉆研有關(guān)問題,學(xué)會自己分析解決問題的方法。 利用所學(xué)過的最基本的MSC51單片機(jī)和無線電通信知識,通過設(shè)計計算﹑元件選取﹑電路板制作調(diào)試等環(huán)節(jié),初步掌握工程設(shè)計的技能。 掌握常用儀表的正確使用方法,學(xué)會簡單電路的實驗調(diào)試和整機(jī)指標(biāo)測試方法,使學(xué)生鞏固和加深對數(shù)字邏輯電路的理論知識,鍛煉學(xué)生的動手能力。 了解與課程有關(guān)的電子電路以及元器件工程技術(shù)規(guī)范,能按課程設(shè)計任務(wù)書的技術(shù)要求,編寫設(shè)計說明,能正確反映設(shè)計和實驗成果,能正確繪制電路圖。 培養(yǎng)嚴(yán)謹(jǐn)?shù)墓ぷ髯黠L(fēng)和科學(xué)態(tài)度,能夠逐步建立正確的生產(chǎn)觀點,經(jīng)濟(jì)觀點和全局觀點。 二、硬件電路設(shè)計 1、仿電路設(shè)計 根據(jù)課程設(shè)計的要求,初步?jīng)Q定蔬菜大棚的智能系統(tǒng)框圖,如圖一: 根據(jù)圖一的大概框架,使用Proteus仿真軟件進(jìn)行系統(tǒng)的仿真,驗證電路的可靠性和可行性。 仿真電路如圖二所示: 仿真圖說明: 根據(jù)參考器件仿真電路MCU選用STC89C52單片機(jī),如上圖所示,查閱資料[1]可以知道該單片機(jī)的最小系統(tǒng),包括:時鐘電路(這次仿真電路使用11.0592M晶振)、復(fù)位電路等,其中P0八個I/O口要使用10k上拉電阻才能驅(qū)動數(shù)碼管的段位。外部電路有:數(shù)碼管電路(另一組員負(fù)責(zé))、溫度傳感器電路(本人負(fù)責(zé))、抽風(fēng)機(jī)電路(用LED燈代替)。所有程序?qū)⒃谙旅嬲f明。 指導(dǎo)老師的檢驗: 我們這組的仿真電路已經(jīng)成功了,但是這是理想狀態(tài)下的仿真,與實際電路還有一些出入,本人負(fù)責(zé)的電路中第一個問題是溫度傳感器,在實際電路中需要使用上拉電阻,電阻阻值范圍是4.7k—20K;第二個問題是抽風(fēng)機(jī)電路,雖然是一個LED燈作為代替,但是在實際電路中要使用一個限流電阻,根據(jù)這兩個問題在實際電路設(shè)計的時候要加上。 2、器件與元件補(bǔ)充說明 根據(jù)設(shè)計需要我們將使用的是STC89C52單片機(jī),但是在學(xué)校領(lǐng)取的是STC12C5A60S2單片機(jī)。查詢資料STC官方資料[2],可以比較出兩種單片機(jī)的不同點和相同點,不同點:復(fù)位電路更加簡單,P0將不用上拉電阻,并且P1有AD轉(zhuǎn)換功能,這樣可以使用在光敏傳感器檢測中擴(kuò)展功能色設(shè)計。相同點是電源、地、Rx、Tx引腳位置相同,這樣可以使用51單片機(jī)的開發(fā)板進(jìn)行程序的焼寫。 3、電路設(shè)計 1)、STC12C5A60S2單片機(jī)最小系統(tǒng)如下圖所示: 說明:STC12C5A60S2單片機(jī)的引腳封裝與STC89C52單片機(jī)的引腳封裝一樣,所以使用STC89C52單片機(jī)原理圖。所以上圖部分引腳的標(biāo)注不正確,但是不影響其封裝的使用,兩種單片機(jī)都是使用一樣的封裝。復(fù)位電路的設(shè)計是根據(jù)STC12C5A60S2單片機(jī)技術(shù)文檔[2]所描述的來設(shè)計,使用一個10uF的電解電容和1k的電阻組成;晶振電路使用兩個33uf的瓷片電容和一個11.0592M頻率的晶振組成。
2)、溫度檢測模塊,如下圖所示: 說明:溫度傳感器使用的是DS18b20,其封裝是TO-92封裝,數(shù)據(jù)傳輸引腳使用一個4.7K的電阻作為上拉電阻,并且跟單片機(jī)的P3^7接口相連接。DS18B20的數(shù)字溫度計提供9至12位(可編程設(shè)備溫度讀數(shù))。由于DS18B20是一條口線通信,所以與DS18B20只有一個一條口線連接。為讀寫以及溫度轉(zhuǎn)換可以從數(shù)據(jù)線本身獲得能量,不需要外接電源。因為每一個DS18B20的包含一個獨特的序號,多個ds18b20s可以同時存在于一條總線。
3)、抽風(fēng)機(jī)模塊和其他模塊,如下圖所示: 說明:在抽風(fēng)機(jī)模塊中,使用一個LED燈代替抽風(fēng)機(jī),這樣就要使用一個470歐電阻個LED燈串聯(lián)使用,并且跟單片機(jī)的P3^5引腳連接如上圖所示。燈與光敏傳感器組成的電路時擴(kuò)展部分設(shè)計,具體電路如上圖所示。
4)、電源模塊,如下圖所示: 說明:電源模塊在系統(tǒng)設(shè)計中是一個很重要的部分,在這個模塊中,因為外接電源是5v電壓,所以在本系統(tǒng)設(shè)計中主要是加入濾波跟開關(guān)部分,濾波電路由一個104瓷片電容跟一個10uf電解電容組成。
5)、調(diào)試電路模塊,如下圖所示: 說明:系統(tǒng)的調(diào)試是一個很重要的步驟,所以要加上調(diào)試接口,這樣就不用經(jīng)常拔插單片機(jī),方便以后的調(diào)試系統(tǒng)使用。本接口主要的部分是電源引腳和P3^0引腳、P3^1引腳,這四個引腳都是為了焼寫程序做準(zhǔn)備,其他引腳作為附加和固定作用。
二、 程序設(shè)計 1)、溫度傳感器子程序 說明:程序的設(shè)計使用KeiluVision4軟件,本人負(fù)責(zé)的是DS18b20溫度傳感器[3]對溫度的檢測和溫度的讀取部分。本人將關(guān)于溫度傳感器有關(guān)的子程序做成一個頭文件來使用,具體的程序流程,如下圖所示。在溫度讀取上,直接在頭文件里就做數(shù)據(jù)的處理,轉(zhuǎn)換成十進(jìn)制兩位數(shù),轉(zhuǎn)換語句如下:
a=ReadOneChar(); b=ReadOneChar(); temp=b; temp<<=8; temp=temp|a;//將讀取到的兩個八位二進(jìn)制數(shù)據(jù)合并 f_temp=temp*0.0625; //計算出溫度,帶小數(shù)點,16位分辨率是0.0625 temp=f_temp+0.5; //四舍五入,取整數(shù)如實際溫度是11.6°,將//顯示12°
上面的轉(zhuǎn)換過程能夠在仿真時正確使用。
2)、抽風(fēng)機(jī)子程序流程圖 說明:首先是對溫度的處理一次,然后使用if語句進(jìn)行對溫度的判斷,如果溫度大于35°就打開抽風(fēng)機(jī);如果溫度小于28°就關(guān)閉抽風(fēng)機(jī)。在這就有一個數(shù)據(jù)段是沒有處理的,就是溫度在28°到35°這一段,根據(jù)實際分析可以做出處理:當(dāng)溫度是有35°以上開始下降的,下降到35°不用關(guān)閉抽風(fēng)機(jī),一直下降到28°才關(guān)閉抽風(fēng)機(jī),這樣有利于對溫度的下降。反之當(dāng)溫度上升到35°才開始打開抽風(fēng)機(jī)。
3)、主程序流程圖 說明:主程序是一個大循環(huán),使用的while語句處理,在主函數(shù)中,首先讀取溫度,然后是溫度的顯示,最后是抽風(fēng)機(jī)子函數(shù)的處理。
四、調(diào)試記錄 1、調(diào)試前的準(zhǔn)備 在調(diào)試之前就是對硬件的處理,首先確保PCB電路板要設(shè)計正確,PCB板的制作要符合電磁兼容性(EMC)原則;然后是電子元件必須正確焊接;接著使用萬用表檢查電路是否短路,焊接是否合格,檢查是否有斷路、虛焊的情況;最后把程序下載到單片機(jī)中,并接到電路板中。 2、上電調(diào)試過程 在接電源之前,要確保電源的正負(fù)極接正確,開關(guān)是否在正確的位置。根據(jù)實際情況我們是使用分模塊調(diào)試的方法進(jìn)行對電路的調(diào)試。首先是數(shù)碼管顯示的調(diào)試,這部分是另一位組員負(fù)責(zé),在這里不作詳細(xì)說明。 在調(diào)試好數(shù)碼管,使之能夠正常顯示后,本人開始對溫濕度傳感器模塊進(jìn)行調(diào)試,下面是本人的詳細(xì)調(diào)試過程: 本人將仿真使用過的程序把它焼寫進(jìn)單片機(jī),觀察數(shù)碼管時能夠正常顯示出當(dāng)前的溫度,發(fā)現(xiàn)數(shù)碼管不能正常顯示,顯示出兩個0。 首先,檢查是否是硬件的問題,因為這個模塊使用的元件比較少,只有一個上拉電阻和一個傳感器,首先檢查上拉電阻是否使用正確,這個電阻的阻值是4.7k,正常使用時可以的;然后檢查溫度傳感器的引腳是否接正確,實際上沒問題;最后檢查溫度傳感器是否不能工作,在這個過程本人編寫了一個串口溫度檢測程序,在上位機(jī)上測試發(fā)現(xiàn)PC機(jī)能夠正常顯示出溫度,說明溫度傳感器沒有損壞,能夠正常工作;在這里排除硬件的問題。 然后,檢查是否是單片機(jī)的問題,因為對于溫度處理,全部是在溫度傳感器這個頭文件中。程序是在STC12C5A60S2單片機(jī)中運(yùn)行的,而仿真時使用的單片機(jī)是STC89c52單片機(jī),也許兩者有一些不同的地方,查閱STC12C5A60S2單片機(jī)的技術(shù)文檔發(fā)現(xiàn),該單片機(jī)的運(yùn)行頻率比較高,在讀取溫度上可能不能正常讀取,所以要利用時鐘分頻控制寄存器進(jìn)行時鐘分頻,從而使單片機(jī)在較低頻率下工作,設(shè)置如下:
sfr CLK_DIV = 0x97; //定義時鐘分頻控制寄存器地址 CLK_DIV = 0x03;//(外部晶振時鐘或內(nèi)部RC振蕩時鐘)/8
再次,焼寫改寫過的程序,依然不能正常顯示溫度。 接著,在排除單片機(jī)的問題之后,開始對程序的檢查是否正確。主要是在頭文件中找問題,可能的問題就是在溫度的轉(zhuǎn)換過程中出現(xiàn)錯誤,仔細(xì)分析在處理溫度的程序,發(fā)現(xiàn)本人在主函數(shù)處理的溫度主要是整數(shù)部分,而小數(shù)點之后的數(shù)據(jù)是沒有讀取的,在這里本人將在頭文件的子程序中轉(zhuǎn)換和讀取四位數(shù)據(jù),包括兩位整數(shù)和兩位小數(shù),在主程序中只顯示整數(shù)部分。在a和b讀取溫度之后,就讓程序的處理如下:
//傳感器返回值除16得實際溫度值 //為了得到2位小數(shù)位,先乘100,再除16,考慮整型數(shù)據(jù)長度, //技巧處理后先乘25,再除4,除4用右移實現(xiàn) t =(b*256+a)*25; return( t >> 2 );
3)、最后再次焼寫改寫后的程序進(jìn)單片機(jī),就可以得到正常的溫度了,并且能夠正常工作。
4)、我們這組準(zhǔn)備做的擴(kuò)展模塊是光敏對電燈的控制,我們的計劃是使用該單片機(jī)的P1 IO口進(jìn)行八位的AD轉(zhuǎn)換,通過測量經(jīng)過光敏電阻的不同電壓來控制電燈的亮跟滅。由于在電路設(shè)計上的缺陷,不能正常測量出經(jīng)過光敏電阻的電壓,最后不能成功。因為在AD轉(zhuǎn)換引腳上的信號輸入,沒有加上濾波電容和一個分壓電阻,所以不能正常工作。這是我們感到遺憾的一個地方
。 調(diào)試時間
| 調(diào)試步驟
| 調(diào)試結(jié)果
| 分析結(jié)果
| 解決方法
| 結(jié)論
| 2014年3月25日
| 調(diào)試前硬件電路檢查
| 發(fā)現(xiàn)短路和斷路的布線
| 造成電路板不能正常工作
| 認(rèn)真檢查原理圖和用萬用表檢查電烙鐵電焊位置
| 在電焊的時候要注意電路走線是否正確,焊盤之間是否短路
| 2014年3月25日
| 數(shù)碼管模塊調(diào)試(另一組員負(fù)責(zé))
| 無
| 無
| 無
| 無
| 2014年3月25日
| DS18b20模塊調(diào)試
| 不能正常顯示溫度,只顯示00
| 1、硬件電路問題
| 1、再次檢查硬件電路和上拉電阻是否使用正確
| 在模塊調(diào)試過程中,要一步步來調(diào)試排除問題,通過分析問題,找出最優(yōu)的方案來得出實驗的結(jié)果。
| 2、新單片機(jī)與仿真用的單片機(jī)有性能差別;
| 2、在程序中加上降低工作頻率的代碼
| 3、溫度傳感器損壞;
| 3、使用開發(fā)板測試溫度傳感器是否正常工作,可以正常使用
| 4、程序出現(xiàn)錯誤
| 4、修改DS18b20頭文件,讀取全部溫度位數(shù)
| 2014年3月25日
| 抽風(fēng)機(jī)模塊(LED燈代替)
| 不能正常亮
| 1、硬件電路問題;
| 1、用萬用表檢查硬件電路
| 在用萬用表檢查電路是發(fā)現(xiàn)有斷路的現(xiàn)象,最后檢查是焊盤出現(xiàn)虛焊的原因,解決后再次用程序測試,LED燈可以正常顯示
| 2、程序出問題
| 2、編寫測試程序
|
五、課程設(shè)計體會 作為一名通信工程的大三學(xué)生,單片機(jī)課程設(shè)計是十分有意義的,而且是十分必要的。在已度過的大學(xué)時間里,我們大多數(shù)接觸的是專業(yè)課。我們在課堂上掌握的僅僅是專業(yè)課的理論知識,如何去鍛煉我們的實踐能力?如何把我們所學(xué)的專業(yè)基礎(chǔ)課理論知識運(yùn)用到實踐中去呢?類似的課程設(shè)計就為我們提供了良好的實踐平臺。 在這次的單片機(jī)課程實際過程中,我們這組從開始到調(diào)試結(jié)束經(jīng)過了5個星期的時間,而且擴(kuò)展模塊沒有完成,雖然一開始就計劃好要做光敏電阻那一部分,最后還是未能完成,這是一個小小的遺憾。主要問題是在硬件設(shè)計時就沒有好好考慮擴(kuò)展部分電路問題,導(dǎo)致那一部分簡單電路不能正常工作。從這里可以看出考慮問題的水平,以及后續(xù)問題處理能力還有待提高。 我們通過查閱大量有關(guān)資料,并在小組中互相討論,交流經(jīng)驗和自學(xué),若遇到實在搞不明白的問題就會及時請教同學(xué)和老師,使自己學(xué)到了不少知識,也經(jīng)歷了不少艱辛,但收獲同樣巨大。 通過這次課程設(shè)計發(fā)現(xiàn)了自身存在的不足之處,雖然感覺理論上已經(jīng)掌握,但在運(yùn)用到實踐的過程中仍有意想不到的困惑,經(jīng)過一番努力才得以解決。這也激發(fā)了今后努力學(xué)習(xí)的興趣,這將對我以后的學(xué)習(xí)產(chǎn)生積極的影響
|