關(guān)鍵詞:光柵位移傳感器;莫爾條紋;插值;FPGA;NiosII
1 概述
??? 目前,光柵的電子細(xì)分技術(shù)是提高光柵位移傳感器分辨率的主要途徑,可分為軟件細(xì)分法和硬件細(xì)分法。軟件細(xì)分法雖然可以達(dá)到較高的細(xì)分?jǐn)?shù),但由于受到A/D器件轉(zhuǎn)換精度和轉(zhuǎn)換時(shí)間的限制,一定程度上影響了測(cè)量的實(shí)時(shí)性。硬件細(xì)分法一般用在細(xì)分?jǐn)?shù)不太高的場(chǎng)合,而且隨著細(xì)分?jǐn)?shù)的提高,電路會(huì)變得更加復(fù)雜。本文使用專用插值芯片(IC—NV)對(duì)前端輸出的正交信號(hào)進(jìn)行插值細(xì)分,利用FPGA對(duì)插值細(xì)分后的信號(hào)進(jìn)行二次細(xì)分;同時(shí)利用QuartusII中的Component Editor工具設(shè)計(jì)了二次細(xì)分辨向組件、測(cè)速組件及LCD控制組件,并通過(guò)Avalon總線與NiosII軟核處理器進(jìn)行連接,實(shí)現(xiàn)了系統(tǒng)的集成和模塊化。
2 莫爾條紋及四倍頻直接細(xì)分的原理
??? 莫爾條紋的電子細(xì)分是提高光柵位移傳感器分辨率的主要途徑之一。莫爾條紋是光柵位移傳感器工作的基礎(chǔ)。莫爾條紋間距近似為光柵柵距的1/θ倍(θ為主副光柵之間的夾角),并且方向近似與柵線方向垂直。當(dāng)其中任一光柵沿垂直于刻線方向移動(dòng)一個(gè)柵距時(shí),莫爾條紋就在柵線方向上移動(dòng)條紋間距,因此可以通過(guò)檢測(cè)莫爾條紋的移動(dòng)來(lái)計(jì)算指示光柵移動(dòng)的距離。
??? 對(duì)于橫向莫爾條紋,為了判定指示光柵的位移方向進(jìn)行可逆計(jì)數(shù)以及削弱直流電平漂移對(duì)測(cè)量精度的影響,可在一個(gè)莫爾條紋內(nèi)等距放置4個(gè)光電收發(fā)元件。當(dāng)條紋依次掃過(guò)這4個(gè)光電收發(fā)元件時(shí),便會(huì)產(chǎn)生4路相位分別為O°、90°、180°、270°的信號(hào),通過(guò)運(yùn)放差動(dòng)放大電路即可實(shí)現(xiàn)四細(xì)分。但是,實(shí)際應(yīng)用中要實(shí)現(xiàn)4個(gè)光電收發(fā)元件的等距排列是非常困難的。目前,大多數(shù)的光柵位移傳感器都采用光閘莫爾條紋來(lái)實(shí)現(xiàn)四細(xì)分,如圖1所示。
??? 光閘式光柵副的指示光柵上刻有4個(gè)裂相窗口,各個(gè)窗口內(nèi)柵線與主光柵一致,且相鄰兩個(gè)窗口之間依次間隔(n+1/4)d。其中,d為柵距(這里為20 μm),n為整數(shù)。這樣,當(dāng)O°窗口的柵線與主光柵完全重疊時(shí),窗口最亮,形成亮帶;180°窗口的柵線與主光柵柵線互相遮擋,形成暗帶;90°和270°窗口的柵線縫隙被遮擋一半,處于半明半暗狀態(tài)。因此,當(dāng)移動(dòng)指示光柵時(shí),4個(gè)窗口內(nèi)的光強(qiáng)依次呈現(xiàn)周期性的變化。在窗口區(qū)域安放光電收發(fā)元件對(duì)光強(qiáng)進(jìn)行檢測(cè),便可得到依次相差π/2的4路正弦波信號(hào)。
3 光柵信號(hào)的產(chǎn)生及差值的實(shí)現(xiàn)
3.1 系統(tǒng)總體方案計(jì)
??? 系統(tǒng)原理框圖如圖2所示。光電轉(zhuǎn)換后輸出的4路相差90°的正余弦電流信號(hào)經(jīng)過(guò)2個(gè)前置差分放大器處理后,轉(zhuǎn)換為電壓信號(hào)并且消除了直流電平,得到相位相差90°的正交信號(hào)sinθ/COSθ。為了消除正交信號(hào)中摻雜的噪聲信號(hào),設(shè)計(jì)了有源二階巴特沃斯低通濾波器。濾波后的信號(hào)經(jīng)過(guò)插值專用芯片IC—NV后,便可送入FPGA進(jìn)行二次細(xì)分辨向、測(cè)速和數(shù)字顯示工作。
3.2 光電轉(zhuǎn)換及前置放大電路
??? 光電二極管的光電流一般為μA級(jí)別,而放大電路中反饋電阻一般采用MΩ量級(jí)的電阻。因此,運(yùn)放的輸入偏置電流的影響不能忽略,要選用輸入偏置電流小的FET輸入型運(yùn)算放大器。本文選用TI公司的4路LinCMOS運(yùn)放TLC279CN。它具有輸入失調(diào)電壓低、輸入電阻高、噪聲低的特點(diǎn),25°時(shí)的典型輸入偏置電流為60 pA,遠(yuǎn)小于光電二極管的光電流。光電二極管可以工作在零偏置或反向偏置方式。在反向偏置方式下,光電二極管可以實(shí)現(xiàn)較高的切換速度;但要以犧牲線性為代價(jià),并且在無(wú)光條件下仍有很小的電流,稱為“暗電流”。零偏置電路受暗電流的影響較小,對(duì)于微小照度,可以保持照度與輸出成線性比例關(guān)系。
??? 圖3采用反向并接光電二級(jí)管的方式。該方式可以有效地削弱直流電平和偶次諧波。由于后端插值芯片單端輸入時(shí)對(duì)輸入信號(hào)直流電平和峰峰值有限制,因此在正相輸入端設(shè)置可變電阻調(diào)節(jié)輸出的直流電平至2.5 V,同時(shí)通過(guò)調(diào)節(jié)反饋電阻使輸出電壓的峰峰值為1 V。
3.3 低通濾波器的設(shè)計(jì)
??? 由于目前光柵的移動(dòng)速度多在120 m/min,最大不超過(guò)600 m/min,且光柵柵距為20μm時(shí)輸出的正交信號(hào)的頻率不超過(guò)500 kHz。因此,選定低通濾波器的截止頻率為fc=500 kHz,通帶增益K=1。具體設(shè)計(jì)電路如圖4所示。
3.4 差值電路的實(shí)現(xiàn)
??? IC—NV是IC—HAUS公司的單片A/D轉(zhuǎn)換芯片,能夠?qū)斎氲膕inθ/COSθ信號(hào)進(jìn)行插值,從而輸出增量的正交編碼信號(hào)。IC—NV芯片的內(nèi)部結(jié)構(gòu)及外圍電路如圖5所示。其內(nèi)部集成了高速的比較器和毛刺濾波器,以保證信號(hào)的高速轉(zhuǎn)換和完整性;輸入/輸出引腳具有ESD防護(hù),且與TTL、CMOS電平兼容,接口簡(jiǎn)單可靠。
??? sinθ/cosθ信號(hào)首先進(jìn)入芯片內(nèi)部的前置儀表放大器。其增益取決于輸入信號(hào)的電平及SG0、SGl引腳的狀態(tài)。通過(guò)將SGO、SGl置為高、低電平或開路來(lái)選擇不同的增益值,以適應(yīng)峰峰值為20 mV~1.3 V的差分信號(hào)輸入(單端信號(hào)峰峰值可達(dá)2.6 V)。本系統(tǒng)中,sinθ和cosθ信號(hào)使用單端輸入方式,峰峰值為2 V,直流偏置為2.5V。因此在使用時(shí)需將NS和NC引腳與VREF(2.5 V)相連,以消除直流偏置。
??? 前置儀表放大器輸出的信號(hào)經(jīng)過(guò)高速轉(zhuǎn)換核心和轉(zhuǎn)換間距控制單元后進(jìn)入后端信號(hào)處理單元。該單元根據(jù)不同的插值因子(Interpolat-ion Factor,IPF)輸出相應(yīng)的方波信號(hào)。9種不同的插值因子可以通過(guò)SF0和SFl引腳來(lái)配置,最高可以實(shí)現(xiàn)每個(gè)輸入信號(hào)周期的64倍細(xì)分。
4 光柵信號(hào)處理電路的FPGA實(shí)現(xiàn)
4.1 NioslI處理器及其硬件平臺(tái)
??? NioslI處理器是A1tera公司在2004年推出的第二代軟核CPU。NiosII軟核處理器基于哈佛總線結(jié)構(gòu),采用32位RISC單周期指令集、32位數(shù)據(jù)總線及流水線技術(shù),支持32個(gè)外部中斷和可配置的MMU/MPU。NiosII有3個(gè)型號(hào):e型、s型、f型。它們分別是針對(duì)不同應(yīng)用要求優(yōu)化的:e型的面積最小,只需550個(gè)LE(邏輯單元);f型的性能最高,最大性能可達(dá)200DMIPs以上;s型又叫標(biāo)準(zhǔn)型,其面積與性能介于e型與f型之間。
NiosII處理器通過(guò)AvaIon總線與外設(shè)進(jìn)行連接。Avalon接口規(guī)范定義了主端口和從端口所需的信號(hào)和時(shí)序。它能以最少的邏輯資源來(lái)實(shí)現(xiàn)數(shù)據(jù)總線復(fù)用、地址譯碼、等待周期產(chǎn)生、地址對(duì)齊、中斷優(yōu)先級(jí)產(chǎn)生及仲裁等操作。用戶可以根據(jù)主從端口的規(guī)范在SOPC Builder中創(chuàng)建各種自定義組件,并掛到Avalon總線上。NiosII處理器支持多達(dá)256條用戶定制指令,極大地提高了軟件的執(zhí)行效率。這些優(yōu)勢(shì)使得NiosII系統(tǒng)成為可裁剪、可調(diào)整、可擴(kuò)展的系統(tǒng),更使其成為軟硬件緊密融合的系統(tǒng)。
??? 系統(tǒng)中選用CycloneII系列的FPGA EP2C5Q208,并且擴(kuò)展了64 Mb SDRAM HY57 V641620和16 Mb Flash AMD29LVl60來(lái)構(gòu)建NiosII系統(tǒng)。? EP2C5系列FPGA內(nèi)部擁有4 608個(gè)Le和119 808位的RAM,并提供2個(gè)PLL和158個(gè)用戶引腳,完全能夠滿足本系統(tǒng)設(shè)計(jì)的需求。系統(tǒng)選用主動(dòng)串行配置芯片EPCS1,該非易失性芯片具有1 Mb的內(nèi)部容量,遠(yuǎn)大于EP2C5Q208所支持的最大配置文件的大小。當(dāng)系統(tǒng)上電時(shí),EPCS就可將配置數(shù)據(jù)重載到FPGA的配置RAM中。
4.2 二次細(xì)分辨向組件設(shè)計(jì)
??? 二次細(xì)分辨向組件的設(shè)計(jì)包括組件邏輯的硬件描述文件和軟件文件的設(shè)計(jì)。其中,硬件描述文件由任務(wù)邏輯模塊、寄存器描述模塊和Avalon接口模塊組成。軟件文件由HAL驅(qū)動(dòng)文件的源文件(my_avalon-quadrature.c)、頭文件(my_avalon_quadrature.h)和寄存器訪問(wèn)的頭文件(my_avalon_quadrature_regs.h)組成。這些文件的組織結(jié)構(gòu)如圖6所示。
??? 使用SOPC Builder中的Component Editor工具添加相應(yīng)的硬件描述文件、信號(hào)接口和軟件文件,便可以方便地將用戶自定義組件集成到系統(tǒng)元件庫(kù)中去。為了實(shí)現(xiàn)NiosII處理器與自定義組件之間交換數(shù)據(jù),首先需要定義一組寄存器,并對(duì)寄存器進(jìn)行地址分配,同時(shí)根據(jù)Aval-on總線的時(shí)序?qū)拇嫫鬟M(jìn)行存取操作。本組件中定義的脈沖計(jì)數(shù)寄存器Countnum_reg[31:0]和方向寄存器Dir_reg均為只讀寄存器,且相對(duì)地址分別為O和1。
任務(wù)邏輯設(shè)計(jì)是自定義組件設(shè)計(jì)過(guò)程中最重要的部分,主要實(shí)現(xiàn)插值芯片輸出正交信號(hào)的四細(xì)分,同時(shí)更新Countnum_reg和Dir_reg的值。如圖7所示,正交信號(hào)A2/B2的相位關(guān)系隨著光柵位移傳感器運(yùn)動(dòng)方向的不同而改變。當(dāng)光柵讀數(shù)頭正向移動(dòng)時(shí),A2相信號(hào)超前于B2相信號(hào)90°,A2/B2兩信號(hào)的電平變化規(guī)律為OO→10→11→01→00。當(dāng)光柵讀數(shù)頭反向移動(dòng)時(shí),A2相信號(hào)滯后于B2相信號(hào)90°,A2/B2兩信號(hào)的電平變化規(guī)律為00→01→ll→10→00。這樣,就可以通過(guò)判斷電平之間的狀態(tài)變化來(lái)決定是否對(duì)計(jì)數(shù)器進(jìn)行操作。當(dāng)狀態(tài)變化為00→10→11 →01→00時(shí),對(duì)Countnum_reg進(jìn)行加1操作,并將Dir_reg置1;而當(dāng)變化為00→01→ll→10→OO時(shí),則對(duì)Countnum_reg進(jìn)行減1操作并將Dir_-reg置0。若狀態(tài)保持不變,則計(jì)數(shù)器和方向值保持不變。其余狀態(tài)之間的變化,規(guī)定為無(wú)效。
??? 上述的4個(gè)狀態(tài)之間的轉(zhuǎn)移可以通過(guò)設(shè)計(jì)有限狀態(tài)機(jī)來(lái)實(shí)現(xiàn)。系統(tǒng)主時(shí)鐘clk選用50 MHz,能夠保證正確采樣狀態(tài)之間的變化。該有限狀態(tài)機(jī)由5個(gè)狀態(tài)組成,它們分別是idle、00、01、l1、10。采用one—hot的編碼方式,可以有效地避免競(jìng)爭(zhēng)冒險(xiǎn)現(xiàn)象,提高抗干擾能力。其綜合生成的電路無(wú)論是在效率還是穩(wěn)定性方面都能夠滿足設(shè)計(jì)要求。任務(wù)邏輯模塊的仿真結(jié)果如圖8所示。
?
??? 若記錄相鄰兩次Countnum_reg的差值,便可通過(guò)以下的公式計(jì)算光柵讀數(shù)頭移動(dòng)的距離:
??? 式中:N為插值芯片的插值因子,d為光柵柵距。
4.3 二次細(xì)分測(cè)速組件設(shè)計(jì)
??? 光柵讀數(shù)頭的移動(dòng)速度應(yīng)在一定范圍之內(nèi),否則會(huì)造成丟數(shù)等誤差。測(cè)速組件主要對(duì)讀數(shù)頭的移動(dòng)速度進(jìn)行實(shí)時(shí)監(jiān)控,從而實(shí)現(xiàn)過(guò)速報(bào)警。其設(shè)計(jì)過(guò)程與二次細(xì)分辨向組件類似。移動(dòng)速度的計(jì)算公式如下:
??
式中:d為光柵柵距,f為插值芯片輸出正交信號(hào)的頻率,
??? N為插值芯片的插值因子,n為t時(shí)間內(nèi)正交信號(hào)的個(gè)數(shù)。由此可知,只要測(cè)出頻率f即可求得移動(dòng)速度。
??? 寄存器描述文件中定義了4個(gè)寄存器,如表1所列。
??? 任務(wù)邏輯設(shè)計(jì)采用測(cè)周期的方法,即根據(jù)Div_reg中的分頻因子對(duì)待測(cè)信號(hào)tclk進(jìn)行分頻,在分頻后信號(hào)的高電平內(nèi)記錄標(biāo)準(zhǔn)信號(hào)sclk的個(gè)數(shù),并在其下降沿將計(jì)數(shù)值存到COUnt_reg中。同時(shí),在其低電平內(nèi)將Countready_reg置1,通知AVaIon主設(shè)備計(jì)數(shù)值已就緒。待測(cè)頻率的計(jì)算公式如下:
???
??? 該方法可能會(huì)產(chǎn)生±1個(gè)標(biāo)準(zhǔn)脈沖的測(cè)量誤差,由于系統(tǒng)標(biāo)準(zhǔn)頻率與待測(cè)正交信號(hào)相比為高頻信號(hào),因此能實(shí)現(xiàn)高精度的頻率測(cè)量。
4.4 LCD控制組件的設(shè)計(jì)
??? 本系統(tǒng)中使用的LCD為128×64的點(diǎn)陣黑白屏,其內(nèi)嵌控制器為KS0107/KS0108。該液晶模塊的D/I引腳用于指示模塊處理數(shù)據(jù)/命令;R/W引腳控制讀/寫操作;EN引腳為使能信號(hào),CSl/CS2為屏幕的左右半屏控制器片選信號(hào)。
??? 本系統(tǒng)在NiosII IDE開發(fā)環(huán)境中設(shè)計(jì)應(yīng)用程序,其程序流程如圖9所示。
?
5 結(jié)論
??? ①與傳統(tǒng)的分立元件細(xì)分電路相比,本系統(tǒng)中使用了專用的插值芯片IC—NV,不但提高了系統(tǒng)集成度,而且在簡(jiǎn)化PCB設(shè)計(jì)的同時(shí)提高了細(xì)分?jǐn)?shù)。NiosII嵌入式處理器使用,既提高了系統(tǒng)性能,又降低了費(fèi)用。利用Component Editor工具設(shè)計(jì)的二次細(xì)分辨向模塊、測(cè)速模塊及LCD控制模塊,可以隨時(shí)根據(jù)需要更改驅(qū)動(dòng)程序并可重復(fù)利用,實(shí)現(xiàn)了系統(tǒng)的集成和模塊化。
??? ②仿真結(jié)果表明,該系統(tǒng)設(shè)計(jì)簡(jiǎn)單靈活,穩(wěn)定性高,實(shí)時(shí)性強(qiáng),可通過(guò)調(diào)節(jié)插值芯片的插值數(shù)實(shí)現(xiàn)高達(dá)64倍的細(xì)分。
評(píng)論
查看更多