蔬菜大棚的智能控制系統
一、 要求和意義 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)、溫度傳感器子程序 說明:程序的設計使用KeiluVision4軟件,本人負責的是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個星期的時間,而且擴展模塊沒有完成,雖然一開始就計劃好要做光敏電阻那一部分,最后還是未能完成,這是一個小小的遺憾。主要問題是在硬件設計時就沒有好好考慮擴展部分電路問題,導致那一部分簡單電路不能正常工作。從這里可以看出考慮問題的水平,以及后續問題處理能力還有待提高。 我們通過查閱大量有關資料,并在小組中互相討論,交流經驗和自學,若遇到實在搞不明白的問題就會及時請教同學和老師,使自己學到了不少知識,也經歷了不少艱辛,但收獲同樣巨大。 通過這次課程設計發現了自身存在的不足之處,雖然感覺理論上已經掌握,但在運用到實踐的過程中仍有意想不到的困惑,經過一番努力才得以解決。這也激發了今后努力學習的興趣,這將對我以后的學習產生積極的影響
|