干開峰,王 俊,汪濟洲
(合肥學院機器視覺與智能控制技術重點實驗室,安徽 合肥 230601)
隨著數字技術的飛速發展,對工業現場傳感器數據采集記錄提出了更高的要求.在生產過程中,應用這一系統可以對生產現場的傳感器參數進行采集、監視和記錄,為提高生產質量、降低成本提供了信息和手段[1].當前,我國對直接應用于傳感器的高精度數據采集記錄系統的研究開發都處于起步階段,因此,開發出高精度傳感器數據記錄系統就顯得尤為重要.
本文設計的新型傳感器數據記錄系統采用三星公司生產的S3C2440A芯片作為MCU的核心控制元件,選用美國模擬器件公司生產的AD芯片AD7705,接受直接來自傳感器的低電平的輸入信號.該數據記錄系統實現二通道數據采集,每通道數據采樣率達500SPS,數據分辨率為16位,可以滿足工業現場高精度的應用需求.應用于汽車彈片彈力測試系統,直接采集彈力傳感器數值,數據顯示和控制選用觸摸數字顯示屏,直接設置控制參數,顯著提高了汽車彈片生產的可靠性.
AD7705芯片可實現雙通道全差分模擬輸入,利用∑-△轉換技術實現了16位無丟失代碼,非線性度為0.003﹪.低功耗,3 V電壓時,最大功耗為1 mW,等待電流的最大值為8 uA.AD7705可以接受直接來自傳感器低電平的輸入信號,然后產生串行的數字輸出,其串行接口可配置為三線接口,增益值、信號極性以及更新速率的選擇可用串行輸入口由軟件來配置[3].AD7705還包括自校準和系統校準選項,以消除器件本身或系統的增益和偏移誤差,是用于工業控制和智能系統的理想產品.

圖1 系統結構框圖

圖2 系統硬件框圖
系統主控電路主要由 S3C2440A、2片32M16bit位寬的SDRAM級聯成的64M32bit位寬的SDRAM和256 M的NAND FLASH組成.64 M的SDRAM能夠保證系統運行流暢,256 M的NAND FLASH裝載Bootloader引導程序、操作系統內核及文件系統,同時也為數據存儲提供了足夠的空間.
AD7705直接采集傳感器數值,通過SPI串行接口送給S3C2440A進行處理.S3C2440A具有2個SPI總線接口,可以支持輪詢、中斷和DMA數據傳輸模式.本設計中的SPI工作模式設定為輪詢模式.AD7705與 S3C2440A之間的接口連接如圖3所示.

圖3 數據采集模塊接口連接圖
嵌入式系統軟件一般由Bootloader引導程序、嵌入式操作系統以及應用程序構成,其結構如圖4所示.

圖4 系統軟件框圖
本系統軟件實現中,Bootloader引導程序選用U-Boot初始化硬件系統,設置內核參數并啟動內核;嵌入式操作系統選用嵌入式Linux操作系統,該操作系統具備的源碼開放、內核可裁減等特性使其成為嵌入式開發的首選.
U-Boot是一款功能強大的Bootloader,源碼開放,支持S3C2440A處理器,且對Linux操作系統的支持最為完善.U-Boot移植過程主要修改與硬件相關的文件,包括 smdk2440.h、flash.c、memsetup.c、s3c2440.c、Makefile 等 5 個文件,然后通過交叉編譯生成U-Boot.bin文件,燒寫到系統NAND FLASH上運行,裝載和引導操作系統內核.
嵌入式Linux內核主要由進程調度、內存管理、虛擬文件系統、網絡接口和進程間通信5個子系統組成[4].本系統選用 Linux-2.6.30 版本內核,主要移植步驟如下:
1)修改文件.主要修改與硬件相關的文件:mach_smdk2440.c,Makefile.
2)配置內核.運行 make menuconfig,產生config文件.
3)編譯內核.內核配置完成之后,執行make命令進行編譯,在/arch/arm/boot/目錄中生成系統需要的內核鏡像zImage.
4)燒寫內核.把編譯生成的zImage鏡像燒寫到系統NAND FLASH上運行.
系統軟件的實現流程如圖5所示.

圖5 系統軟件流程圖
當系統啟動后,首先各個模塊初始化,同時初始化AD7705和S3C2440A的SPI控制器.


S3C2440A的SPI控制器初始化主要完成控制寄存器SPCON設置、波特率SPPRE設置和GPIO口的設置等.SPI控制器初始化函數如下:

在本設計中,把AD7705驅動作為字符設備驅動加載在Linux內核中[5],AD7705驅動模塊的工作流程如圖6所示.

圖6 AD7705驅動工作流程圖
本系統應用程序采用諾基亞開發的QT來實現.QT是一個跨平臺的C++圖形用戶界面應用程序框架,它提供給應用程序開發者建立藝術級的圖形用戶界面所需的所有功能,完全面向對象,容易擴展,并且允許真正地組件編程[6].
該系統應用于汽車彈片彈力測試系統,進行二路采集汽車彈片彈力傳感器數值,在觸摸屏上實時顯示汽車彈片彈力大小和檢測結果,顯示數值為小數點后3位(例如:30.000 g).通過系統設置進行彈片彈力合格數值上下限自由設定,所有采集數據保存在NAND FLASH中.為其定制的QT程序主界面如圖7所示,系統設置汽車彈片彈力上下限值26~27 g為合格,啟動運行,系統實際采集運行界面如圖8所示.

圖7 QT圖形控制界面

圖8 QT圖形實際運行界面
新型傳感器數據記錄系統采用32位微控制器S3C2440A作為主控電路,通過16位AD7705芯片直接采集傳感器數據,利用QT圖形化應用界面實現應用程序,完成高精度數據采集記錄.應用于汽車彈片彈力測試系統,實現數據記錄和控制生產,完全滿足高精度和高可靠性要求,在其他如環境監測等領域有著廣闊的應用前景.
[1]張永梅,韓焱,張建華.高分辨率多路數據采集及傳輸系統的設計[J].中北大學學報:自然科學版,2006,27(4):301-305.
[2]李新洲,趙立宏.基于ARM和嵌入式Linux的手持數據分析儀的設計[J].工業控制計算機,2011(1):88-89.
[3]閆瑞杰,李海香,郝瑞霞.基于 ATmega16的AD7705多通道模擬量采集系統設計[J].化工自動化及儀表,2011(1):466 -468,487.
[4]佚名.Linux Kernel HTML Documentation Kernel Version[EB/OL].(2011-09-26)[2012-06-14].http://mjxian.cn/kernel- book.
[5]李勝朝,黃先祥,謝建.嵌入式 Linux系統中字符設備驅動程序的開發[J].計算機工程,2007,33(4):5-8.
[6]Jasmin Blanchette,Mark Summerfield.C++GUIQt4編程:第2版[M].閆峰,曾泉人,張志強,譯.北京:電子工業出版社,2008:421-423.