陳敏,孟立凡,王華斌
(中北大學(xué)電子測(cè)試技術(shù)國(guó)家重點(diǎn)實(shí)驗(yàn)室 信息與通信工程學(xué)院 山西 太原 030051)
目前許多場(chǎng)合都要對(duì)溫度進(jìn)行監(jiān)測(cè)和控制。比如現(xiàn)代電力系統(tǒng)向著高電壓大機(jī)組、大容量的方向發(fā)展,對(duì)電力系統(tǒng)供電可靠性的要求越來(lái)越高,由于絕大多數(shù)的電力設(shè)備長(zhǎng)期在高電壓、大電流和滿負(fù)荷的條件下運(yùn)行,導(dǎo)致熱量集結(jié)加劇,如果不對(duì)溫度的變化采取有效的監(jiān)測(cè)措施,將會(huì)危及電力設(shè)備的安全運(yùn)行[1-4]。
基于以上背景,本文提出了一種基于AT89C52單片機(jī)的數(shù)據(jù)采集及無(wú)線收發(fā)系統(tǒng)的設(shè)計(jì)方法。無(wú)線收發(fā)部分,采用挪威NordicVLSI公司推出的NRF905單片射頻收發(fā)器實(shí)現(xiàn)數(shù)據(jù)的無(wú)線傳輸,使得數(shù)據(jù)采集更加具有實(shí)時(shí)性。
該系統(tǒng)硬件結(jié)構(gòu)由少量的外部設(shè)備、無(wú)線數(shù)據(jù)傳輸模塊,以及供電電路組成。無(wú)線數(shù)據(jù)傳輸模塊基于低功耗單片射頻收發(fā)芯片NRF905,采用ATMEL公司的8位通用微處理器AT89C52為主處理芯片,完成數(shù)據(jù)的處理和控制。系統(tǒng)結(jié)構(gòu)如圖1 所示。
圖1 系統(tǒng)總體框圖
DS18B20內(nèi)部結(jié)構(gòu)主要由4部分組成:64位光刻ROM,溫度傳感器,非揮發(fā)的溫度報(bào)警觸發(fā)器TH和TL,高速暫存器。64位光刻ROM是出廠前被光刻好的,它可以看作是該DS18B20的地址序列號(hào)。不同的器件地址序列號(hào)不同。在多點(diǎn)測(cè)量的時(shí)候,需要讀取它相對(duì)應(yīng)的序列號(hào),才能正確的讀取相應(yīng)的溫度[5]。
由于NRF905需要3.3V的電壓供電,而市場(chǎng)上直接提供3V左右電壓的適配器價(jià)格比5V電壓的適配器貴,同時(shí)5V適配器種類較多,所以考慮電壓轉(zhuǎn)換。由于適配器輸出的電壓含有較多的雜質(zhì)成分,所以要有相應(yīng)的濾波電路。本課題我們采用ASM1117-3.3穩(wěn)壓模塊和一些簡(jiǎn)單元器件組成的電路進(jìn)行供電。
無(wú)線收發(fā)部分采用挪威NordicVLSI公司推出的nRF905單片射頻收發(fā)器,它可以自動(dòng)產(chǎn)生前導(dǎo)碼和CRC校驗(yàn)碼,可以很容易通過SPI接口進(jìn)行編程配置。
NRF905的工作模式由TRX_CE、TX_EN、PWR_UP三個(gè)引腳的設(shè)置來(lái)決定,見表1。工作模式?jīng)Q定了模塊的工作狀態(tài),在發(fā)送和接收的時(shí)候需要設(shè)定好[6-7]。
表1 nRF905的工作模式
單片機(jī)的單低電平已經(jīng)可以控制數(shù)碼管的亮滅。但在動(dòng)態(tài)顯示時(shí),數(shù)碼管的亮度比較暗。并且即使掃描頻率很高,仍然有微小的閃動(dòng)現(xiàn)象。這是因?yàn)閱纹瑱C(jī)一般為+5V的TTL電平,點(diǎn)亮數(shù)碼管一般需要較大的電流。所以,我們需要將電源信號(hào)放大,即驅(qū)動(dòng)。本設(shè)計(jì)采用三極管作為放大器件,它即可以起到放大電流的作用,又可以起到開關(guān)的作用,即某一時(shí)刻打開或關(guān)閉數(shù)碼管,形成動(dòng)態(tài)顯示。接通電路實(shí)驗(yàn)后發(fā)現(xiàn),數(shù)碼管亮度適合,因此不需要接限流電阻。
2.1.1 DS18B20初始化
DS18B20的初始化始于單片機(jī)發(fā)送一個(gè)復(fù)位脈沖,即單片機(jī)將總線拉低,持續(xù)480~960μs后將總線拉高,釋放總線進(jìn)入接收狀態(tài),之后DS18B20開始控制總線,在檢測(cè)到總線的上升沿之后,等待15~60μs,DS18B20發(fā)送存在脈沖,將總線拉低,持續(xù)60~240μs,在區(qū)間(60~240μs)區(qū)間內(nèi)釋放總線,然后由單片機(jī)控制總線進(jìn)行延時(shí)操作,待DS18B20檢測(cè)到總線上升沿的480μs以后,初始化結(jié)束。
2.1.2 DS18B20的寫操作
單片機(jī)將總線拉低1μs后,就產(chǎn)生寫間隙,總線開始拉低的15μs內(nèi)單片機(jī)將所要寫的位送到總線上,DS18B20在之后的15~45μs內(nèi)對(duì)總線采樣,若為低電平,寫入的位是“0”;若為高電平,寫入的位是“1”,寫“0”操作過程完成的時(shí)間為60~120μs,寫“1”操作過程完成的時(shí)間為1μs-正無(wú)窮。單片機(jī)在將位送總線之后DS18B20控制總線時(shí)進(jìn)行延時(shí)操作。寫操作程序流程圖見圖2。
2.1.3 DS18B20的讀操作
單片機(jī)將總線從高電平拉至低電平,只需保持1μs,之后的14μs內(nèi)將總線拉高,就產(chǎn)生讀間隙,DS18B20將要讀的位送到總線,單片機(jī)必須在產(chǎn)生間隙后,至讀操作開始的15μs內(nèi)完成讀位操作,然后進(jìn)行延時(shí),待整個(gè)讀操作時(shí)間>60μs且小于120μs時(shí)釋放總線。讀操作程序流程圖見圖3。
圖2 DS18B20寫操作程序流程圖
圖3 DS18B20讀操作程序流程圖
2.1.4 多點(diǎn)DS18B20讀取
1)由于多個(gè)DS18B20連接在同一個(gè)通信線上,所以它們的溫度值不能同時(shí)的讀取,必須先讀取DS18B20的序列號(hào)。對(duì)此,首先要對(duì)單個(gè)DS18B20給與讀序列號(hào)命令,讀取的序列號(hào)通過串口調(diào)試助手顯示,64位的序列號(hào)讀取之后,把這64位數(shù)據(jù)存入單片機(jī)的寄存器內(nèi),作為依次掃描的序列號(hào)。
2)對(duì)于多個(gè)DS18B20,為了更加合理的分配時(shí)間,首先對(duì)所有的傳感器初始化并開始溫度轉(zhuǎn)換,然后依次掃描各個(gè)點(diǎn)的序列號(hào),讀取溫度值,把溫度值依次的存在要發(fā)射的寄存器上等待發(fā)送。發(fā)送完數(shù)據(jù)之后,進(jìn)行新一輪的初始化和溫度轉(zhuǎn)換等操作。
2.2.1 無(wú)線發(fā)射的程序設(shè)計(jì)
發(fā)送程序流程圖如圖4所示。
2.2.2 無(wú)線接收的程序設(shè)計(jì)
接收程序流程圖如圖5 所示。
圖4 發(fā)送程序流程圖
圖5 接收程序流程圖
2.2.3 數(shù)據(jù)的發(fā)送和接收
1)當(dāng)多點(diǎn)的溫度被讀取完之后,溫度數(shù)據(jù)被存儲(chǔ)在相應(yīng)的寄存器內(nèi),然后,單片機(jī)通過SPI通信,把數(shù)據(jù)發(fā)送給NRF905的發(fā)射緩沖區(qū);完成發(fā)射任務(wù)后,單片機(jī)進(jìn)行下一輪的溫度采集。
2)另一邊的NRF905檢測(cè)到所設(shè)定的發(fā)射頻率所發(fā)出的信息,進(jìn)行地址校正后,開始接收數(shù)據(jù)。數(shù)據(jù)按順序存放在單片機(jī)的寄存器內(nèi),用于數(shù)碼管顯示。由于數(shù)碼管顯示是用動(dòng)態(tài)的掃描顯示,在時(shí)間的處理上,單片機(jī)的內(nèi)部程序的延時(shí)要恰當(dāng),否則會(huì)出現(xiàn)數(shù)碼管跳動(dòng)顯示或者只顯示其中一個(gè)的情況。
本實(shí)驗(yàn)用到5個(gè)DS18B20,為了驗(yàn)證數(shù)據(jù)的正確性,首先將各個(gè)傳感器按順序進(jìn)行編號(hào)。把5個(gè)傳感器放在一個(gè)恒溫箱內(nèi)(本實(shí)驗(yàn)恒溫箱為20℃),另一邊的接收數(shù)據(jù)顯示的溫度都是同樣的溫度。這樣做的目的是保證整個(gè)系統(tǒng)的采集是正確的。用手捏住第一個(gè)傳感器,進(jìn)過幾秒鐘之后,檢測(cè)接收數(shù)據(jù),第一個(gè)的數(shù)據(jù)為32.5℃,明顯高于其他4個(gè)。接著放開手,用手捏住第二個(gè)傳感器,并以此類推,可以分別得到用手捏的溫度為33.0℃, 32.5℃,32℃, 32.5℃。由于手捏的時(shí)間和手溫不一定一致,會(huì)有一個(gè)很小的誤差,對(duì)于本設(shè)計(jì)來(lái)說(shuō),可以忽略。實(shí)驗(yàn)證明,本系統(tǒng)是確實(shí)可行的。
[1]趙麗娟,邵欣,房世平.基于單片機(jī)的溫度監(jiān)控系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].機(jī)械制造,2006(01).
[2]徐姍姍,楊福寶.基CC1000的無(wú)線通信系統(tǒng)設(shè)計(jì)[J].中國(guó)水運(yùn),2007,12(5):1-4.
[3]辛潔, 孫運(yùn)強(qiáng), 張倫.基于ATmega16和nRF2401的無(wú)線射頻收發(fā)系統(tǒng)設(shè)計(jì)[J].電子測(cè)試, 2009(4):2-3.
[4]涂兵,肖洪祥.無(wú)線測(cè)溫在電子產(chǎn)品中的應(yīng)用研究[J].電子測(cè)試,2008(7).
[5]DS18B20數(shù)據(jù)手冊(cè) http://www.aterlin.com/upload/files/2008/10/20081017153504555.pdf.
[6]莢慶,王代華,張志杰.基于NRF905的無(wú)線數(shù)據(jù)傳輸系統(tǒng)[J].國(guó)外電子元器件,2008(01).
[7]NRF905數(shù)據(jù)手冊(cè)http://wt.down.elecfans.com/dm/elec/nRF905%20CN.PDF.
[8]楊光松.基于NRF905的無(wú)線溫度數(shù)據(jù)采集系統(tǒng)[J].微計(jì)算機(jī)信息,2008 (22).