任一飛,徐熙平,王春陽,蘇玉靖
(長春理工大學 光電工程學院,長春 130022)
光位置敏感探測器(Position Sensitive Detector,PSD)是上世紀70年代研制出的一種優(yōu)秀的光電位置傳感器,它具有頻譜響應寬、響應速度快、信號處理簡單、分辨率高、便于與微機接口等優(yōu)點,在精密尺寸測量以及工業(yè)檢測和監(jiān)測等非接觸測量領(lǐng)域有廣泛的運用。隨著PSD的大量使用,其自身缺點也暴露出來,一方面受限于早期硬件條件以及成本的考慮,無法使用更高精度的AD來進行數(shù)據(jù)采集,另一方面還有其自身的非線性誤差無法避免,雖然在中央?yún)^(qū)線性度比較理想,但是在邊緣區(qū)的準確度卻受嚴重制約,所以應當尋求一種兼顧硬件和軟件兩個方面提高PSD精度的辦法。
本文選擇在嵌入式領(lǐng)域廣泛使用的ARM9處理器,在開發(fā)板上設計實現(xiàn)數(shù)據(jù)采集的硬件平臺,同時在嵌入式平臺上運行Linux操作系統(tǒng)做數(shù)據(jù)處理,這樣便從硬件和軟件兩個方面提高了PSD測量的總體精度。
本系統(tǒng)是由信號預處理、A/D變換、控制模塊、總線模塊及核心處理器組成,其總體結(jié)構(gòu)如圖1所示。
圖1 系統(tǒng)總體結(jié)構(gòu)Fig.1 The struc ture of system
系統(tǒng)的軟件平臺采用開源并非常適合做嵌入式的Linux操作系統(tǒng),使用U-boot作為系統(tǒng)的Bootloader,內(nèi)核采用Linux2.6.34版本,文件系統(tǒng)使用YAFFS2[1]。嵌入式硬件環(huán)境核心處理器使用三星公司的S3C2440A,嵌入式系統(tǒng)移植的主要步驟如下:
(1)U-boot移植,由于硬件開發(fā)環(huán)境使NANDFlash,所以移植的主要任務便是使U-boot可以支持NAND啟動,同時使其支持Yaffs2文件系統(tǒng)。
①修改U-boot對NANDFlash支持。
首先需要在配置文件include/configs/S3C2440.h中添加支持NANDFlash操作的相關(guān)宏定義,具體操作如下。
然后,在drivers/mtd/nand/Makefile文件中添加s3c2440_nand.c的編譯項,如下:
重新編譯U-boot,燒入NANDFlash,重新啟動,便可看到NAND相關(guān)操作命令可以使用了。
②接下來需要修改U-boot支持Yaffs2文件系統(tǒng)支持。
首先在include/configs/unsp2440.h中添加yaffs2燒寫宏定義,如下:
接著在include/linux/mtd/mtd.h頭文件的mtd_info結(jié)構(gòu)體中添加移植中用到rw_oob和skipfirstblk數(shù)據(jù)成員;在nand_write_skip_bad函數(shù)中添加對Nand OOB的相關(guān)操作;最后在nand_write函數(shù)中添加對yaffs2的支持。重新編譯U-boot,會在help菜單中發(fā)現(xiàn)已經(jīng)支持對Yaffs2文件系統(tǒng)燒寫的命令了。
(2)內(nèi)核移植,該部分主要完成的工作是修改MTD分區(qū)使其與bootloader中的分區(qū)表一致,以及使該版本的內(nèi)核支持Yaffs2文件系統(tǒng)[2]。
①修改MTD分區(qū)表,編輯文件arch/arm/plat-s3c24xx/common-smdk.c。
②執(zhí)行如下命令將Yaffs2文件補丁寫到內(nèi)核中去,使其支持文件系統(tǒng)。
# ./patch-ker.sh c/opt/studyarm/linux-2.6.34/(本系統(tǒng)使用路徑)
完成以上操作,通過配置內(nèi)核,編譯內(nèi)核,最終會在arch/arm/boot/目錄下生成zImage內(nèi)核文件。
(3)使用BusyBox將YAFFS2文件系統(tǒng)制作完成。U-boot可以支持網(wǎng)燒寫,可以通過tftp服務器,將配置好的內(nèi)核與文件系統(tǒng)燒入NANDFlash中對應位置即可運行嵌入式系統(tǒng)[3]。
圖2 A D電路圖Fig.2 Circuitdia gram of AD 92 44
本次采集系統(tǒng)所使用的是14位、65MSPS的數(shù)模轉(zhuǎn)換器AD9244。該芯片使用多級差分流水線架構(gòu),內(nèi)部包含高性能的采樣放大器、基準的電壓源及誤差修正電路。芯片在整個系統(tǒng)中的接口電路如圖2所示,在整個電路中,模擬地和數(shù)字地采用了地層的形式,并且都是單點接地,同時在電路中也采取了防靜電措施,從而保證了AD的正常工作。
PSD器件的非線性誤差是影響該器件性能的重要指標,除了可以使用硬件電路彌補誤差外,在嵌入式系統(tǒng)下,可以使用函數(shù)來實現(xiàn)算法,從而對其非線性的誤差進行彌補[4]。通常用來補償PSD非線性誤差的算法有:插值法、逆誤差傳播算法(BP算法)等[5,6]。但插值法容易產(chǎn)生震蕩,BP算法收斂較慢,在這里可以使用小生境遺傳算法加上BP算法來共同處理數(shù)據(jù),這樣便克服了BP算法收斂速度慢的缺點[7],算法流程圖3所示。
圖3 算法流程圖Fig.3 The flow chatofalgorithm
最終在MatLab7.0下,取100組數(shù)據(jù)和30組測試樣本,分別使用BP算法與改進型的BP算法進行測試。測試后結(jié)果圖5所示,可以看出使用改進型的BP算法克服了傳統(tǒng)BP算的缺點,收斂速度有了較大提升。
圖4 改進型BP算法與BP算法比較Fig.4 Compare improved BPandBP
本文提出了一種使用嵌入式平臺搭載采集系統(tǒng)硬件,嵌入式系統(tǒng)運行采集系統(tǒng)數(shù)據(jù)、處理軟件的方式,使用嵌入式系統(tǒng)比傳統(tǒng)意義上使用單片機在測量精確度上有一定程度的提高,同時使用后臺算法去進行數(shù)據(jù)處理,補償了PSD器件的非線性誤差,使PSD器件的測量精度有了提高,具有一定的應用價值。
[1]韋東山.嵌入式Linux應用開發(fā)完全手冊第9版[M].北京:人民郵電出版社,2010.
[2]楊宗德,鄧玉春.Linux高級程序設計第2版[M].北京:人民郵電出版社,2009.
[3]潘巨龍,黃寧.ARM9嵌入式Linux系統(tǒng)構(gòu)建與應用[M].北京:北京航空航天大學出版社,2006.
[4]張廣軍.PSD器件及其在精密測量中的應用[J].北京航空航天大學學報,1994,20(3):259-262.
[5]袁紅星,王志興,賀安之.PSD非線性修正的算法研究[J].儀器儀表學報,1999,20(3):271-274.
[6]劉邁.改進型的神經(jīng)網(wǎng)絡PSD非線性補償研究[J].中國測試,2009,35(2):37-39.
[7]孫晶華,桑恩方,莫長濤,等.一維PSD非線性修正的共軛梯度算法[J].光學技術(shù),2004,30(4):481-483.