雷子浩,張麗艷,費(fèi)繼友,李兆鵬
(1大連交通大學(xué) 電氣信息學(xué)院,遼寧 大連 116028;2.大連交通大學(xué) 動(dòng)車運(yùn)輸與維護(hù)工程學(xué)院,遼寧大連116023)*
溫度是直接影響生產(chǎn)、化學(xué)反應(yīng)、發(fā)酵等很多物理和化學(xué)過(guò)程的一個(gè)非常重要的物理量.溫度控制失誤就可能引起生產(chǎn)安全、產(chǎn)品質(zhì)量等一系列問(wèn)題.因此對(duì)溫度進(jìn)行方便,有效的測(cè)量就顯得十分必要.傳統(tǒng)的溫度測(cè)量系統(tǒng)一般采用有線的方式進(jìn)行數(shù)據(jù)傳輸時(shí),這種方式容易受到電磁信號(hào)的干擾,從而造成信號(hào)的大幅衰減.同時(shí)在一些比較危險(xiǎn)或者封閉的場(chǎng)合,有線傳輸會(huì)受到很多因素的限制.因此,本文給出了一種基于nRF905射頻模塊的無(wú)線溫度測(cè)量系統(tǒng),該系統(tǒng)采用atmega16單片機(jī)主控芯片,采用的DS18B20溫度傳感器,并采用VB語(yǔ)言結(jié)合 Access數(shù)據(jù)庫(kù)技術(shù)實(shí)現(xiàn)對(duì)接收到的溫度數(shù)據(jù)做相應(yīng)的數(shù)據(jù)處理.
系統(tǒng)結(jié)構(gòu)整體上可以分三部分:溫度數(shù)據(jù)采集,數(shù)據(jù)傳輸和數(shù)據(jù)處理.溫度采集部分是通過(guò)單片機(jī)對(duì)溫度傳感器進(jìn)行控制而獲得.數(shù)據(jù)傳輸包括數(shù)據(jù)發(fā)送和數(shù)據(jù)接收.在數(shù)據(jù)發(fā)送端,單片機(jī)將采集到的溫度數(shù)據(jù)以無(wú)線傳輸模塊特定的傳輸協(xié)議將數(shù)據(jù)發(fā)送;在接收端,無(wú)線通信模塊依照規(guī)定的傳輸協(xié)議進(jìn)行數(shù)據(jù)接收,然后單片機(jī)將接收到的數(shù)據(jù)通過(guò)串口傳給PC端.數(shù)據(jù)處理主要是PC端將接收到的數(shù)據(jù)進(jìn)行實(shí)時(shí)曲線圖顯示,以及和設(shè)定的溫度上下限比較以及溫度的存儲(chǔ),查找,修改,刪除等等.系統(tǒng)結(jié)構(gòu)框圖如圖1所示.
圖1 系統(tǒng)的結(jié)構(gòu)框圖
本文給出了電源電路、溫度傳感器工作電路和nRF905無(wú)線模塊電路的設(shè)計(jì)說(shuō)明.
由于 nRF905 工作電壓為1.9 ~3.6 V,所以本系統(tǒng)直接用ASM1117電壓調(diào)節(jié)器芯片將5 V的USB電源轉(zhuǎn)換成nRF905的正常工作時(shí)所需的3.3 V電源.然后用這個(gè)3.3 V電源模塊為nRF905供電.3.3V電源電路圖如圖2所示.
圖2 3.3 V電源電路圖
DS18B20是DALLAS公司生產(chǎn)的一款單總線數(shù)字溫度傳感器[1].其溫度測(cè)量范圍為 -55~125℃,測(cè)量精度為0.1℃.每個(gè)芯片內(nèi)部有64位的身份序列號(hào).DS18B20溫度傳感器具有體積小,成本低,測(cè)溫精度高,連接方便,易于組建溫度檢測(cè)網(wǎng)絡(luò)等優(yōu)點(diǎn).DS18B20可采用寄生電源和外接電源兩種供電方式[1]:寄生電源供電,在進(jìn)行多點(diǎn)測(cè)溫時(shí),通常需要多占用一根I/O口線對(duì)其進(jìn)行強(qiáng)上拉切換,這樣才能解決I/O口電流供應(yīng)不足而產(chǎn)生的溫度測(cè)量的誤差大的問(wèn)題;外部電源供電方式下,DS18B20工作電源由VDD引腳接入,此時(shí)I/O線不需要強(qiáng)上拉,不存在電源電流不足的問(wèn)題,同時(shí)可以保證轉(zhuǎn)換精度,而且在總線上理論可以掛接任意多個(gè)DS18B20傳感器,組成多點(diǎn)測(cè)溫系統(tǒng).本系統(tǒng)中DS18B20采用外部電源供電方式.DS18B20工作電路[2]如3圖所示.
圖3 DS18B20工作電路圖
nRF905是挪威Nordic公司推出的單片射頻發(fā)射器芯片,工作電壓為1.9~3.6V,可以工作于433/868/915 MHz三個(gè)ISM頻道.由于內(nèi)部集成了頻率調(diào)制器,帶解調(diào)器的接收器,功率放大器,晶體震蕩器以及調(diào)節(jié)器.因此它可以自動(dòng)完成處理字頭,CRC循環(huán)冗余校驗(yàn)以及曼徹斯特編碼/解碼.nRF905帶有標(biāo)準(zhǔn)的SPI總線接口.nRF905與atmega16單片機(jī)可以通過(guò)SPI方式和通過(guò)I/O模擬SPI方式進(jìn)行通信[3-5].當(dāng)以SPI方式進(jìn)行通信時(shí),通常是將單片機(jī)作為主機(jī),nRF905作為從機(jī).因此往nRF905內(nèi)部寄存器寫數(shù)據(jù)同時(shí)也是從它讀數(shù)據(jù).而通過(guò)I/O模擬SPI方式進(jìn)行通信必須嚴(yán)格遵守SPI時(shí)序,I/O是在時(shí)鐘線為高電平的觸發(fā)下對(duì)nRF905內(nèi)部寄存器進(jìn)行讀寫操作.本系統(tǒng)采用的是以SPI方式進(jìn)行通信.nRF905和atmega16單片機(jī)的連接如下圖4所示.
圖4 nRF905和atmega16的連接電路圖
本系統(tǒng)的軟件程序設(shè)計(jì)主要包括溫度數(shù)據(jù)采集[1,6-7]、nRF905 無(wú)線數(shù)據(jù)發(fā)送和接收和上位機(jī)軟件設(shè)計(jì).
圖5 溫度采集流程圖
對(duì)于多個(gè)溫度的測(cè)量,可以用多個(gè)I/O口掛多個(gè)溫度傳感器,也可以用一個(gè)I/O口上掛多個(gè)溫度傳感器.前者在溫度測(cè)量的時(shí)候是需要省去ROM匹配,測(cè)溫程序相對(duì)簡(jiǎn)單.后者則明顯節(jié)省I/O口資源.本系統(tǒng)采用的第二種方法,此方法溫度測(cè)量的關(guān)鍵是:對(duì)DS18B20的操作總是嚴(yán)格遵循DS18B20復(fù)位,ROM指令,ROM指令的先后順序.DS18B20溫度測(cè)量的流程圖如圖5所示.
nRF905無(wú)線數(shù)據(jù)發(fā)送和接收流程如圖6所示.由圖6所知,nRF905發(fā)送數(shù)據(jù)時(shí)首先進(jìn)行nRF905初始化,設(shè)置如工作頻率,輸出功率,接收地址寬度,數(shù)據(jù)寬度,晶體振蕩器頻率,CRC校驗(yàn)等,接著將其設(shè)置成發(fā)送模式即TX_EN置位,然后將發(fā)送地址和發(fā)送數(shù)據(jù)寫入相應(yīng)的發(fā)送地址寄存器和發(fā)送數(shù)據(jù)寄存器,最后啟動(dòng)發(fā)送即TRX_CE置位.TRX_CE置位之后,nRF905內(nèi)部射頻寄存器自動(dòng)開啟,數(shù)據(jù)打包(加字頭和CRC校驗(yàn)碼),發(fā)送數(shù)據(jù)包三個(gè)過(guò)程按順序自動(dòng)完成.當(dāng)數(shù)據(jù)包發(fā)送完成之后,DR數(shù)據(jù)引腳位會(huì)置高,可以用DR置高來(lái)觸發(fā)LED燈閃爍作為發(fā)送完成的標(biāo)志.同樣,接收數(shù)據(jù)時(shí),先初始化,然后將nRF905設(shè)置成接收模式,啟動(dòng)接收.650 μs之后,nRF905開始檢測(cè)接收數(shù)據(jù),當(dāng)接收到了同頻載波時(shí),CD引腳置高;當(dāng)接收到的地址匹配時(shí),AM引腳置高;當(dāng)一個(gè)正確的數(shù)據(jù)包接收完后,nRF905會(huì)自動(dòng)對(duì)字頭,CRC校驗(yàn)位,地址進(jìn)行處理,然后將DR引腳置高.接著將TRX_CE置低進(jìn)入空閑模式以準(zhǔn)備讀取接收到的數(shù)據(jù).然后使能SPI,以SPI通信協(xié)議指定的速率從接收數(shù)據(jù)寄存器讀取接收到的數(shù)據(jù).當(dāng)所有的數(shù)據(jù)接收完成后,nRF905將AM引腳和DR引腳置低.
圖6 nRF905無(wú)線數(shù)據(jù)發(fā)送和接收流程圖
本系統(tǒng)采用VB語(yǔ)言[8-9]和Access數(shù)據(jù)庫(kù)實(shí)現(xiàn)上位機(jī)界面的設(shè)計(jì).VB語(yǔ)言具有簡(jiǎn)單、易學(xué)、可視化界面設(shè)計(jì)風(fēng)格和面向?qū)ο蟮某绦蛟O(shè)計(jì)等優(yōu)點(diǎn).本系統(tǒng)使用MSComm控件來(lái)實(shí)現(xiàn)單片機(jī)與上位機(jī)的串口通信.Access是微軟公司推出的基于Windows的桌面關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng),它具有面向?qū)ο?、界面友好、易學(xué)易用、支持廣泛易于擴(kuò)展、維護(hù)簡(jiǎn)單等優(yōu)點(diǎn).使用VB結(jié)合數(shù)據(jù)庫(kù)開發(fā)上位機(jī)的整體思路是;首先用VB提供的可視化數(shù)據(jù)庫(kù)管理器建立好所需要的數(shù)據(jù)庫(kù)和數(shù)據(jù)表,然后在程序中使用ADODC數(shù)據(jù)庫(kù)控件或者使用ADO對(duì)象與數(shù)據(jù)庫(kù)中的表建立連接,再通過(guò)各種數(shù)據(jù)庫(kù)感知控件對(duì)數(shù)據(jù)庫(kù)進(jìn)行各種操作.本系統(tǒng)設(shè)計(jì)的上位機(jī)界面如圖7所示.
圖7 上位機(jī)界面圖
通過(guò)對(duì)室內(nèi)溫度數(shù)據(jù)的測(cè)量驗(yàn)證本系統(tǒng)運(yùn)行穩(wěn)定,結(jié)果可靠,不僅可以實(shí)時(shí)顯示當(dāng)前溫度,還會(huì)超過(guò)溫度限定值而自動(dòng)觸發(fā)報(bào)警功能,也能夠顯示實(shí)時(shí)溫度曲線,對(duì)所測(cè)得的溫度數(shù)據(jù)進(jìn)行存儲(chǔ),刪除,查找和修改,可以使用戶更直接,準(zhǔn)確的掌握環(huán)境溫度情況.本系統(tǒng)不僅成本相對(duì)較低,使用方便,稍作修在就能夠使用很多工業(yè)檢測(cè)領(lǐng)域,具有實(shí)在的使用價(jià)值.
[1]普仕凡,張麗艷,李桂林,等.基于89C52單片機(jī)的智能溫控儀設(shè)計(jì)[J].大連交通大學(xué)學(xué)報(bào),2008,29(3):91-94.
[2]秦莉,岳文秀,楊偉東.基于DS18B20的多點(diǎn)溫度測(cè)量體系的設(shè)計(jì)與仿真[J].實(shí)驗(yàn)室科學(xué),2012(1):104-107.
[3]薛敏迪.基于nRF905的低功耗溫濕度無(wú)線測(cè)量系統(tǒng)[J].現(xiàn)代電子技術(shù),2010(1):135-137.
[4]門少杰,王寶珠.基于nRF905的溫室環(huán)境無(wú)線測(cè)控系統(tǒng)研究[J].測(cè)試測(cè)量技術(shù),2010(8):1-3.
[5]鄧星靈,康赫男.基于nRF905的無(wú)線溫濕度采集系統(tǒng)的設(shè)計(jì)[J].儀表技術(shù),2012(8):35-38.
[6]郭天祥.51單片機(jī)C語(yǔ)言教程[M].北京:電子工業(yè)出版社,2010.
[7]周興華.手把手教你學(xué)AVR單片機(jī)C程序設(shè)計(jì)[M].北京:北京航空航天大學(xué)出版社,2009.
[8]王曉嵐.基于VB 6.0串口通信的氣壓測(cè)高系統(tǒng)數(shù)據(jù)采集實(shí)現(xiàn)[J].現(xiàn)代電子技術(shù),2010(3):116-118.
[9]溫小敏.visual basic數(shù)據(jù)庫(kù)系統(tǒng)項(xiàng)目開發(fā)實(shí)踐[M].北京:科學(xué)出版社,2005.