陳敏,孟立凡,王華斌
(中北大學電子測試技術國家重點實驗室 信息與通信工程學院 山西 太原 030051)
目前許多場合都要對溫度進行監測和控制。比如現代電力系統向著高電壓大機組、大容量的方向發展,對電力系統供電可靠性的要求越來越高,由于絕大多數的電力設備長期在高電壓、大電流和滿負荷的條件下運行,導致熱量集結加劇,如果不對溫度的變化采取有效的監測措施,將會危及電力設備的安全運行[1-4]。
基于以上背景,本文提出了一種基于AT89C52單片機的數據采集及無線收發系統的設計方法。無線收發部分,采用挪威NordicVLSI公司推出的NRF905單片射頻收發器實現數據的無線傳輸,使得數據采集更加具有實時性。
該系統硬件結構由少量的外部設備、無線數據傳輸模塊,以及供電電路組成。無線數據傳輸模塊基于低功耗單片射頻收發芯片NRF905,采用ATMEL公司的8位通用微處理器AT89C52為主處理芯片,完成數據的處理和控制。系統結構如圖1 所示。

圖1 系統總體框圖
DS18B20內部結構主要由4部分組成:64位光刻ROM,溫度傳感器,非揮發的溫度報警觸發器TH和TL,高速暫存器。64位光刻ROM是出廠前被光刻好的,它可以看作是該DS18B20的地址序列號。不同的器件地址序列號不同。在多點測量的時候,需要讀取它相對應的序列號,才能正確的讀取相應的溫度[5]。
由于NRF905需要3.3V的電壓供電,而市場上直接提供3V左右電壓的適配器價格比5V電壓的適配器貴,同時5V適配器種類較多,所以考慮電壓轉換。由于適配器輸出的電壓含有較多的雜質成分,所以要有相應的濾波電路。本課題我們采用ASM1117-3.3穩壓模塊和一些簡單元器件組成的電路進行供電。
無線收發部分采用挪威NordicVLSI公司推出的nRF905單片射頻收發器,它可以自動產生前導碼和CRC校驗碼,可以很容易通過SPI接口進行編程配置。
NRF905的工作模式由TRX_CE、TX_EN、PWR_UP三個引腳的設置來決定,見表1。工作模式決定了模塊的工作狀態,在發送和接收的時候需要設定好[6-7]。

表1 nRF905的工作模式
單片機的單低電平已經可以控制數碼管的亮滅。但在動態顯示時,數碼管的亮度比較暗。并且即使掃描頻率很高,仍然有微小的閃動現象。這是因為單片機一般為+5V的TTL電平,點亮數碼管一般需要較大的電流。所以,我們需要將電源信號放大,即驅動。本設計采用三極管作為放大器件,它即可以起到放大電流的作用,又可以起到開關的作用,即某一時刻打開或關閉數碼管,形成動態顯示。接通電路實驗后發現,數碼管亮度適合,因此不需要接限流電阻。
2.1.1 DS18B20初始化
DS18B20的初始化始于單片機發送一個復位脈沖,即單片機將總線拉低,持續480~960μs后將總線拉高,釋放總線進入接收狀態,之后DS18B20開始控制總線,在檢測到總線的上升沿之后,等待15~60μs,DS18B20發送存在脈沖,將總線拉低,持續60~240μs,在區間(60~240μs)區間內釋放總線,然后由單片機控制總線進行延時操作,待DS18B20檢測到總線上升沿的480μs以后,初始化結束。
2.1.2 DS18B20的寫操作
單片機將總線拉低1μs后,就產生寫間隙,總線開始拉低的15μs內單片機將所要寫的位送到總線上,DS18B20在之后的15~45μs內對總線采樣,若為低電平,寫入的位是“0”;若為高電平,寫入的位是“1”,寫“0”操作過程完成的時間為60~120μs,寫“1”操作過程完成的時間為1μs-正無窮。單片機在將位送總線之后DS18B20控制總線時進行延時操作。寫操作程序流程圖見圖2。
2.1.3 DS18B20的讀操作
單片機將總線從高電平拉至低電平,只需保持1μs,之后的14μs內將總線拉高,就產生讀間隙,DS18B20將要讀的位送到總線,單片機必須在產生間隙后,至讀操作開始的15μs內完成讀位操作,然后進行延時,待整個讀操作時間>60μs且小于120μs時釋放總線。讀操作程序流程圖見圖3。

