角度傳感器在與FPGA 正確配合下能夠幫助工程師打造出無與倫比的機(jī)械。
自從人類發(fā)明了轉(zhuǎn)輪,我們就希望了解如何通過改變精度提高轉(zhuǎn)輪轉(zhuǎn)動(dòng)效率。在過去幾個(gè)世紀(jì),科學(xué)家和工程師已經(jīng)研發(fā)了許多方法來實(shí)現(xiàn)此目標(biāo),期間輪- 軸系統(tǒng)的基本原理得到了廣泛應(yīng)用,從汽車、音量旋鈕、各種機(jī)械形式的齒輪到簡(jiǎn)陋的手推車,幾乎每種機(jī)械系統(tǒng)均采用了這一原理[1]。
經(jīng)過多個(gè)時(shí)代的探索,人們發(fā)現(xiàn)讓轉(zhuǎn)輪高效運(yùn)轉(zhuǎn)的最重要因素并非轉(zhuǎn)輪本身(為何不徹底改造它呢?),而是轉(zhuǎn)輪的軸角。目前測(cè)量和優(yōu)化軸角的最有效方法是采用角度傳感器。現(xiàn)有許多種角度傳感器都能夠通過輪軸監(jiān)控和改進(jìn)促進(jìn)輪周效率優(yōu)化;但如果配合使用FPGA,您就能夠取得非常顯著的效果,同時(shí)能夠提高眾多應(yīng)用中的輪軸/ 輪周效率。
在詳細(xì)介紹工程師們?nèi)绾巫罴牙?a href="http://www.1cnz.cn/tags/賽靈思/" target="_blank">賽靈思FPGA 達(dá)到上述目的之前,先讓我們簡(jiǎn)單回顧一下角度傳感器的部分基本原理。目前得到廣泛應(yīng)用就是編碼器和分解器這兩類角度傳感器。
編碼器和分解器的類型
編碼器分為增量和絕對(duì)兩個(gè)基本類別。增量編碼器可以監(jiān)控輪軸上的兩個(gè)位置,并且可以在輪軸每次經(jīng)過這兩個(gè)位置時(shí)產(chǎn)生A 或B 脈沖。獨(dú)立的外部電動(dòng)計(jì)數(shù)器然后從這些脈沖解讀出轉(zhuǎn)速和旋轉(zhuǎn)方向。雖然適用于眾多應(yīng)用,但是增量式計(jì)數(shù)器確實(shí)存在某些不足。例如,在輪軸停轉(zhuǎn)情況下,增量編碼器在開始運(yùn)行之前必須首先通過調(diào)回到某個(gè)指定校準(zhǔn)點(diǎn)來實(shí)現(xiàn)自身校準(zhǔn)。另外,增量式計(jì)數(shù)器易受到電氣干擾的影響,導(dǎo)致發(fā)送到系統(tǒng)的脈沖不準(zhǔn)確,進(jìn)而造成旋轉(zhuǎn)計(jì)數(shù)錯(cuò)誤。不僅如此,許多增量編碼器屬于光電器件 – 如果對(duì)目標(biāo)應(yīng)用有影響,則無法用于輻射危險(xiǎn)區(qū)域。
絕對(duì)編碼器是監(jiān)控輪軸旋轉(zhuǎn)計(jì)數(shù)和方向的傳感器系統(tǒng)。在基于絕對(duì)編碼器的系統(tǒng)中,用戶一般把轉(zhuǎn)輪連接到具有電觸頭或光電基準(zhǔn)的輪軸。在輪軸運(yùn)行時(shí),基于絕對(duì)編碼器的系統(tǒng)會(huì)記錄旋轉(zhuǎn)和運(yùn)行方向,同時(shí)產(chǎn)生易于轉(zhuǎn)換成代碼(最常見的是二進(jìn)制碼或格雷碼)的并行數(shù)字輸出。絕對(duì)編碼器的優(yōu)勢(shì)在于只需要校準(zhǔn)一次(一般是在工廠中校準(zhǔn)),而無需每次使用前都校準(zhǔn)。此外,絕對(duì)編碼器一般比其它編碼器更可靠。不過,絕對(duì)編碼器一般很昂貴,而且它們不利于進(jìn)行并行數(shù)據(jù)傳輸,尤其是在測(cè)量其讀數(shù)的電子系統(tǒng)距離編碼器較遠(yuǎn)情況下。
分解器就其本身而言是一種旋轉(zhuǎn)變壓器—— 一種輸出電壓與其所監(jiān)控的輸入軸角唯一關(guān)聯(lián)的模擬器件。它是一款具有0o~360o 旋轉(zhuǎn)角度的絕對(duì)位置傳感器,其直接連接到輪軸并報(bào)告轉(zhuǎn)速和位置。分解器與編碼器相比有諸多優(yōu)勢(shì)。分解器非常穩(wěn)健可靠,能夠經(jīng)受帶有灰塵、油污、極端溫度、振動(dòng)和輻射的嚴(yán)酷環(huán)境。作為一種變壓器,分解器可以提供信號(hào)隔離以及對(duì)電氣干擾的自然共模抑制。除了這些特性之外,分解器只需要四根線就可進(jìn)行角數(shù)據(jù)傳輸,這使其能夠適用于從重工業(yè)、微型系統(tǒng)到航空航天工業(yè)等各種應(yīng)用。
無刷分解器得到了進(jìn)一步改進(jìn),其無需與轉(zhuǎn)子的滑環(huán)連接。因此,這種分解器更可靠,而且使用壽命更長(zhǎng)。
分解器采用兩種方式獲取與軸角相關(guān)的輸出電壓。在第一種方式中,如圖1 所示的轉(zhuǎn)子繞組由交變信號(hào)激勵(lì),而輸出來自兩個(gè)定子繞組。由于定子是以機(jī)械方式定位到正確角度,因此輸出信號(hào)幅度是通過軸角的三角正弦和余弦關(guān)聯(lián)。正弦與余弦信號(hào)均具有與原始激勵(lì)信號(hào)相同的相位;僅其幅度隨輪軸的旋轉(zhuǎn)通過正弦與余弦進(jìn)行調(diào)制。
圖1 – 分解器轉(zhuǎn)子激勵(lì)
在第二種方式中,定子繞組由相位正交的交變信號(hào)激勵(lì)。然后在轉(zhuǎn)子繞組中感應(yīng)電壓。繞組的幅度和頻率固定,但其相移隨軸角變化。
分解器可以放置到需要測(cè)量角度的位置[2]。而電子裝置一般指的是分解器數(shù)字轉(zhuǎn)換器(RDC),可以放置到需要測(cè)量數(shù)字輸出的位置。分解器的模擬輸出(含有輪軸角位置信息)然后經(jīng)RDC 轉(zhuǎn)換成數(shù)字形式。
典型RDC 的功能
一般而言,分解器的兩個(gè)輸出會(huì)應(yīng)用到RDC 的正弦與余弦乘法器[3]。這些乘法器結(jié)合正弦和余弦查找表以及函數(shù)構(gòu)成乘法數(shù)模轉(zhuǎn)換器。圖2 顯示了其功能。
圖2 – 分解器數(shù)字轉(zhuǎn)換器(RDC)方框圖
暫且假設(shè)開始時(shí)遞增/ 遞減計(jì)數(shù)器的當(dāng)前狀態(tài)是一個(gè)代表試驗(yàn)角度(trial angle)ψ 的數(shù)值。轉(zhuǎn)換器設(shè)法調(diào)整數(shù)字角度ψ,使其一直等于并跟蹤所測(cè)量的模擬角度θ。
分解器的定子輸出電壓為:
V1= V sinωt sinθ
方程 1
V2= V sinωt cosθ
方程 2
其中θ 是分解器轉(zhuǎn)子的角度。數(shù)字角度ψ 應(yīng)用到余弦乘法器,其余弦乘以V1 得出下式:
V sinωt sinθ cosψ.
方程 3
數(shù)字角度ψ 另外還應(yīng)用到正弦乘法器,乘以V2 得出下式:
V sinωt cosθ sinψ.
方程 4
這兩個(gè)信號(hào)由誤差放大器相減求得出波形的誤差信號(hào):
(V sinωt sinθcosψ – V sinωt cosθ sinψ)
方 程 5
V sinωt (sinθ cosψ- cosθ sinψ)
方程 6
根據(jù)三角恒等式,其簡(jiǎn)化為:
V sinωt [sin (θ -ψ)]
方程 7
檢測(cè)器采用分解器的轉(zhuǎn)子電壓作為基準(zhǔn)同步解調(diào)此AC 誤差信號(hào)。這會(huì)產(chǎn)生與sin (θ-ψ) 成正比的DC 誤差信號(hào)。
DC 誤差信號(hào)饋送到積分器,其輸出驅(qū)動(dòng)一個(gè)由電壓控制的振蕩器。而VCO 會(huì)導(dǎo)致遞增/ 遞減計(jì)數(shù)器按正確方向計(jì)數(shù),從而在一次計(jì)數(shù)中產(chǎn)生:
sin (θ-ψ)→0.
方程 8
當(dāng)取得此結(jié)果,則:
θ -ψ→0,
方程 9
因此,
θ = ψ
方程 10
因此,計(jì)數(shù)器的數(shù)字輸出ψ 代表著角度θ。鎖存器可以在不中斷回路跟蹤情況下實(shí)現(xiàn)此數(shù)據(jù)向外部的傳輸。
此電路等效于2 型伺服回路,因?yàn)樗鼘?shí)際上有兩個(gè)積分器。一個(gè)是累計(jì)脈沖的計(jì)數(shù)器;另一個(gè)是位于檢測(cè)器輸出端的積分器。在具有恒定旋轉(zhuǎn)速度輸入的2 型伺服回路中,輸出數(shù)字字連續(xù)跟隨或跟蹤該輸入,而無需外部導(dǎo)出轉(zhuǎn)換。
RDC 典型實(shí)例:SD-14621
SD-14621 是數(shù)據(jù)設(shè)備公司(DDC)生產(chǎn)的小型低成本RDC。它有兩條具備可編程分辨率控制功能的信道。分辨率編程功能允許選擇10、12、14 或16 位模式[4]。此功能允許低分辨率高速跟蹤或者更高分辨率支持更高精度。由于其大小、成本、精度與多功能性,此轉(zhuǎn)換器適用于高
性能軍用、商用及位置控制系統(tǒng)。
器件的運(yùn)行需要一個(gè)+5V 電壓。轉(zhuǎn)換器有兩個(gè)對(duì)模擬地為±4V 電壓范圍的速度輸出(VEL A、VEL B),可用于替代轉(zhuǎn)速計(jì)。為兩條信道(/BIT A 與/BIT B)提供兩個(gè)內(nèi)置測(cè)試輸出,以指示信號(hào)丟失(LOS)。
此轉(zhuǎn)換器由三大部分組成:輸入前端、誤差處理器和數(shù)字接口。前端對(duì)于同步器、分解器和直接輸入端有所不同。電子Scott-T 用于同步器輸入,分解器調(diào)節(jié)器用于分解器輸入,而正弦與余弦電壓跟隨器用于直接輸入端。這些放大器可以饋送高精度控制變壓器(CT)。CT 的另一個(gè)輸入是16 位數(shù)字角度ψ,其輸出是兩個(gè)輸入之間的模擬誤差角度或差分角度。CT 采用放大器、交換機(jī)、邏輯電路與電容器以查準(zhǔn)率執(zhí)行SINθ COSψ - COSθ SINψ =Sin(θ-ψ) 的三角函數(shù)計(jì)算。
與常規(guī)精密電阻器相比,這些電容器按查準(zhǔn)率使用,以獲得更高精度。另外,這些電容器(與運(yùn)算放大器一起用作計(jì)算元件)進(jìn)行高速采樣,以消除偏移和運(yùn)算放大器偏差。
DC 誤差處理進(jìn)行積分運(yùn)算,然后得到驅(qū)動(dòng)電壓控制振蕩器的速度電壓。此VCO 與速度積分器結(jié)合在一起構(gòu)成遞增積分器:一種2 型伺服反饋回路。
基準(zhǔn)振蕩器
我們?cè)O(shè)計(jì)中采用的OSC-15802 功耗振蕩器也是DDC 公司提供。此器件適用于RDC、同步器、LVDT 和感應(yīng)式傳感器應(yīng)用[5]。頻率與振幅輸出可以分別由電容器和電阻器編程。輸出頻率范圍介于400Hz~10kHz 之間,輸出電壓為7Vrms。圖4 顯示了器件的方框圖。
圖3 – SD-14620方框圖(單信道)
圖4 – OSC-15802基準(zhǔn)振蕩器方框圖
饋送到分解器和RDC 的振蕩器輸出用作基準(zhǔn)信號(hào)。
FPGA的I/O電壓為3.3V,而RDC的電壓為5V。我們采用電壓收發(fā)器實(shí)現(xiàn)兩個(gè)器件之間的電壓兼容。
VIRTEX-5 FX30T FPGA 與RDC 接口
我們?cè)谠O(shè)計(jì)中采用賽靈思Virtex?-5 FX30T FPGA [6]。FPGA 的I/O 電壓為3.3V,而RDC 的電壓為5V。因此我們采用電壓收發(fā)器來實(shí)現(xiàn)這兩個(gè)器件之間的電壓兼容。通過賽靈思提供的GPIO IP 核與FPGA 建立內(nèi)部連接,如圖5 所示。
圖5 – RDC與Virtex-5 FPGA的接口(單信道)
為了簡(jiǎn)單起見,圖5 僅顯示一條具有一個(gè)分解器接口的信道。 您可以在本文件隨附的賽靈思開發(fā)板描述(XBD)文件找到RDC 的引腳詳情以及FPGA 對(duì)應(yīng)的專用引腳。 詳情見該文件第一部分。
器件驅(qū)動(dòng)程序詳細(xì)說明
在本例中,F(xiàn) P G A 采用2 0 M H z 的外部輸入時(shí)鐘。此FPGA 具有一個(gè)運(yùn)行頻率為200MHz 的PowerPC 440 硬核。RDC 的時(shí)序圖見圖6 與圖7。
圖6 – INHIBIT時(shí)序
圖7 – ENABLE時(shí)序
根據(jù)RDC 的時(shí)序圖,我們開發(fā)、測(cè)試并驗(yàn)證了實(shí)際硬件的功能是否正確 [4]。器件驅(qū)動(dòng)程序的實(shí)際編碼包含在單獨(dú)的XBD 文件中。根據(jù)時(shí)序圖,我們生成了用于回路的所需延遲。在200MHz 運(yùn)行速率下進(jìn)行處理時(shí),每個(gè)計(jì)數(shù)都對(duì)應(yīng)5 納秒的延遲。
器件驅(qū)動(dòng)程序有三部分編碼:RDC 初始化、控制信號(hào)的生成及從RDC 信道A 的讀取、以及控制信號(hào)的生成及從RDC 信道B 的讀取。RDC 初始化是設(shè)置信號(hào)方向和缺省值的階段。例如,利用以下語句,信號(hào)方向?qū)⒃O(shè)置為從FPGA“輸出”到RDC。
下一個(gè)語句通過寫入“0x3”來設(shè)置16 位分辨率(即:拉高):
圖8 為編碼截屏。注:為了簡(jiǎn)化,我們僅提供一條信道的編碼。
seXGpio_WriteReg(XPAR_INHIBIT_CH_A_
BASEADDR,XGPIO_DATA_OFFSET,0x01);
for(i=0;i<=5;i++); //gives delay of 25 ns
XGpio_WriteReg(XPAR_ENABLE_LSB_
CH_A_BIT_BASEADDR,XGPIO_DATA_OFFSET,0x01);
for(i=0;i<=5;i++);
XGpio_WriteReg(XPAR_INHIBIT_CH_A_
BASEADDR,XGPIO_DATA_OFFSET,0x00);
for(i=0;i<=2;i++);
XGpio_WriteReg(XPAR_ENABLE_LSB_CH_A_BIT_
BASEADDR,XGPIO_DATA_OFFSET,0x00);
for(i=0;i<=2;i++);
lsb_val=XGpio_ReadReg(XPAR_RDC_DATA_15_
TO_0_PINS_BASEADDR,XGPIO_DATA_OFFSET);
XGpio_WriteReg(XPAR_INHIBIT_CH_A_
BASEADDR,XGPIO_DATA_OFFSET,0x01);
for(i=0;i<=5;i++);
XGpio_WriteReg(XPAR_ENABLE_LSB_CH_A_BIT_
BASEADDR,XGPIO_DATA_OFFSET,0x01);
for(i=0;i<=25;i++);
XGpio_WriteReg(XPAR_INHIBIT_CH_A_
BASEADDR,XGPIO_DATA_OFFSET,0x01);
for(i=0;i<=5;i++);
XGpio_WriteReg(XPAR_ENABLE_MSB_CH_A_BIT_
BASEADDR,XGPIO_DATA_OFFSET,0x01);
for(i=0;i<=5;i++);
XGpio_WriteReg(XPAR_INHIBIT_CH_A_
BASEADDR,XGPIO_DATA_OFFSET,0x00);
for(i=0;i<=2;i++);
XGpio_WriteReg(XPAR_ENABLE_MSB_CH_A_BIT_
BASEADDR,XGPIO_DATA_OFFSET,0x00);
for(i=0;i<=2;i++);
msb_val=XGpio_ReadReg(XPAR_RDC_DATA_15_
TO_0_PINS_BASEADDR,XGPIO_DATA_OFFSET);
lsb_val=lsb_val & 0x00ff;
msb_val=msb_val & 0xff00;
rdccount_cha = msb_val | lsb_val;
XGpio_WriteReg(XPAR_INHIBIT_CH_A_
BASEADDR,XGPIO_DATA_OFFSET,0X01);
for(i=0;i<=5;i++);
XGpio_WriteReg(XPAR_ENABLE_MSB_CH_A_
BIT_BASEADDR,XGPIO_DATA_OFFSET,0x01);
for(i=0;i<=20;i++);
圖8- RDC器件驅(qū)動(dòng)程序編碼截屏
我們已經(jīng)看到,角度傳感器可以幫助工程師創(chuàng)造更好的轉(zhuǎn)輪,進(jìn)而設(shè)計(jì)出眾多更高效的機(jī)械裝置。分解器是一種尤為有用的角度傳感器,只要能夠與FPGA 正確配合和控制,其就能夠幫助工程師打造出無與倫比的機(jī)械裝置。
參考資料
1. 數(shù)據(jù)設(shè)備公司“同步器/ 分解器轉(zhuǎn)換手冊(cè)”。
2. John Gasking,“ 分解器數(shù)字轉(zhuǎn)換器:光電軸角編碼器簡(jiǎn)單低成本替代方案” AN-263, 美國(guó)模擬器件公司
3. Walt Kester,“ 分解器數(shù)字轉(zhuǎn)換器” MT-030, 美國(guó)模擬器件公司
4. 數(shù)據(jù)設(shè)備公司SD-14620 系列數(shù)據(jù)手冊(cè)。
5. 數(shù)據(jù)設(shè)備公司OSC-15802 數(shù)據(jù)手冊(cè)。
6. 賽靈思Virtex-5 系列簡(jiǎn)介
評(píng)論
查看更多