傳感器數據采集、傳輸因微處理器的不同而方式各異,微處理器之間可采用串口、總線、無線等方式實現數據傳輸.但微處理器與上位機的數據傳輸方式單一,大部分采用串口與上位機通信,無法實現多遠程主機對同一檢測對象的訪問.本文設計了基于ARM 的數據采集與網絡傳輸系統,以便多個主機訪問同一檢測對象,并實現多機遠程監控某鋼件的受力.
1 采集平臺硬件設計 基于ARM920T的ARM 處理器將A/D轉換結果網絡打包后通過CS8900傳遞到網絡上,網絡上的主機可接收傳感器結果.并在此系統上實現遠程監控某鋼件所受力(圖1).

1.1 微處理器 基于ARM920T內核的微處理器因微型化、多樣的外圍設備接El(如觸摸屏接口、LCD接口、IICISP、IIS、A/D、USB),適合多傳感器檢測平臺架構,并可移植Linux、uclinux等操作系統和miniGUI、QT 應用程序.基于ARM9體系的S3C2440、S3C2410是兩款16/32位RISC嵌入式微處理器,芯片上集成了MPLL,使得微處理器工作頻率最高達到203 MHz.這兩款微處理器有兩個8位的SPI串行接口,可工作在查詢、中斷、DMA 3種工作方式,通過設置適當的數據傳輸頻率和主從工作方式,可直接與外圍SPI器件通信,需要注意的是每次讀取外部設備數據時必須向8位傳輸寄存器寫1.
1.2 傳感器電路 圖2所示為測重傳感器變換電路Ll .利用金屬應變片單臂電橋檢測直徑為1 cm的鋼件所受壓力.應變片靈敏度系數K為2,電橋的阻值為120 Q.為提高傳感器的靈敏度,電橋由LM358構成的恒流源提供5 mA 電流,壓力信號經過電路處理后可放大2 178倍.可以通過調節滑動變阻器RP 實現調零操作.壓力檢測所用的A/D芯片為MAX147,它是具有SPI接口的12位串行8通道模數轉換模塊,可以與ARM 的SPI接口相接.通過軟件選擇所需通道.為保證A/D轉換模塊的工作精度,由LM385為MAX147提供2.5 V的參考電壓.可以與ARM 的SPI接口相接.通過軟件選擇所需通道.為保證A/D轉換模塊的工作精度,由LM385為MAX147提供2.5 V的參考電壓.
2 采集系統軟件設計 采集系統的軟件部分包括A/D驅動部分和TCP程序部分.ARM 平臺中位于用戶空間的TCP程序可調用A/D驅動實現傳感器數據采集. 2.1 驅動程序設計 Linux設備驅動程序可分為字符流設備驅動程序,塊設備驅動程序和網絡設備驅動程序.MAX147的采集結果為12位的字符流設備,為實現在Linux環境下訪問MAX147,需要編寫字符流驅動函數.以下是A/D驅動的讀寫函數部分代碼.
A/D芯片MAX147的寫參數函數為:
static ssize— t write(struct file *filp,const char_ user*buffer,size— t count,loff_t*offset) {⋯ If(readb(rSPSTA)& C241o— SPSTA_READY) {copy_from_user(~buff,buffer,1); writeb(buff,rSPTDAT); return count;) ⋯ ) 讀函數為: static ssize— t read(struct file * flip,char— user * buffer, size— t count。lof_ t*offset) {⋯ ; if(readb(rSPSTA)&$3C2410一 SPSTA_ READY) {writeb(OxO0,rSPTDAT); . if(readb(rSPSTA)&$3C2410一 SPSTA _ READY) {from_buff=readb(rSPRDAT); copy_to_user(buffer,&from— buff,count);return count;} }.··;
在嵌入Linux系統的ARM 處理器中,用戶空間訪問的只能是虛擬地址,所以為訪問SPI控制器,需要通過ioremap()函數將宏rSPTDAT映射為發送寄存器的虛擬地址,rSPTDAT — iorema(0x59000010,1),參數0x59000010為發送寄存器的實際物理地址.為實現軟件查詢的工作方式,需要利用函數write(readb(rSPCON)&~S3C2410—SPCON— TAGD & S3C2410一SPCON — CPH A 一FMTA & S3C2410一SPCON — SM OD — POLL&S3C2410一 SPCON— CPOL_HIGH,rSPCON)向SPI控制器寫入S3C2410一SPC0N—SM0D—P0LL參數,讀寫函數中利用if(readb(rSPST A)&S3C2410一SPSTA— READY)讀SPI狀態寄存器,判斷SPI模塊的工作狀態.驅動模塊的讀寫函數分別使用函數copy—tO—user(buffer,&from— buff,count),copy—from— user( buff,buffer,1)與用戶空間中應用程序的讀寫函數傳遞數據.
2.2 TCP程序設計 為實現多主機網絡共享傳感器數據,本文提出采用TCP方式 進行數據傳輸.圖3是服務器端的程序流程圖,服務器通過Listen()函數監聽客戶端的連接請求.客戶端無需監聽(1isten())和接受連接(accept())步驟,只需申請連接(connect()函數實現)即可獲得傳感器數據.客戶端程序和服務器端程序可通過read()、write()函數實現通信.此系統中ARM 平臺作為服務器為網絡上的多客戶端提供檢測數據.
3 試驗結果
對壓力檢測平臺進行標定 ,得測力檢測系統的非線性校正方程如下:
F一16.95+24032.61U一3.15U .
將非線性校正方程的3個系數存入系統中,可根據檢測到的電壓值得到壓力值.ARM 平臺的IP地址為192.168.1.230.對鋼件施加壓力,IP地址為192.168.1.x的上位機通過connect()函數申請鏈接,得到壓力傳感器電壓值.表1是本采集系統對鋼件施加不同的力時采集到的三組電壓值及鋼件對應的受力值.
|