1 引 言
在工業控制現場,常常需要采集大量的現場數據,如電壓、電流、溫度、濕度、氣壓等,并將這些數據采集模塊采集的數據傳輸到主機進行處理,由主機根據處理的結果,將控制信號傳輸給現場執行模塊進行各種操作。目前數據的傳輸基本是基于有線的網絡,如RS485,CAN等。這些有線的網絡一般具有成本比較高、維護不方便等缺點。而無線傳輸相對具有一定的優勢,如成本低、可靠性高、維護方便等。本文介紹一個基于PTR2000無線數據采集系統。通過本系統,不僅能了解數據采集的一般過程以及一般數據采集系統的構成,還能了解PTR2000模塊、ADUC812單片機、USB100模塊的功能。該系統最高傳輸速度可達19.2 kb/s。
2 系統原理
該系統由工控機、USB100、AT89C51單片機、PTR2000(2塊)、ADUC812單片機構成。
2.1 ADUC812高性能單片機
Anolog Device公司的ADUC812高性能單片機由與 8051兼容的內核[1]、片內外圍設備、電源單元和模擬單元組成。8051兼容的內核額定的工作頻率是12 MHz(最大可達16 MHz),3個16 b定時計數器,功能包括看門狗定時器、電源監視PSM、高速ADC以及DMA控制器。片內有8 kB的閃速/電可擦除程序存儲器,640 B的閃速/電可擦除數據存儲器和256 B的片內數據RAM,支持16 MB的外部數據存儲空間和64 kB的外部數據尋址空間,為多處理器接口和I/O擴展提供了32條可編程的I/O口線,端口3有高電流驅動能力,同時具有標準的UART接口和可配置的I2 C端口或SPI端口。模擬單元包括8通道、高速(200 kb/s)自校準12 b ADC、片內4OPPM/C電壓基準、2個電壓輸出DAC和片內溫度傳感器等,可構成一個強大的12 b數據采集系統。
2.2 USB100通用串行總線協議模塊
USB100是基于ASIC設計的,內部封裝了USB1.1全部協議以及多達384 B的發送緩沖區和128 B的接收緩沖接口,對USB接口的操作如同對外部存儲器操作一樣方便,由USB100模塊完成全部協議的轉換和封裝,使開發 過程變得十分簡單。
各管腳說明如下:
P1~P9,P16,NC:空腳。
P10,VCC:輸出,+5 V輸出,提供給外部MCU使用,最大400 mA。
P11,USBVCC:輸入,USB接口的電源腳。P12~P13,D+,D-:輸入/輸出,USB數據線。P14~P15,GND:電源地。
P17,RXE:輸出,高表示模塊沒有數據輸出;低表示模塊有數據輸出,可以讀數據。
P18,TXE:輸出,高表示模塊發送緩沖區已滿;低表示發送緩沖區為空,可以發送數據。
P19,WR:輸入,將8 b并行總線上的數據鎖存入內部緩沖區。
P20,RD:輸入,允許內部接收緩沖區數據通過8 b并行總線讀出。
P28~P21,D0~D7:8 b雙向數據線,他是一個8 b并口,USB100通過他與單片機交換數據。
USB100模塊的控制時序:
發送時序 當單片機檢測到USB100模塊TXE為低時,表示內部發送緩沖區允許發送數據到USB端口,可以 將數據通過8 b數據總線發給USB100模塊,發送數據鎖存由WR控制,USB100模塊TXE為高時,禁止發送數據。
接收時序 當單片機檢測到USB100模塊RXF為低時,表示內部接收緩沖區有來自USB端口的數據,可以通過8 b數據總線將數據讀入發給USB100模塊,接收數據鎖存由RD控制,接收時序如圖5所示。
2.3 PTR2000無線傳輸模塊
PTR2000是一個小型、超低功耗無線數據收發模塊。 該模塊工作頻率為國際通用的數傳頻段433 MHz[3],采用了FSK調制,抗干擾能力強,采用了DDS+PLL頻率合成技術,頻率穩定性極好,靈敏度達到-105 dPm,最大發射功率為+10 dPm,工作電壓2.7~5.25 V,具有2個工作頻道,工作最高速度可達19.2 kb/s(也可工作在其他頻率,如9 600 b/s),可直接與CPU串口使用如8031等,也可以接計算機RS232串口,軟件編程非常方便。由于該模塊采用了低發射功率、高靈敏度設計,使用無需申請許可證。
各管腳說明如下:
P1:VCC,電源輸入端,接2.7~5.25 V。
P2:CS,頻道選擇,CS=0選擇工作頻道1,即433.92 MHz;CS=1選擇工作頻道2,即434.33 MHz。
P3:DO,數據輸出。
P4:DI,數據輸入。
P5:GND,接地端。
P6:PWR,節能控制,PWR=1,正常工作狀態;PWR=0,待機微功耗狀態。
P7:TXEN,發射接收控制,TXEN=1模塊處于發射狀態,TXEN=0模塊處于接收狀態。
3 采集系統的編程
3.1 單片機ADUC812編程
程序在初始化了各種參數以后,開始不斷循環,查詢A/D端口,將各路A/D端口的數據不斷采集,并通過串口輸入PTR2000,由PTR2000將數據傳輸出去;同時該模塊不斷查詢串口,若有由PTR2000通過串口輸入的數據,及時將數據輸出到D/A端口。本程序采用C語言編程,主程序為main()。
注:FFH開始采集數據標志;EEH結束標志。
3.2 AT89C51單片機編程
AT89C51負責傳輸數據,一方面他通過PB口與USB100的并行數據口相連,負責從USB100接收或者將數據傳輸給USB100模塊;另一方面AT89C51通過串口與另一塊PTR2000相連,負責將從USB100模塊接收的數據傳給PTR2000,或者將從PTR2000模塊接收的數據傳給USB100模塊。他的程序與ADUC812的程序相似,區別在于他沒有開始和結束標志,并且他查詢的是USB100模塊是否有數據輸出和串口是否接收到PTR2000傳來的數據。
3.3 工控機編程
在工控機上安裝好USB100模塊的專用驅動程序后,USB100即可作為一個標準的設備來編程,可以按照與串口完全一樣的方法進行編程。在本次設計中采用了VC編程,在VC中采用MSComm控件,將USB接口作為一個標準的串口使用。程序分為兩部分:一部分是USB接口程序;另一部分是應用程序部分。將由ADUC812采集到的A/D數據用直觀的圖像的方法顯示出來。
4 結 語
本設計介紹的無線數據采集系統對于其他無線數據傳輸的應用具有一定的參考價值,通過適當改變硬件配置,以及適當修改程序,可以應用于遠程抄表、遠程監控等領域。
|