基于STC單片機的無線傳感設計與數據采集系統
題 目: 基于STC單片機的無線溫控系統設計
院 (系): 測控技術與儀器
一 實驗目的 1 本實驗通過利用STC89C52單片機和nRF24L01模塊來控制DS18B20實現的無線溫度控制系統。控制通過簡單的無線通信協議,實現可靠性與功耗平衡。該系統能實現對溫度的測量,同時還可以進行溫度的設定,是可以實現遠程控制的無線溫度控制系統。 2 掌握用Altium Designer軟件繪制原理圖和PCB電路,以及電路板的制作過程(包括腐蝕,焊接,下載與調試),熟練Keil軟件環境以及單片機C代碼的編寫、調試和hex文件的生成并下載到單片機芯片內,掌握軟硬聯調技巧與方法。 二 系統分析 1、系統的概述 本實驗研究基于51單片機的無線溫度控制系統設計,以STC89C52單片機為控制核心,以DS18B20為測試器件,以LCD1602和LCD12864為顯示器件,以nRF24L01模塊為無線傳輸模塊,以直流電機和繼電器為控制溫度的器件。系統利用單總線數字溫度傳感器DS18B20采集溫度數據,由單片機進行內部分析處理,由LCD1602和LCD12864顯示數據(如果溫度大于設定值則驅動直流電機模擬降溫環境,如果溫度低于設定溫度則啟動繼電器),從機采集到的溫度數據和控制狀態可以通過nRF24L01模塊發送到主機顯示出來,主機可以通過按鍵來控制溫度情況。 2、STC89C52單片機介紹 2.1 芯片簡介 STC89C52是一種帶8K字節閃爍可編程可檫除只讀存儲器(FPEROM-Flash Programable and Erasable Read Only Memory)的低電壓高性能COMOS8的微處理器,俗稱單片機。該器件采用ATMEL高密度非易失存儲器制造技術制造,與工業標準的MCS51指令集和輸出管腳相兼容。STC89C52RC單片機是宏晶科技推出的新一代高速/低功耗/超強抗干擾的單片機,指令代碼完全兼容傳統8051單片機,12時鐘/機器周期和6時鐘/機器周期可以任意選擇。 2.2 主要特性如下: - 增強型8051單片機,6時鐘機/器周期和12時鐘/機器周期可以任意選擇,指令代碼完全兼容傳統8051。
- 工作電壓:5.5V~3.3V(5V單片機)/3.8V~2.0V(3V單片機)。
- 工作頻率范圍:0~40MHz相當于普通8051的0~80MHz實際工作頻率可達48MHz。
- 用戶應用程序空間為8K字節。
- 片上集成512字節RAM。
- 通用I/O口32個,復位后為P1/P2/P3/P4是準雙向口/弱上拉,P0口是漏極開路輸出,作為總線擴展用時,不用加上拉電阻,作為I/O口用時需加上拉電阻。
- ISP(在系統可編程)/IAP(在應用可編程),無需專用編程器,無需專用仿真器,可通過串口(RxD/P30,TxD/P31)直接下載用戶程序,數秒即可完成一片。
- 具有EEPROM功能。
- 具有看門狗功能。
- 共3個16位定時器/計數器即定時器T0/T1/T2。
- 外部中斷4路,下降沿中斷或低電平觸發電路,PowerDown模式可由外部中斷低電平觸發中斷方式喚醒。
- 通用異步串行口(UART)還可用定時器軟件實現多個UART。
- 工作溫度范圍:-40~+85℃(工業級)/0~75℃(商業級)。
- PDIP封裝。
2.3 STC89C52RC單片機的工作模式: 1.掉電模式:典型功耗<01μA,可由外部中斷喚醒,中斷返回后,繼續執行原程序。 2.空閑模式:典型功耗2mA。 3.正常工作模式:典型功耗4Ma~7mA。 4.掉電模式可由外部中斷喚醒,適用于水表、氣表等電池供電系統及便攜設備。 3.1、DS18B20簡介 DS18B20為單總線數字溫度傳感器。單總線即只有一根數據線,系統中的數據交換,控制都由這根線完成。單總線通常要求外接一個約為4.7K—10K 的上拉電阻,這樣,當總線閑置時其狀態為高電平。 3.2、DS18B20的特點 DS18B20 單線數字溫度傳感器,即“一線器件”,其具有獨特的優點: (1)采用單總線的接口方式 與微處理器連接時 僅需要一條口線即可實現微處理器與 DS18B20 的雙向通訊。單總線具有經濟性好,抗干擾能力強,適合于惡劣環境的現場溫度測量,使用方便等優點,使用戶可輕松地組建傳感器網絡,為測量系統的構建引入全新概念。 (2)測量溫度范圍寬,測量精度高DS18B20 的測量范圍為-55℃~+125℃ ; 在-10~+85°C 范圍內,精度為±0.5°C。 (3)在使用中不需要任何外圍元件。 (4)持多點組網功能多個 DS18B20 可以并聯在惟一的單線上,實現多點測溫。 (5)供電方式靈活 DS18B20 可以通過內部寄生電路從數據線上獲取電源。因此,當數據線上的時序滿足一定的要求時,可以不接外部電源,從而 使系統結構更趨簡單,可靠性更高。 (6)測量參數可配置 DS18B20 的測量分辨率可通過程序設定 9~12 位。 (7)負壓特性電源極性接反時,溫度計不會因發熱而燒毀,但不能正常工作。 (8)掉電保護功能 DS18B20 內部含有 EEPROM ,在系統掉電以后,它仍可保存分辨率及報警溫度的設定值。 DS18B20 具有體積更小、適用電壓更寬、更經濟、可選更小的封裝方式,更寬的電壓適用范圍,適合于構建自己的經濟的測溫系統,因此也就被設計者們所青睞。 3.3、DS18B20溫度轉換原理 DS18B20內部結構主要由4部分組成:64 位ROM、溫度傳感器、非揮發的溫度報警觸發器TH和TL、配置寄存器。ROM中的64位序列號是出廠前被光刻好的,它可以看作是該DS18B20的地址序列碼,每個DS18B20的64位序列號均不相同。64位ROM的排的循環冗余校驗碼(CRC=X^8+X^5+X^4+1)。 ROM的作用是使每一個DS18B20都各不相同,這樣就可以實現一根總線上掛接多個DS18B20的目的。 
DS18B20中的溫度傳感器完成對溫度的測量,用16位二進制形式提供,形式表達,其中S為符號位。
例如:+125℃的數字輸出為07D0H(正溫度 直接吧16進制數轉成10進制即得到溫度值),-55℃的數字輸出為FC90H(負溫度把得到的16進制數取反后加1再轉成10進制數)。3.4、DS18B20的管腳排列 1.GND為電源地; 2.DQ為數字信號輸入/輸出端; 3.VDD為外接供電電源輸入端 4、nRF24L01的介紹 4.1、nRF24L01簡介 nRF24L01是一款新型單片射頻收發器件,工作于2.4 GHz~2.5 GHz ISM頻段。內置頻率合成器、功率放大器、晶體振蕩器、調制器等功能模塊,并融合了增強型ShockBurst技術,其中輸出功率和通信頻道可通過程序進行配置。nRF24L01功耗低,在以-6 dBm的功率發射時,工作電流也只有9 mA;接收時,工作電流只有12.3 mA,多種低功率工作模式(掉電模式和空閑模式)使節能設計更方便。 4.2、nRF24L01主要特性: GFSK調制;硬件集成OSI鏈路層;具有自動應答和自動再發射功能;片內自動生成報頭和CRC校驗碼;數據傳輸率為l Mb/s或2Mb/s;SPI速率為0 Mb/s~10 Mb/s;125個頻道;與其他nRF24系列射頻器件相兼容;QFN20引腳4 mm×4 mm封裝;供電電壓為1.9 V~3.6 V。 4.3、工作原理 發射數據時,首先將nRF24L01配置為發射模式:接著把地址TX_ADDR和數據TX_PLD按照時序由SPI口寫入nRF24L01緩存區,TX_PLD必須在CSN為低時連續寫入,而TX_ADDR在發射時寫入一次即可,然后CE置為高電平并保持至少10μs,延遲130μs后發射數據;若自動應答開啟,那么nRF24L01在發射數據后立即進入接收模式,接收應答信號。如果收到應答,則認為此次通信成功,TX_DS置高,同時TX_PLD從發送堆棧中清除;若未收到應答,則自動重新發射該數據(自動重發已開啟),若重發次數(ARC_CNT)達到上限,MAX_RT置高,TX_PLD不會被清除;MAX_RT或TX_DS置高時,使IRQ變低,以便通知MCU。最后發射成功時,若CE為低則nRF24L01進入空閑模式1;若發送堆棧中有數據且CE為高,則進入下一次發射;若發送堆棧中無數據且CE為高,則進入空閑模式2。 接收數據時,首先將nRF24L01配置為接收模式,接著延遲130μs進入接收狀態等待數據的到來。當接收方檢測到有效的地址和CRC時,就將數據包存儲在接收堆棧中,同時中斷標志位RX_DR置高,IRQ變低,以便通知MCU去取數據。若此時自動應答開啟,接收方則同時進入發射狀態回傳應答信號。最后接收成功時,若CE變低,則nRF24L01進入空閑模式1。 三硬件電路分析 1、硬件電路概述 本實驗的基于單片機的溫度控制系統由5部分構成:電源穩壓模塊,溫度采集模塊,顯示模塊,控制模塊,無線模塊。電源穩壓模塊是將單片機供電的5V電源通過穩壓電路變為3.3V。其中穩壓芯片采用的是AMS1117-3.3V的穩壓芯片。溫度采集模塊用的是數字溫度傳感器DS18B20與單片機直接相連,不需要A/D轉換模塊,由單片機控制DS18B20采集被測對象的溫度,轉換成16位數字信號,通過輸入輸出引腳直接傳送至單片機的I/O口P1.7。控制部分為STC89C52單片機,由其控制DS18B20采集溫度數據,經過單片機程序處理之后傳輸到顯示模塊。顯示模塊有LCD1602液晶和LCD12864液晶顯示經過單片機處理過的數據,顯示在液晶上。無線傳輸模塊采用的是兩片nRF24L01芯片,電壓是3.3V,半雙工通信。 該系統具有整體性能可靠,溫度測量范圍大(約為-55℃~+125℃),精度高(理論測溫的分辨率為0.0625℃,實際上實現精度為0.01℃),易于擴展和系統穩定性好的優點。 
圖3 電源穩壓模塊 如圖3是電源穩壓模塊,電源穩壓模塊是將單片機供電的5V電源通過穩壓電路變為3.3V。其中穩壓芯片采用的是AMS1117-3.3V的穩壓芯片。 AMS1117是一個低漏失電壓調整器,它的穩壓調整管是由一個PNP驅動的NPN管組成的,漏失電壓定義為: VDROP = VBE+ VSAT。 AMS1117有固定和可調兩個版本可用,輸出電壓可以是:1.2V,1.5V,1.8V,2.5V,2.85V,3.0V,3.3V,和5.0V。片內過熱切斷電路提供了過載和過熱保護,以防環境溫度造成過高的結溫。 為了確保AMS1117的穩定性,對可調電壓版本,輸出需要連接一個至少22μF的鉭電容。對于固定電壓版本,可采用更小的電容,具體可以根據實際應用確定。通常,線性調整器的穩定性隨著輸出電流增加而降低。 3、溫度采集模塊 
圖4 DS18B20溫度傳感器檢測電路如圖4是溫度采集模塊,DS18B20溫度傳感器檢測電路,溫度采集通過數字化的溫度傳感器DS18B20,通過QD接向單片機的P1.7口。 4、顯示模塊 
圖5 從機1602液晶顯示電路如圖5,是從機的1602液晶顯示電路,1602是一款操作比較簡單,適用于只有數字和字母的顯示,D0~D7進行數據的傳輸,RS,RW是數據讀寫的控制位,E是使能端。 
圖6 主機LCD12864的液晶顯示電路如圖6,是主機的LCD12864液晶顯示電路,LCD12864相比于LCD1602更加高端一點,不但可以顯示數字,字母還可以顯示漢字,符號等。 5、控制模塊和無線模塊。 
圖7 單片機的最小系統和無線模塊電路如圖7,是單片機最小系統和無線模塊。單片機最小系統包括STC89C52單片機,復位電路和晶振電路,他是本實驗系統的控制系統,進行命令和數據的傳輸和控制。例如溫度采集數據,顯示數據,無線的發送和接受數據,按鍵采集等。其中還有nRF24L01模塊和單片機的接口電路。 晶振控制電路:晶振采用的是11.0592MHZ的標準晶振。接入單片機的XTAL1、XTAL2。 圖8 按鍵電路 如圖8是按鍵電路,給I/O口低電平的時候開關導通執行相關的操縱。 
圖9 繼電器電路 如圖9,是繼電器電路,他用PNP三極管控制繼電器的打開,如圖中PNP三極管相當于一個開關電路,因為三極管工作在在飽和區(如圖10)。 如圖10 三極管輸出特性曲線 二極管作用:二極管的主要特性是單向導電性,也就是在正向電壓的作用下,導通電阻很小;而在反向電壓作用下導通電阻極大或無窮大。正因為二極管具有上述特性,無繩電話機中常把它用在整流、隔離、穩壓、極性保護、編碼控制、調頻調制和靜噪等電路中。本實驗用于消耗線圈的反向電流。 
圖11 直流電機電路如圖11,使用三極管驅動直流電機。這是一個簡單的單向驅動電路,沒有H橋復雜,不可以正反轉,只是用來模擬溫度可以被加熱和降溫。用P2.1口控制電機。 四 軟件系統 本實驗的軟件部分包括兩部分:從機部分和主機部分。 
主機系統程序主要包括:主程序,按鍵控制子程序,溫度顯示子程序,無線數據發送接受子程序等。圖11 溫度控制系統主機程序流程圖 從機系統程序主要包括:主程序,讀出溫度子程序,溫度顯示子程序,無線數據發送接受子程序等。 下面看一下程序流程圖。 主機系統程序流程圖(如圖11): 主機開機之后會顯示從機發來的溫度,并且檢測從機的工作狀態,從機采集的溫度會一直通過nRF24L01模塊進行傳輸。當有按鍵信號發出時,主機單片機開始進行判斷,檢測到是設定從機溫度的情況,開始進行從機溫度設定,然后開始檢測設定溫度和測試到的溫度是否相等,如果相等了,就發送正常指令,從機停止加熱或者降溫,如果不匹配,就繼續進行加熱或者降溫,直道達到設定要求。如果檢測到的溫度和設定溫度不同,可以通過按鍵進行操作,通過nRF24L01發送模塊控制從機狀況。 從機系統程序流程圖(如圖12): 圖12 溫度控制系統從機程序流程圖 從機開機之后DS18B20開始進行數據的采集,單片機經過數據處理,顯示在LCD1602上,并且同時通過nRF24L01模塊不斷的發送溫度數據,傳送給主機,進行顯示和其他操作。同時會檢測主機是否通過nRF24L01模塊發送過來按鍵信號,如果沒有信號,繼續發送數據,檢測按鍵。如果檢測到有主機發送的信號,就開始進行相應的操作。降溫,加熱和正常工作。 五 實驗結果 單片機接口實驗我完成了自己想要實現的功能,進行無線控制溫度的檢測,數據的發送,按鍵信號的傳遞,以及溫度的顯示。 六 總結與體會 這次接口實驗通過借鑒別人和自己創新,我學到了很多東西,以前大學的時候自己也做過一些東西,但是不系統,不完整,有些軟件或者硬件上有些問題也是一知半解,不求甚解,通過這次完整的操作,我懂得自己好多不好的習慣,也學會怎么做一個項目,雖然還欠缺很多,但是已經看到自己的進步。剛來桂電時,感覺自己什么都不會,在做接口實驗時,許多師兄和同學給我很多無私的幫助。接口實驗雖然不是那么順利,但是通過本次實驗學到了很多東西,這也是學習的過程。 以前不太會做PCB電路板,通過這次設計電路板,才對電路板有了很好的認識,因為電路板這個東西,對我們是很有用的,因為以后我們就是和這個東西打交道。其次是知道了怎么去設計電路板,雖然設計出的板子比較簡單,但是也感覺到其實設計電路板也不像想象中那么困難,只要最開始設計好原理圖,后面的一切就交給計算機去設計。不過從實驗中中也體會到,仔細認真,對我們理工科學生是相當重要,因為在封裝的時候任何一個小錯誤,都會造成后面設計電路板不成功。還有就是不能太急躁,最開始想很快做完,結果做的后面都要重做,設計這個東西,也要循環漸進。 還有就是軟件,由于在大學的時候只是略微接觸VC、Keil,真正做出的東西也比較少,機會也不多,所以剛開始的時候進度比較慢,很多不太理解的,但是通過這次我感覺到軟件的強大,我以后一定多在這些方面下功夫,不斷提高自己,成為大神。 八 謝辭 首先要感謝老師給予這樣一個鍛煉自己的機會,通過這次實驗,我完整的學習了一個系統的設計。在本次試驗過程中,遇到了很多困難和問題,除了自己獨立解決之外,也得到了各位老師,師兄和師姐的指導與幫助,還有同學們的耐心講解與討論,給了我很大的幫助與支持。
完整的Word格式文檔51黑下載地址:
|