圖2 DS18B20寫操作程序流程圖

圖3 DS18B20讀操作程序流程圖
2.1.4 多點DS18B20讀取
1)由于多個DS18B20連接在同一個通信線上,所以它們的溫度值不能同時的讀取,必須先讀取DS18B20的序列號。對此,首先要對單個DS18B20給與讀序列號命令,讀取的序列號通過串口調試助手顯示,64位的序列號讀取之后,把這64位數據存入單片機的寄存器內,作為依次掃描的序列號。
2)對于多個DS18B20,為了更加合理的分配時間,首先對所有的傳感器初始化并開始溫度轉換,然后依次掃描各個點的序列號,讀取溫度值,把溫度值依次的存在要發射的寄存器上等待發送。發送完數據之后,進行新一輪的初始化和溫度轉換等操作。
2.2.1 無線發射的程序設計
發送程序流程圖如圖4所示。
2.2.2 無線接收的程序設計
接收程序流程圖如圖5 所示。

圖4 發送程序流程圖

圖5 接收程序流程圖
2.2.3 數據的發送和接收
1)當多點的溫度被讀取完之后,溫度數據被存儲在相應的寄存器內,然后,單片機通過SPI通信,把數據發送給NRF905的發射緩沖區;完成發射任務后,單片機進行下一輪的溫度采集。
2)另一邊的NRF905檢測到所設定的發射頻率所發出的信息,進行地址校正后,開始接收數據。數據按順序存放在單片機的寄存器內,用于數碼管顯示。由于數碼管顯示是用動態的掃描顯示,在時間的處理上,單片機的內部程序的延時要恰當,否則會出現數碼管跳動顯示或者只顯示其中一個的情況。
本實驗用到5個DS18B20,為了驗證數據的正確性,首先將各個傳感器按順序進行編號。把5個傳感器放在一個恒溫箱內(本實驗恒溫箱為20℃),另一邊的接收數據顯示的溫度都是同樣的溫度。這樣做的目的是保證整個系統的采集是正確的。用手捏住第一個傳感器,進過幾秒鐘之后,檢測接收數據,第一個的數據為32.5℃,明顯高于其他4個。接著放開手,用手捏住第二個傳感器,并以此類推,可以分別得到用手捏的溫度為33.0℃, 32.5℃,32℃, 32.5℃。由于手捏的時間和手溫不一定一致,會有一個很小的誤差,對于本設計來說,可以忽略。實驗證明,本系統是確實可行的。
[1]趙麗娟,邵欣,房世平.基于單片機的溫度監控系統的設計與實現[J].機械制造,2006(01).
[2]徐姍姍,楊福寶.基CC1000的無線通信系統設計[J].中國水運,2007,12(5):1-4.
[3]辛潔, 孫運強, 張倫.基于ATmega16和nRF2401的無線射頻收發系統設計[J].電子測試, 2009(4):2-3.
[4]涂兵,肖洪祥.無線測溫在電子產品中的應用研究[J].電子測試,2008(7).
[5]DS18B20數據手冊 http://www.aterlin.com/upload/files/2008/10/20081017153504555.pdf.
[6]莢慶,王代華,張志杰.基于NRF905的無線數據傳輸系統[J].國外電子元器件,2008(01).
[7]NRF905數據手冊http://wt.down.elecfans.com/dm/elec/nRF905%20CN.PDF.
[8]楊光松.基于NRF905的無線溫度數據采集系統[J].微計算機信息,2008 (22).