薛凌云,孫世榮
(杭州電子科技大學(xué)生命信息與儀器工程學(xué)院,浙江 杭州 310018)
?
基于CORDIC算法的磁編碼器角度誤差修正仿真研究
薛凌云,孫世榮
(杭州電子科技大學(xué)生命信息與儀器工程學(xué)院,浙江 杭州 310018)
CORDIC算法在磁旋轉(zhuǎn)編碼器中被廣泛使用,但受編碼器制造與安裝工藝所帶來(lái)的噪聲和信號(hào)非正交性的影響,經(jīng)典CORDIC算法存在較大輸出角度誤差.采用MATLAB模擬產(chǎn)生含噪旋轉(zhuǎn)磁場(chǎng)信號(hào),首先對(duì)信號(hào)進(jìn)行均值濾波,再根據(jù)角度誤差曲線近似于正余弦函數(shù)的特點(diǎn),對(duì)輸入信號(hào)值運(yùn)用CORDIC算法處理,然后對(duì)輸入信號(hào)值移相后再運(yùn)用CORDIC算法處理,并對(duì)兩次CORDIC算法結(jié)果進(jìn)行差值處理,最終獲得磁編碼器輸出角度值.仿真結(jié)果表明,輸出角度的誤差在-0.25°~0.25°之間,有效減少了角度檢測(cè)誤差,提高了角度檢測(cè)精度.
磁編碼器;CORDIC算法;環(huán)境噪聲;相位差
磁編碼器是伺服電機(jī)的重要組成部分,其性能對(duì)電機(jī)的速度穩(wěn)定性、位置準(zhǔn)確度、噪聲等重要特性有決定性的影響.受到充磁工藝、充磁質(zhì)量以及編碼器體積的制約,磁編碼器往往采用電子細(xì)分技術(shù)來(lái)獲得更高的分辨率[1].文獻(xiàn)[2]對(duì)坐標(biāo)旋轉(zhuǎn)數(shù)字計(jì)算(Coordinate Rotation Digital Computer,CORDIC)方法的架構(gòu)和發(fā)展做出了詳細(xì)的論述.文獻(xiàn)[3]介紹了一種基于FPGA的改進(jìn)的CORDIC算法,該算法不需要查表和校正,只需要簡(jiǎn)單的移位和加減就能實(shí)現(xiàn)超越函數(shù)的計(jì)算.文獻(xiàn)[4]采用了基于多路復(fù)用和流水線的CORDIC算法,用來(lái)減少信號(hào)在關(guān)鍵路徑的傳播時(shí)延.文獻(xiàn)[5]采用了10次迭代的流水線結(jié)構(gòu)的CORDIC算法,并以8倍頻輸出信號(hào),但是輸出倍頻頻率不高.文獻(xiàn)[6]基于CORDIC算法求解電動(dòng)機(jī)的速度和位置,跳過(guò)在CORDIC算法中不必要的旋轉(zhuǎn),提高了檢測(cè)電動(dòng)機(jī)位置和速度的精度.文獻(xiàn)[7]采用CORDIC算法對(duì)一對(duì)正交的電壓信號(hào)進(jìn)行解碼,在一定轉(zhuǎn)速下,每旋轉(zhuǎn)一周輸出1 024個(gè)位置信息,即分辨率為0.35°.以上文獻(xiàn)都是在理想信號(hào)下實(shí)現(xiàn)CORDIC算法的,未考慮輸入余弦信號(hào)的非正交性,也未考慮環(huán)境噪聲對(duì)角度檢測(cè)所帶來(lái)的誤差.本文對(duì)磁敏傳感器檢測(cè)磁場(chǎng)信號(hào)時(shí)產(chǎn)生的相位差和環(huán)境噪聲對(duì)角度檢測(cè)造成的誤差進(jìn)行處理,首先對(duì)原始兩路正交余弦信號(hào)采用CORDIC算法,然后將原始兩路正交余弦信號(hào)移相后再次采用CORDIC算法,并對(duì)兩次運(yùn)算的結(jié)果進(jìn)行差值處理,最終獲得的檢測(cè)角度值誤差更小,提高了磁編碼器角度檢測(cè)精度.
1.1CORDIC算法思想
CORDIC算法的基本思想是通過(guò)一系列固定的、與運(yùn)算基數(shù)相關(guān)的角度不斷偏擺,進(jìn)行空間矢量的不斷旋轉(zhuǎn)以逼近所需的旋轉(zhuǎn)角度,本質(zhì)上它是一個(gè)數(shù)值逼近的方法[8].CORDIC算法將復(fù)雜的運(yùn)算分解成一系列容易在硬件中實(shí)現(xiàn)的加減或者移位運(yùn)算,從而將復(fù)雜的算法在硬件中很好的實(shí)現(xiàn).
1.2CORDIC算法的角度輸出
本文采用流水線模式來(lái)實(shí)現(xiàn)CORDIC算法,為了提高某一時(shí)刻轉(zhuǎn)子與X軸正方向的夾角θ的精度,采用16級(jí)流水線結(jié)構(gòu),并且采用20位二進(jìn)制數(shù)來(lái)表示角度累加器zn,則最終的輸出角度θ與角度累加器zn之間關(guān)系如下:
(1)
每次旋轉(zhuǎn)的角度θn(n=0,1,2…14,15)與zn的對(duì)應(yīng)關(guān)系如表1所示.
表1 θn與zn的對(duì)應(yīng)關(guān)系
1.3CORDIC算法原始誤差
首先由MATLAB軟件生成兩路正交余弦信號(hào),并量化為每周期采樣點(diǎn)為250的數(shù)字信號(hào),經(jīng)CORDIC算法處理后,與實(shí)際角度進(jìn)行比較,CORDIC算法的原始誤差曲線如圖1所示,其中縱坐標(biāo)為誤差,橫坐標(biāo)為每個(gè)周期的采樣點(diǎn),可知原始CORDIC算法的角度誤差范圍在-0.01°~0.01°之間.
圖1 CORDIC算法原始誤差
利用CORDIC算法計(jì)算角度時(shí),誤差來(lái)源主要是工作環(huán)境的噪聲和工藝及安裝結(jié)構(gòu)產(chǎn)生的非正交信號(hào)相位偏差.受磁敏傳感器制造工藝和磁編碼器安裝結(jié)構(gòu)的影響,磁場(chǎng)信號(hào)的相位差范圍最大為-2°~2°;受磁編碼器實(shí)際工作環(huán)境的影響,磁場(chǎng)信號(hào)中往往包括噪聲信號(hào),該噪聲信號(hào)大小可近似為均值為0、方差為0.005的白噪聲,這些噪聲會(huì)對(duì)角度信息的檢測(cè)造成一定的誤差.
2.1噪聲對(duì)角度檢測(cè)的影響
本文利用白噪聲模擬環(huán)境產(chǎn)生的噪聲信號(hào).對(duì)原始信號(hào)加上均值為0,方差為0.005的白噪聲,模擬工作環(huán)境對(duì)磁編碼器產(chǎn)生的影響,數(shù)據(jù)經(jīng)CORDIC算法處理后得到的誤差曲線圖如圖2所示.
2.2相位差對(duì)角度檢測(cè)的影響
對(duì)原始正交數(shù)據(jù)進(jìn)行相位變換,使信號(hào)不再正交且相位差為2°,模擬磁敏傳感器和磁編碼器結(jié)構(gòu)所產(chǎn)生的相位差,數(shù)據(jù)經(jīng)CORDIC算法處理后其角度誤差曲線圖如圖3所示.
圖2 環(huán)境噪聲對(duì)角度檢測(cè)造成的誤差
2.3噪聲和相位差疊加后對(duì)角度檢測(cè)的影響
將2.1節(jié)中正常的環(huán)境噪聲和2.2節(jié)中出現(xiàn)的最大相位差同時(shí)加到原始信號(hào)上,經(jīng)過(guò)CORDIC算法處理后其角度誤差曲線圖如圖4所示,由圖4可知其誤差曲線近似于正弦曲線.
圖3 相位誤差對(duì)角度檢測(cè)的影響
圖4 噪聲和相位差疊加后對(duì)角度檢測(cè)的影響
由上可知,無(wú)論是環(huán)境噪聲還是信號(hào)的非正交性對(duì)角度的檢測(cè)都有很大的影響,其中環(huán)境噪聲對(duì)角度檢測(cè)造成的誤差是沒(méi)有規(guī)律的,而信號(hào)的非正交性對(duì)角度檢測(cè)造成的誤差曲線是成余弦分布的.當(dāng)兩種影響疊加到一起時(shí),其誤差曲線和信號(hào)的非正交性造成的誤差曲線相近.
3.1算法流程
算法總流程圖如圖5所示,由圖5可知,讀入X,Y方向角度信息后,首先對(duì)數(shù)據(jù)進(jìn)行均值濾波;然后通過(guò)采樣初期的幾個(gè)點(diǎn),來(lái)判定X,Y軸方向數(shù)據(jù)是否正交,本文中相位差在0.25°之內(nèi)的為正交,具體方法是:首先找到X軸方向數(shù)據(jù)的最大值,然后查看對(duì)應(yīng)Y軸方向數(shù)據(jù)的值,根據(jù)正交曲線的原理確定是否存在相位差Y軸方向數(shù)據(jù)的閾值為100,若Y軸方向的值超過(guò)100,則存在相位差,否則不存在相位差.若不存在相位差,直接采用CORDIC算法對(duì)數(shù)據(jù)進(jìn)行處理,得出角度輸出值.若存在相位差,則采用改進(jìn)后的CORDIC算法進(jìn)行處理,改進(jìn)后的CORDIC算法流程圖如圖6所示,首先仍將X,Y軸方向數(shù)據(jù)進(jìn)行CORDIC算法處理,然后將采樣點(diǎn)移相,再次利用CORDIC算法處理移相后的數(shù)據(jù),將兩次CORDIC算法輸出的數(shù)值進(jìn)行加減處理,最后輸出處理后的角度值.
圖5 算法總流程圖
圖6 改進(jìn)CORDIC算法流程圖
3.2算法誤差
文中對(duì)3組數(shù)據(jù)進(jìn)行仿真實(shí)驗(yàn),來(lái)檢驗(yàn)改進(jìn)后的CORDIC算法的抗噪性和抗非正交性.
1)正常環(huán)境噪聲,相位差為2°.通過(guò)均值濾波和改進(jìn)CORDIC算法處理的結(jié)果的誤差曲線圖如圖7所示,由圖7可知角度誤差范圍在-0.25°~0.25°之間.
2)2倍的正常環(huán)境噪聲,相位差為2°.誤差曲線圖如圖8所示,由圖8可知,角度誤差范圍在-0.3°~0.3°之間,由此可以看出改進(jìn)的CORDIC算法具有較強(qiáng)的抗噪性.
圖7 正常噪聲和相位差為2°的誤差曲線圖
圖8 2倍的正常噪聲和相位差為2°的誤差曲線圖
圖9 正常的環(huán)境噪聲和相位差為1°的誤差曲線圖
3)正常的環(huán)境噪聲,相位差為1°.誤差曲線圖如圖9所示,可知角度誤差范圍在-0.2°~0.2°之間.
由以上誤差曲線圖可知,原始數(shù)據(jù)的相位差一定時(shí),環(huán)境噪聲增大一倍,最終輸出角度的誤差最大值僅增加了0.05°,由此可以看出改進(jìn)后的CORDIC算法具有較強(qiáng)的抗噪性;另外,改進(jìn)后的CORDIC算法能很好地修正原始數(shù)據(jù)的非正交性造成的角度輸出誤差,并且在噪聲一定的條件下,原始X,Y軸方向數(shù)據(jù)的相位差越小,最終輸出角度值的誤差也越小.
本文通過(guò)對(duì)CORDIC算法的改進(jìn),使得檢測(cè)原始數(shù)據(jù)相位差的范圍為-2°~-0.25°以及0.25°~2°,仿真結(jié)果表明,改進(jìn)后的CORDIC算法不僅具有較強(qiáng)的抗噪性,而且對(duì)數(shù)據(jù)非正交性產(chǎn)生的角度檢測(cè)誤差也具有很好的修正作用.雖然改進(jìn)后的CORDIC算法在仿真中能夠達(dá)到很好效果,但是沒(méi)有在實(shí)際場(chǎng)合中驗(yàn)證過(guò),這是今后工作的方向.
[1]郝雙輝,劉勇,周春蛟,等.基于標(biāo)定原理的單磁極編碼器設(shè)計(jì)[J].南京理工大學(xué)學(xué)報(bào),2005,29(144):226-228.
[2]KUMAR N, SAPPAL A S. Coordinate Rotation Digital Computer Algorithm: Design and Architectures[J].International Journal of Advanced Computer Sciences and Applications.2011,2(4):68-71.
[3]劉小會(huì),許蕾,劉海穎,等.基于CORDIC改進(jìn)算法的反正切函數(shù)在FPGA中的實(shí)現(xiàn)[J].計(jì)算機(jī)技術(shù)與發(fā)展,2013,23(11):103-107.
[4]CHINNATHAMBI M, BHARANIDHARAN N, RAJARAM S. FPGA Implementation of Fast and Area Efficient CORDIC algorithm[C]//Communication and Network Technologies(ICCNT),2014 International Conference on.Sivakasi:IEEE,2014:228-232.
[5]吳正平,王璐.基于CORDIC算法的磁編碼器設(shè)計(jì)[J].三峽大學(xué)學(xué)報(bào)(自然科學(xué)版),2012,34(5):82-84.
[6]ZHENG D, ZHANG S, ZHANG Y, et al. Application of CORDIC in capacitive rotary encoder signal demodulation[C]//Instrumentation and Control Technology (ISICT),2012 8th IEEE International Symposium on.London:IEEE,2012:61-65.
[7]王爽,李鐵才,王治國(guó).基于CORDIC算法的高分辨率磁編碼器設(shè)計(jì)[J].微電機(jī),2009,42(8):1-5.
[8]HU Y H, NAGANATHAN S. An angle recoding method for CORDIC algorithm implementation[J].Computers,IEEE Transactions on,1993,42(1):99-102.
The Simulation Research of Magnetic Encoder Angle Error Correction Based on Improved CORDIC Algorithm
XUE Lingyun, SUN Shirong
(SchoolofLifeInformationandInstrumentEngineering,HangzhouDianziUniversity,HangzhouZhejiang310018,China)
The coordinate rotation digital compute(CORDIC) algorithm is widely used in magnetic rotary encoder, because of the noise and non-orthogonal signal caused by encoder manufacturing and installation process, classic CORDIC algorithm has a big output angle error. This paper uses MATLAB simulation to produce the rotating magnetic field signals with noise signal. Firstly the signals should be processed by the mean value filter, next according to the feature that angle error curve approximates the sine and cosine functions, using CORDIC algorithm to process the value of the input signal, and then shift the phase and again using the CORDIC algorithm to process the value of the input signal, finally deal with the difference between the results of two CORDIC algorithm processing. The simulation results show that the output angle error is between -0.25°to 0.25°, so it effectively reduced the angle detection error, and improved the angle detection accuracy.
magnetic encoder; coordinate rotation digital computer algorithm; environmental noise; phase difference
10.13954/j.cnki.hdu.2016.01.015
2015-07-07
薛凌云(1967-),女,內(nèi)蒙古呼和浩特人,教授,智能信息處理.
TN762
A
1001-9146(2016)01-0075-05