基于nRF905的低功耗油井數據采集系統
摘要: 本文介紹了一種基于nRF905的低功耗油井數據采集系統的設計和實現。
關鍵詞: nRF905無線收發器; C8051F; 低功耗; 頻分多址;USB
引言
油田油井數量多且分布范圍由幾十至上百平方公里,分布比較零散,一些注水,注汽井現場沒有電源,沒有專人值班。目前大多采用人工巡井方式,由工人定時檢查設備運行情況并記錄采油數據。以前使用的儀表操作繁瑣,需要關閉閥門安裝傳感器,測量完畢后還要卸下傳感器以免丟失,工人勞動強度大,影響設采油數據的準確性。
本系統基于nRF905無線收發器的數據采集,現場智能變送器由電池供電,功耗低,無需外部供電可持續工作一年以上。另外變送器經過特殊防盜設計,無專用工具無法拆下。工人通過手持式數據采集器甚至不用停車,在50M范圍內就可以接收到變送器的信息并顯示在液晶顯示器上,測量結束后自動存儲。數據超出正常范圍時,會告警提示。管理計算機通過手持式數據采集器的USB接口讀取存儲的測量數據并存入數據庫。數據采集系統框圖示于圖1。
圖1 數據采集系統框圖
硬件設計
智能變送器硬件選擇了支持低功耗工作模式的C8051F350單片機和nRF905射頻模塊,使用32768Hz的低頻晶振,采用1節5號鋰電池供電。圖2為智能變送器的框圖。
圖2 智能變送器框圖
手持式數據采集器硬件選擇了支持低功耗工作模式帶有USB接口的C8051F340單片機、nRF905射頻模塊、存儲器、實時時鐘、充電電路等,使用32 768 Hz的低頻晶振,采用可充電的260mAH鋰電池供電。圖3為手持式數據采集器的框圖。
圖3 手持式數據采集器框圖
C8051F350是Silabs公司的一款精確混合信號單片機,片內有8通道24bit的S-D型ADC,128倍PGA,電流型DAC,VREF等模擬外設,可以方便地和溫度壓力等傳感器直接連接。使用電流型DAC對傳感器進行激勵,傳感器的輸出信號經片內128倍PGA放大后進行A/D轉換,無需額外的信號調理電路。片內8K FLASH,可在線編程和改寫,傳感器的標定參數可以在FLASH中存儲,節省片外存儲器。
C8051F340是Silabs公司生產的一款帶USB2.0接口的單片機,支持全速(12Mbps)和低速(1.5Mbps)模式;帶專門的1KByte USB 緩沖存儲器;集成USB收發器,無需外部電阻。64K Flash程序存儲器,4352Byte數據RAM;供電電壓2.7~5.25V,可以直接由USB接口供電。處理速度可以達到48MIPS,能夠滿足手持式數據采集器的要求。
nRF905是挪威Nordic VLSI公司的單片射頻收發器,低電壓工作,功耗非常低,工作于433/868/915MHz三個ISM頻段,在每個頻段內支持多個頻道且頻道之間的轉換時間小于650 ms。利用這個特性使用頻分多址的方法無需復雜協議即可實現多個傳感器共同工作而不互相干擾。ShockBurst工作模式能自動處理字頭和CRC(循環冗余碼校驗)。通過SPI串口與單片機通信,無需使用功能更強的單片機;可以簡化軟件設計和硬件成本。使用非常方便;內建空閑模式 與關機模式,易于實現節能。nRF905適用于無線數據通信、汽車、遙感勘測等諸多領域。天線的設計是整個系統設計的一個重要的環節,nRF905支持使用PCB環行差分天線,可以節省空間,降低生產成本。應用原理圖見圖4。
圖4 nRF905與MCU的電路原理圖
手持式數據采集器硬件還包括片外存儲器和實時時鐘電路,片外存儲器選用Microchip公司的24AA系列,I2C接口,最低工作電壓1.8V,待機電流1mA。實時時鐘選用NXP公司的PCF8563T,I2C接口,最低工作電壓1.0V,最低工作電流0.25mA。非常適合電池供電的低功耗應用。
手持式數據采集采用專用的鋰離子充電管理芯片來對電池進行充電管理,在USB接口連接后自動進行充電,軟件上添加電池電壓監測模塊來避免充電時間過長。
軟件設計
軟件是在Keil uVision2 下,使用C語言開發的。C8051F系列有硬件SPI接口,簡化了nRF905的驅動程序的編寫。nRF905的驅動程序包括初始化,數據包的讀寫,頻道設置,功率設置等通用函數。調試完成后封裝成函數庫,供智能變送器和手持式數據采集器調用。
智能變送器軟件
智能變送器的軟件除nRF905的驅動程序外,還有A/D轉換模塊,傳感器標定模塊,定時喚醒模塊及主函數組成。上電后,主函數高速運行,進行初始化,A/D采樣,控制nRF905發送采集數據,然后切換到低速節電模式運行,休眠一段時間后喚醒重復上述過程。工作時間和休眠時間的比值為1:100,平均電流50mA左右,使用2100mAH的電池理論上可以使用4.7年。
手持式數據采集器軟件
手持式數據采集器的軟件設計相對復雜,除nRF905的驅動程序外,還要編寫USB驅動程序,液晶顯示驅動程序,按鍵驅動模塊,時鐘模塊,電池電壓檢測模塊、PCA定時模塊,數據讀寫模塊,文件系統(數據的存儲,壓縮,查找等功能模塊),命令解釋模塊等供主程序調用。主程序是一個事件驅動為主的任務調度程序,按照預先設定優先級來執行各模塊。沒有事件發生時主程序切換到低速節電模式,除實時時鐘外關閉其他的功能模塊,消耗很低的電流直到有外部事件喚醒。可喚醒主程序的外部事件有USB接口連接或斷開、按鍵事件、定時器事件等。如果是USB接口連接事件喚醒,單片機以最高速度運行(48MHz)主程序執行USB驅動的初始化及連接任務,與主機進行連接,根據主機發送的命令來完成預定的功能。超過規定時間沒有與主機的數據通訊,主程序自動進入待機模式。此時只有電池電壓檢測模塊和實時時鐘模塊工作直到發生USB斷開事件,此時主程序將卸載USB驅動程序,斷開與主機的連接。
軟件設計支持在運行中更改nRF905的頻道,以便在一個工作區域內(通訊半徑,50~100M)支持多個智能傳感器共同工作。根據設定頻率依次讀取現場智能變送器的測量數據并自動存儲。存儲內容包括測量時間,變送器序列號,測試數據,變送器狀態等信息。每天的測試數據形成一個文件,即可在本機查詢,也可通過USB接口傳給管理計算機進行分析和存儲。
管理計算機處理軟件
為了管理采集數據,需要在主機上建立良好的人機交互界面。采用Visual Basic(VB)來設計人機界面,開發應用程序。將USB驅動控件和指令封裝在函數中,實現PC機對手持式數據采集器之間的串口通信。具體包括: 初始化并驅動其開始工作,主動搜索從USB器件,完成鏈接,并將指令執行狀態及搜索到的設備地址顯示出來;控制與從USB器件的通信,對接收到 的數據進行處理,實時刷新數據,顯示溫度、濕度、壓力傳感器的測量結果。利用其他控件實現對無線智能傳感器數據的分析、顯示和操作。
每一臺智能變送器都有一個唯一的序列號,在管理計算機的數據庫中有相應變送器的詳細信息,如變送器類型、生產時間、安裝時間、安裝地點、量程、維修記錄等。提供根據序列號查詢歷史數據,曲線等功能。
每一臺手持式數據采集器同樣有一個唯一的序列號,采集器可以讀取多臺智能變送器的測量數據,管理者可以根據采集數據中的變送器序列號和采集時間來考核操作者的工作。
結語
筆者設計的基于nRF905的低功耗油井數據采集系統具有安裝簡單,系統投資少,可擴展性強,使用和維護的費用低等優點。大大提高了數據采集的效率和可靠性,實現了參數測量的自動化。在有條件的地方還可以結合其他如GPRS,Internet等技術實現無需人員參與的全自動測量。目前該系統在大慶油田的注水井壓力測量、燃氣管道壓力測量等多個場所得到了具體的應用,系統工作可靠穩定。
參考文獻:
1. C8051F350數據手冊,http://www.xhl.com.cn
2. C8051F340數據手冊,http://www.xhl.com.cn
3. NRF905數據手冊,http://www.freqchina.com
評論