雷子浩,張麗艷,費繼友,李兆鵬
(1大連交通大學 電氣信息學院,遼寧 大連 116028;2.大連交通大學 動車運輸與維護工程學院,遼寧大連116023)*
溫度是直接影響生產、化學反應、發酵等很多物理和化學過程的一個非常重要的物理量.溫度控制失誤就可能引起生產安全、產品質量等一系列問題.因此對溫度進行方便,有效的測量就顯得十分必要.傳統的溫度測量系統一般采用有線的方式進行數據傳輸時,這種方式容易受到電磁信號的干擾,從而造成信號的大幅衰減.同時在一些比較危險或者封閉的場合,有線傳輸會受到很多因素的限制.因此,本文給出了一種基于nRF905射頻模塊的無線溫度測量系統,該系統采用atmega16單片機主控芯片,采用的DS18B20溫度傳感器,并采用VB語言結合 Access數據庫技術實現對接收到的溫度數據做相應的數據處理.
系統結構整體上可以分三部分:溫度數據采集,數據傳輸和數據處理.溫度采集部分是通過單片機對溫度傳感器進行控制而獲得.數據傳輸包括數據發送和數據接收.在數據發送端,單片機將采集到的溫度數據以無線傳輸模塊特定的傳輸協議將數據發送;在接收端,無線通信模塊依照規定的傳輸協議進行數據接收,然后單片機將接收到的數據通過串口傳給PC端.數據處理主要是PC端將接收到的數據進行實時曲線圖顯示,以及和設定的溫度上下限比較以及溫度的存儲,查找,修改,刪除等等.系統結構框圖如圖1所示.

圖1 系統的結構框圖
本文給出了電源電路、溫度傳感器工作電路和nRF905無線模塊電路的設計說明.
由于 nRF905 工作電壓為1.9 ~3.6 V,所以本系統直接用ASM1117電壓調節器芯片將5 V的USB電源轉換成nRF905的正常工作時所需的3.3 V電源.然后用這個3.3 V電源模塊為nRF905供電.3.3V電源電路圖如圖2所示.

圖2 3.3 V電源電路圖
DS18B20是DALLAS公司生產的一款單總線數字溫度傳感器[1].其溫度測量范圍為 -55~125℃,測量精度為0.1℃.每個芯片內部有64位的身份序列號.DS18B20溫度傳感器具有體積小,成本低,測溫精度高,連接方便,易于組建溫度檢測網絡等優點.DS18B20可采用寄生電源和外接電源兩種供電方式[1]:寄生電源供電,在進行多點測溫時,通常需要多占用一根I/O口線對其進行強上拉切換,這樣才能解決I/O口電流供應不足而產生的溫度測量的誤差大的問題;外部電源供電方式下,DS18B20工作電源由VDD引腳接入,此時I/O線不需要強上拉,不存在電源電流不足的問題,同時可以保證轉換精度,而且在總線上理論可以掛接任意多個DS18B20傳感器,組成多點測溫系統.本系統中DS18B20采用外部電源供電方式.DS18B20工作電路[2]如3圖所示.

圖3 DS18B20工作電路圖
nRF905是挪威Nordic公司推出的單片射頻發射器芯片,工作電壓為1.9~3.6V,可以工作于433/868/915 MHz三個ISM頻道.由于內部集成了頻率調制器,帶解調器的接收器,功率放大器,晶體震蕩器以及調節器.因此它可以自動完成處理字頭,CRC循環冗余校驗以及曼徹斯特編碼/解碼.nRF905帶有標準的SPI總線接口.nRF905與atmega16單片機可以通過SPI方式和通過I/O模擬SPI方式進行通信[3-5].當以SPI方式進行通信時,通常是將單片機作為主機,nRF905作為從機.因此往nRF905內部寄存器寫數據同時也是從它讀數據.而通過I/O模擬SPI方式進行通信必須嚴格遵守SPI時序,I/O是在時鐘線為高電平的觸發下對nRF905內部寄存器進行讀寫操作.本系統采用的是以SPI方式進行通信.nRF905和atmega16單片機的連接如下圖4所示.

圖4 nRF905和atmega16的連接電路圖
本系統的軟件程序設計主要包括溫度數據采集[1,6-7]、nRF905 無線數據發送和接收和上位機軟件設計.

