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