角度傳感器在與FPGA正確配合下能夠幫助工程師打造出無與倫比的機械。 作者:N. N. Murty Scientist “F” S. B. Gayen Scientist “F” Manish Nalamwar Scientist “D” nalamwar.manishkumar@rcilab.in K. Jhansi Lakshmi, 技術官“C” 印度海德拉巴印度國防研究發展組織IMARAT研究中心雷達導引頭實驗室 自從人類發明了轉輪,我們就希望了解如何通過改變精度提高轉輪轉動效率。在過去幾個世紀,科學家和工程師已經研發了許多方法來實現此目標,期間輪-軸系統的基本原理得到了廣泛應用,從汽車、音量旋鈕、各種機械形式的齒輪到簡陋的手推車,幾乎每種機械系統均采用了這一原理[1]。 經過多個時代的探索,人們發現讓轉輪高效運轉的最重要因素并非轉輪本身(為何不徹底改造它呢?),而是轉輪的軸角。目前測量和優化軸角的最有效方法是采用角度傳感器。現有許多種角度傳感器都能夠通過輪軸監控和改進促進輪周效率優化;但如果配合使用FPGA,您就能夠取得非常顯著的效果,同時能夠提高眾多應用中的輪軸/輪周效率。 在詳細介紹工程師們如何最佳利用賽靈思FPGA達到上述目的之前,先讓我們簡單回顧一下角度傳感器的部分基本原理。目前得到廣泛應用就是編碼器和分解器這兩類角度傳感器。 編碼器和分解器的類型 編碼器分為增量和絕對兩個基本類別。增量編碼器可以監控輪軸上的兩個位置,并且可以在輪軸每次經過這兩個位置時產生A或B脈沖。獨立的外部電動計數器然后從這些脈沖解讀出轉速和旋轉方向。雖然適用于眾多應用,但是增量式計數器確實存在某些不足。例如,在輪軸停轉情況下,增量編碼器在開始運行之前必須首先通過調回到某個指定校準點來實現自身校準。另外,增量式計數器易受到電氣干擾的影響,導致發送到系統的脈沖不準確,進而造成旋轉計數錯誤。不僅如此,許多增量編碼器屬于光電器件 – 如果對目標應用有影響,則無法用于輻射危險區域。 圖1 – 分解器轉子激勵 分解器繞組 ROTOR:轉子 STATOR:定子 絕對編碼器是監控輪軸旋轉計數和方向的傳感器系統。在基于絕對編碼器的系統中,用戶一般把轉輪連接到具有電觸頭或光電基準的輪軸。在輪軸運行時,基于絕對編碼器的系統會記錄旋轉和運行方向,同時產生易于轉換成代碼(最常見的是二進制碼或格雷碼)的并行數字輸出。絕對編碼器的優勢在于只需要校準一次(一般是在工廠中校準),而無需每次使用前都校準。此外,絕對編碼器一般比其它編碼器更可靠。不過,絕對編碼器一般很昂貴,而且它們不利于進行并行數據傳輸,尤其是在測量其讀數的電子系統距離編碼器較遠情況下。 分解器就其本身而言是一種旋轉變壓器——一種輸出電壓與其所監控的輸入軸角唯一關聯的模擬器件。它是一款具有0~360旋轉角度的絕對位置傳感器,其直接連接到輪軸并報告轉速和位置。分解器與編碼器相比有諸多優勢。分解器非常穩健可靠,能夠經受帶有灰塵、油污、極端溫度、振動和輻射的嚴酷環境。作為一種變壓器,分解器可以提供信號隔離以及對電氣干擾的自然共模抑制。除了這些特性之外,分解器只需要四根線就可進行角數據傳輸,這使其能夠適用于從重工業、微型系統到航空航天工業等各種應用。 無刷分解器得到了進一步改進,其無需與轉子的滑環連接。因此,這種分解器更可靠,而且使用壽命更長。 分解器采用兩種方式獲取與軸角相關的輸出電壓。在第一種方式中,如圖1所示的轉子繞組由交變信號激勵,而輸出來自兩個定子繞組。由于定子是以機械方式定位到正確角度,因此輸出信號幅度是通過軸角的三角正弦和余弦關聯。正弦與余弦信號均具有與原始激勵信號相同的相位;僅其幅度隨輪軸的旋轉通過正弦與余弦進行調制。 圖2 – 分解器數字轉換器(RDC)方框圖 圖中文字如下: ROTOR REFERENCE:轉子基準 STATOR INPUTS:定子輸入 COSINE MULTIPLIER:余弦乘法器 SINE MULTIPLIER:正弦乘法器 UP /DOWN COUNTER:遞增/遞減計數器 LATCHES:鎖存器 DETECTOR:檢測器 ERROR:誤差 INTEGRATOR:積分器 VELOCITY:速度 DIGITAL ANGLE:數字角度 WHEN ERROR = 0:當誤差=0 在第二種方式中,定子繞組由相位正交的交變信號激勵。然后在轉子繞組中感應電壓。繞組的幅度和頻率固定,但其相移隨軸角變化。 分解器可以放置到需要測量角度的位置[2]。而電子裝置一般指的是分解器數字轉換器(RDC),可以放置到需要測量數字輸出的位置。分解器的模擬輸出(含有輪軸角位置信息)然后經RDC轉換成數字形式。 典型RDC的功能 一般而言,分解器的兩個輸出會應用到RDC的正弦與余弦乘法器[3]。這些乘法器結合正弦和余弦查找表以及函數構成乘法數模轉換器。圖2顯示了其功能。 暫且假設開始時遞增/遞減計數器的當前狀態是一個代表試驗角度(trial angle)ψ的數值。轉換器設法調整數字角度ψ,使其一直等于并跟蹤所測量的模擬角度θ。 分解器的定子輸出電壓為: V1= V sinωt sinθ 方程1 V2= V sinωt cosθ 方程2 其中θ是分解器轉子的角度。數字角度ψ應用到余弦乘法器,其余弦乘以V1得出下式: V sinωt sinθ cosψ 方程3 數字角度ψ另外還應用到正弦乘法器,乘以V2得出下式: V sinωt cosθ sinψ 方程4 這兩個信號由誤差放大器相減求得出波形的誤差信號: (V sinωt sinθcosψ – V sinωt cosθ sinψ) 方程5 V sinωt (sinθ cosψ- cosθ sinψ) 方程6 根據三角恒等式,其簡化為: V sinωt [sin (θ -ψ)] 方程7 圖3 – SD-14620方框圖(單信道) 圖中文字如下: REFERENCE CONDITIONER:基準調節器 BIT DETECTOR:位檢測器 “S” OPTION SYNTHESIZED REFERENCE:“S”選項綜合基準 INPUT OPTION:輸入選項 CONTROL TRANSFORMER:控制變壓器 GAIN:增益 DEMODULATOR:解調器 HYSTERESIS:滯后 INTEGRATOR:積分器 DC/DC CONVERTER:DC/DC轉換器 14/16 BIT UP/DOWN COUNTER:14/16位遞增/遞減計數器 VCO & TIMING:VCO與時序 DATA LATCHES:數據鎖存器 FILTER:濾波器 47μf external capacitor:47μf外部電容 圖4 – OSC-15802基準振蕩器方框圖 圖中文字如下: QUAD OSCILLATOR:四線組振蕩器 檢測器采用分解器的轉子電壓作為基準同步解調此AC誤差信號。這會產生與sin (θ -ψ)成正比的DC誤差信號。 DC誤差信號饋送到積分器,其輸出驅動一個由電壓控制的振蕩器。而VCO會導致遞增/遞減計數器按正確方向計數,從而在一次計數中產生: sin (θ -ψ)→0 方程8 當取得此結果,則: θ -ψ→0 方程9 因此, θ = ψ 方程10 因此,計數器的數字輸出ψ代表著角度θ。鎖存器可以在不中斷回路跟蹤情況下實現此數據向外部的傳輸。 此電路等效于2型伺服回路,因為它實際上有兩個積分器。一個是累計脈沖的計數器;另一個是位于檢測器輸出端的積分器。在具有恒定旋轉速度輸入的2型伺服回路中,輸出數字字連續跟隨或跟蹤該輸入,而無需外部導出轉換。 RDC典型實例:SD-14621 SD-14621是數據設備公司(DDC)生產的小型低成本RDC。它有兩條具備可編程分辨率控制功能的信道。分辨率編程功能允許選擇10、12、14或16位模式[4]。此功能允許低分辨率高速跟蹤或者更高分辨率支持更高精度。由于其大小、成本、精度與多功能性,此轉換器適用于高性能軍用、商用及位置控制系統。 器件的運行需要一個+5V電壓。轉換器有兩個對模擬地為±4V電壓范圍的速度輸出(VEL A、VEL B),可用于替代轉速計。為兩條信道(/BIT A與/BIT B)提供兩個內置測試輸出,以指示信號丟失(LOS)。 此轉換器由三大部分組成:輸入前端、誤差處理器和數字接口。前端對于同步器、分解器和直接輸入端有所不同。電子Scott-T用于同步器輸入,分解器調節器用于分解器輸入,而正弦與余弦電壓跟隨器用于直接輸入端。這些放大器可以饋送高精度控制變壓器(CT)。CT的另一個輸入是16位數字角度ψ,其輸出是兩個輸入之間的模擬誤差角度或差分角度。CT采用放大器、交換機、邏輯電路與電容器以查準率執行SINθ COSψ - COSθ SINψ = Sin(θ-ψ)的三角函數計算。 與常規精密電阻器相比,這些電容器按查準率使用,以獲得更高精度。另外,這些電容器(與運算放大器一起用作計算元件)進行高速采樣,以消除偏移和運算放大器偏差。 DC誤差處理進行積分運算,然后得到驅動電壓控制振蕩器的速度電壓。此VCO與速度積分器結合在一起構成遞增積分器:一種2型伺服反饋回路。 基準振蕩器 我們設計中采用的OSC-15802功耗振蕩器也是DDC公司提供。此器件適用于RDC、同步器、LVDT和感應式傳感器應用[5]。頻率與振幅輸出可以分別由電容器和電阻器編程。輸出頻率范圍介于400Hz~10kHz之間,輸出電壓為7Vrms。圖4顯示了器件的方框圖。 饋送到分解器和RDC的振蕩器輸出用作基準信號。 FPGA的I/O電壓為3.3V,而RDC的電壓為5V。我們采用電壓收發器實現兩個器件之間的電壓兼容。 VIRTEX-5 FX30T FPGA與RDC接口 我們在設計中采用賽靈思Virtex-5 FX30T FPGA [6]。FPGA的I/O電壓為3.3V,而RDC的電壓為5V。因此我們采用電壓收發器來實現這兩個器件之間的電壓兼容。通過賽靈思提供的GPIO IP核與FPGA建立內部連接,如圖5所示。 為了簡單起見,圖5僅顯示一條具有一個分解器接口的信道。您可以在本文件隨附的賽靈思開發板描述(XBD)文件找到RDC的引腳詳情以及FPGA對應的專用引腳。詳情見該文件第一部分。 圖5 – RDC與Virtex-5 FPGA的接口(單信道) 圖中文字如下: TRANSCEIVER:收發器 RESOLVER:分解器 REF SIGNAL:基準信號 POWER OSCILLATOR (OSC-15802):功耗振蕩器 SIGNAL CHAIN:信號鏈 器件驅動程序詳細說明 在本例中,FPGA采用20MHz的外部輸入時鐘。此FPGA具有一個運行頻率為200MHz的PowerPC 440硬核。RDC的時序圖見圖6與圖7。 圖6 – INHIBIT時序 圖7 – ENABLE時序 根據RDC的時序圖,我們開發、測試并驗證了實際硬件的功能是否正確 [4]。器件驅動程序的實際編碼包含在單獨的XBD文件中。根據時序圖,我們生成了用于回路的所需延遲。在200MHz運行速率下進行處理時,每個計數都對應5納秒的延遲。 器件驅動程序有三部分編碼:RDC初始化、控制信號的生成及從RDC信道A的讀取、以及控制信號的生成及從RDC信道B的讀取。RDC初始化是設置信號方向和缺省值的階段。例如,利用以下語句,信號方向將設置為從FPGA“輸出”到RDC。 XGpio_WriteReg(XPAR_RESOLUTION_CNTRL_CH_A_ BASEADDR,XGPIO_TRI_OFFSET,0x000); 下一個語句通過寫入“0x3”來設置16位分辨率(即:拉高): XGpio_WriteReg(XPAR_RESOLUTION_CNTRL_CH_A_ BASEADDR,XGPIO_DATA_OFFSET,0x03); 圖8為編碼截屏。注:為了簡化,我們僅提供一條信道的編碼。 我們已經看到,角度傳感器可以幫助工程師創造更好的轉輪,進而設計出眾多更高效的機械裝置。分解器是一種尤為有用的角度傳感器,只要能夠與FPGA正確配合和控制,其就能夠幫助工程師打造出無與倫比的機械裝置。 參考資料 1. 數據設備公司“同步器/分解器轉換手冊”。 2. John Gasking, “分解器數字轉換器:光電軸角編碼器簡單低成本替代方案” AN-263,美國模擬器件公司 3. Walt Kester, “分解器數字轉換器” MT-030, 美國模擬器件公司 4. 數據設備公司SD-14620 系列數據手冊。 5. 數據設備公司OSC-15802數據手冊。 6. 賽靈思Virtex-5系列簡介 圖8- RDC器件驅動程序編碼截屏 |