任一飛,徐熙平,王春陽,蘇玉靖
(長春理工大學 光電工程學院,長春 130022)
光位置敏感探測器(Position Sensitive Detector,PSD)是上世紀70年代研制出的一種優秀的光電位置傳感器,它具有頻譜響應寬、響應速度快、信號處理簡單、分辨率高、便于與微機接口等優點,在精密尺寸測量以及工業檢測和監測等非接觸測量領域有廣泛的運用。隨著PSD的大量使用,其自身缺點也暴露出來,一方面受限于早期硬件條件以及成本的考慮,無法使用更高精度的AD來進行數據采集,另一方面還有其自身的非線性誤差無法避免,雖然在中央區線性度比較理想,但是在邊緣區的準確度卻受嚴重制約,所以應當尋求一種兼顧硬件和軟件兩個方面提高PSD精度的辦法。
本文選擇在嵌入式領域廣泛使用的ARM9處理器,在開發板上設計實現數據采集的硬件平臺,同時在嵌入式平臺上運行Linux操作系統做數據處理,這樣便從硬件和軟件兩個方面提高了PSD測量的總體精度。
本系統是由信號預處理、A/D變換、控制模塊、總線模塊及核心處理器組成,其總體結構如圖1所示。

圖1 系統總體結構Fig.1 The struc ture of system
系統的軟件平臺采用開源并非常適合做嵌入式的Linux操作系統,使用U-boot作為系統的Bootloader,內核采用Linux2.6.34版本,文件系統使用YAFFS2[1]。嵌入式硬件環境核心處理器使用三星公司的S3C2440A,嵌入式系統移植的主要步驟如下:
(1)U-boot移植,由于硬件開發環境使NANDFlash,所以移植的主要任務便是使U-boot可以支持NAND啟動,同時使其支持Yaffs2文件系統。
①修改U-boot對NANDFlash支持。
首先需要在配置文件include/configs/S3C2440.h中添加支持NANDFlash操作的相關宏定義,具體操作如下。

然后,在drivers/mtd/nand/Makefile文件中添加s3c2440_nand.c的編譯項,如下:

重新編譯U-boot,燒入NANDFlash,重新啟動,便可看到NAND相關操作命令可以使用了。
②接下來需要修改U-boot支持Yaffs2文件系統支持。
首先在include/configs/unsp2440.h中添加yaffs2燒寫宏定義,如下:


接著在include/linux/mtd/mtd.h頭文件的mtd_info結構體中添加移植中用到rw_oob和skipfirstblk數據成員;在nand_write_skip_bad函數中添加對Nand OOB的相關操作;最后在nand_write函數中添加對yaffs2的支持。重新編譯U-boot,會在help菜單中發現已經支持對Yaffs2文件系統燒寫的命令了。
(2)內核移植,該部分主要完成的工作是修改MTD分區使其與bootloader中的分區表一致,以及使該版本的內核支持Yaffs2文件系統[2]。
①修改MTD分區表,編輯文件arch/arm/plat-s3c24xx/common-smdk.c。

②執行如下命令將Yaffs2文件補丁寫到內核中去,使其支持文件系統。
# ./patch-ker.sh c/opt/studyarm/linux-2.6.34/(本系統使用路徑)
完成以上操作,通過配置內核,編譯內核,最終會在arch/arm/boot/目錄下生成zImage內核文件。
(3)使用BusyBox將YAFFS2文件系統制作完成。U-boot可以支持網燒寫,可以通過tftp服務器,將配置好的內核與文件系統燒入NANDFlash中對應位置即可運行嵌入式系統[3]。

圖2 A D電路圖Fig.2 Circuitdia gram of AD 92 44
本次采集系統所使用的是14位、65MSPS的數模轉換器AD9244。該芯片使用多級差分流水線架構,內部包含高性能的采樣放大器、基準的電壓源及誤差修正電路。芯片在整個系統中的接口電路如圖2所示,在整個電路中,模擬地和數字地采用了地層的形式,并且都是單點接地,同時在電路中也采取了防靜電措施,從而保證了AD的正常工作。
PSD器件的非線性誤差是影響該器件性能的重要指標,除了可以使用硬件電路彌補誤差外,在嵌入式系統下,可以使用函數來實現算法,從而對其非線性的誤差進行彌補[4]。通常用來補償PSD非線性誤差的算法有:插值法、逆誤差傳播算法(BP算法)等[5,6]。但插值法容易產生震蕩,BP算法收斂較慢,在這里可以使用小生境遺傳算法加上BP算法來共同處理數據,這樣便克服了BP算法收斂速度慢的缺點[7],算法流程圖3所示。

圖3 算法流程圖Fig.3 The flow chatofalgorithm
最終在MatLab7.0下,取100組數據和30組測試樣本,分別使用BP算法與改進型的BP算法進行測試。測試后結果圖5所示,可以看出使用改進型的BP算法克服了傳統BP算的缺點,收斂速度有了較大提升。

圖4 改進型BP算法與BP算法比較Fig.4 Compare improved BPandBP
本文提出了一種使用嵌入式平臺搭載采集系統硬件,嵌入式系統運行采集系統數據、處理軟件的方式,使用嵌入式系統比傳統意義上使用單片機在測量精確度上有一定程度的提高,同時使用后臺算法去進行數據處理,補償了PSD器件的非線性誤差,使PSD器件的測量精度有了提高,具有一定的應用價值。
[1]韋東山.嵌入式Linux應用開發完全手冊第9版[M].北京:人民郵電出版社,2010.
[2]楊宗德,鄧玉春.Linux高級程序設計第2版[M].北京:人民郵電出版社,2009.
[3]潘巨龍,黃寧.ARM9嵌入式Linux系統構建與應用[M].北京:北京航空航天大學出版社,2006.
[4]張廣軍.PSD器件及其在精密測量中的應用[J].北京航空航天大學學報,1994,20(3):259-262.
[5]袁紅星,王志興,賀安之.PSD非線性修正的算法研究[J].儀器儀表學報,1999,20(3):271-274.
[6]劉邁.改進型的神經網絡PSD非線性補償研究[J].中國測試,2009,35(2):37-39.
[7]孫晶華,桑恩方,莫長濤,等.一維PSD非線性修正的共軛梯度算法[J].光學技術,2004,30(4):481-483.