圖5 溫度采集流程圖
對于多個溫度的測量,可以用多個I/O口掛多個溫度傳感器,也可以用一個I/O口上掛多個溫度傳感器.前者在溫度測量的時候是需要省去ROM匹配,測溫程序相對簡單.后者則明顯節省I/O口資源.本系統采用的第二種方法,此方法溫度測量的關鍵是:對DS18B20的操作總是嚴格遵循DS18B20復位,ROM指令,ROM指令的先后順序.DS18B20溫度測量的流程圖如圖5所示.
nRF905無線數據發送和接收流程如圖6所示.由圖6所知,nRF905發送數據時首先進行nRF905初始化,設置如工作頻率,輸出功率,接收地址寬度,數據寬度,晶體振蕩器頻率,CRC校驗等,接著將其設置成發送模式即TX_EN置位,然后將發送地址和發送數據寫入相應的發送地址寄存器和發送數據寄存器,最后啟動發送即TRX_CE置位.TRX_CE置位之后,nRF905內部射頻寄存器自動開啟,數據打包(加字頭和CRC校驗碼),發送數據包三個過程按順序自動完成.當數據包發送完成之后,DR數據引腳位會置高,可以用DR置高來觸發LED燈閃爍作為發送完成的標志.同樣,接收數據時,先初始化,然后將nRF905設置成接收模式,啟動接收.650 μs之后,nRF905開始檢測接收數據,當接收到了同頻載波時,CD引腳置高;當接收到的地址匹配時,AM引腳置高;當一個正確的數據包接收完后,nRF905會自動對字頭,CRC校驗位,地址進行處理,然后將DR引腳置高.接著將TRX_CE置低進入空閑模式以準備讀取接收到的數據.然后使能SPI,以SPI通信協議指定的速率從接收數據寄存器讀取接收到的數據.當所有的數據接收完成后,nRF905將AM引腳和DR引腳置低.

圖6 nRF905無線數據發送和接收流程圖
本系統采用VB語言[8-9]和Access數據庫實現上位機界面的設計.VB語言具有簡單、易學、可視化界面設計風格和面向對象的程序設計等優點.本系統使用MSComm控件來實現單片機與上位機的串口通信.Access是微軟公司推出的基于Windows的桌面關系數據庫管理系統,它具有面向對象、界面友好、易學易用、支持廣泛易于擴展、維護簡單等優點.使用VB結合數據庫開發上位機的整體思路是;首先用VB提供的可視化數據庫管理器建立好所需要的數據庫和數據表,然后在程序中使用ADODC數據庫控件或者使用ADO對象與數據庫中的表建立連接,再通過各種數據庫感知控件對數據庫進行各種操作.本系統設計的上位機界面如圖7所示.

圖7 上位機界面圖
通過對室內溫度數據的測量驗證本系統運行穩定,結果可靠,不僅可以實時顯示當前溫度,還會超過溫度限定值而自動觸發報警功能,也能夠顯示實時溫度曲線,對所測得的溫度數據進行存儲,刪除,查找和修改,可以使用戶更直接,準確的掌握環境溫度情況.本系統不僅成本相對較低,使用方便,稍作修在就能夠使用很多工業檢測領域,具有實在的使用價值.
[1]普仕凡,張麗艷,李桂林,等.基于89C52單片機的智能溫控儀設計[J].大連交通大學學報,2008,29(3):91-94.
[2]秦莉,岳文秀,楊偉東.基于DS18B20的多點溫度測量體系的設計與仿真[J].實驗室科學,2012(1):104-107.
[3]薛敏迪.基于nRF905的低功耗溫濕度無線測量系統[J].現代電子技術,2010(1):135-137.
[4]門少杰,王寶珠.基于nRF905的溫室環境無線測控系統研究[J].測試測量技術,2010(8):1-3.
[5]鄧星靈,康赫男.基于nRF905的無線溫濕度采集系統的設計[J].儀表技術,2012(8):35-38.
[6]郭天祥.51單片機C語言教程[M].北京:電子工業出版社,2010.
[7]周興華.手把手教你學AVR單片機C程序設計[M].北京:北京航空航天大學出版社,2009.
[8]王曉嵐.基于VB 6.0串口通信的氣壓測高系統數據采集實現[J].現代電子技術,2010(3):116-118.
[9]溫小敏.visual basic數據庫系統項目開發實踐[M].北京:科學出版社,2005.