薛凌云,孫世榮
(杭州電子科技大學生命信息與儀器工程學院,浙江 杭州 310018)
?
基于CORDIC算法的磁編碼器角度誤差修正仿真研究
薛凌云,孫世榮
(杭州電子科技大學生命信息與儀器工程學院,浙江 杭州 310018)
CORDIC算法在磁旋轉(zhuǎn)編碼器中被廣泛使用,但受編碼器制造與安裝工藝所帶來的噪聲和信號非正交性的影響,經(jīng)典CORDIC算法存在較大輸出角度誤差.采用MATLAB模擬產(chǎn)生含噪旋轉(zhuǎn)磁場信號,首先對信號進行均值濾波,再根據(jù)角度誤差曲線近似于正余弦函數(shù)的特點,對輸入信號值運用CORDIC算法處理,然后對輸入信號值移相后再運用CORDIC算法處理,并對兩次CORDIC算法結(jié)果進行差值處理,最終獲得磁編碼器輸出角度值.仿真結(jié)果表明,輸出角度的誤差在-0.25°~0.25°之間,有效減少了角度檢測誤差,提高了角度檢測精度.
磁編碼器;CORDIC算法;環(huán)境噪聲;相位差
磁編碼器是伺服電機的重要組成部分,其性能對電機的速度穩(wěn)定性、位置準確度、噪聲等重要特性有決定性的影響.受到充磁工藝、充磁質(zhì)量以及編碼器體積的制約,磁編碼器往往采用電子細分技術(shù)來獲得更高的分辨率[1].文獻[2]對坐標旋轉(zhuǎn)數(shù)字計算(Coordinate Rotation Digital Computer,CORDIC)方法的架構(gòu)和發(fā)展做出了詳細的論述.文獻[3]介紹了一種基于FPGA的改進的CORDIC算法,該算法不需要查表和校正,只需要簡單的移位和加減就能實現(xiàn)超越函數(shù)的計算.文獻[4]采用了基于多路復用和流水線的CORDIC算法,用來減少信號在關(guān)鍵路徑的傳播時延.文獻[5]采用了10次迭代的流水線結(jié)構(gòu)的CORDIC算法,并以8倍頻輸出信號,但是輸出倍頻頻率不高.文獻[6]基于CORDIC算法求解電動機的速度和位置,跳過在CORDIC算法中不必要的旋轉(zhuǎn),提高了檢測電動機位置和速度的精度.文獻[7]采用CORDIC算法對一對正交的電壓信號進行解碼,在一定轉(zhuǎn)速下,每旋轉(zhuǎn)一周輸出1 024個位置信息,即分辨率為0.35°.以上文獻都是在理想信號下實現(xiàn)CORDIC算法的,未考慮輸入余弦信號的非正交性,也未考慮環(huán)境噪聲對角度檢測所帶來的誤差.本文對磁敏傳感器檢測磁場信號時產(chǎn)生的相位差和環(huán)境噪聲對角度檢測造成的誤差進行處理,首先對原始兩路正交余弦信號采用CORDIC算法,然后將原始兩路正交余弦信號移相后再次采用CORDIC算法,并對兩次運算的結(jié)果進行差值處理,最終獲得的檢測角度值誤差更小,提高了磁編碼器角度檢測精度.
1.1CORDIC算法思想
CORDIC算法的基本思想是通過一系列固定的、與運算基數(shù)相關(guān)的角度不斷偏擺,進行空間矢量的不斷旋轉(zhuǎn)以逼近所需的旋轉(zhuǎn)角度,本質(zhì)上它是一個數(shù)值逼近的方法[8].CORDIC算法將復雜的運算分解成一系列容易在硬件中實現(xiàn)的加減或者移位運算,從而將復雜的算法在硬件中很好的實現(xiàn).
1.2CORDIC算法的角度輸出
本文采用流水線模式來實現(xiàn)CORDIC算法,為了提高某一時刻轉(zhuǎn)子與X軸正方向的夾角θ的精度,采用16級流水線結(jié)構(gòu),并且采用20位二進制數(shù)來表示角度累加器zn,則最終的輸出角度θ與角度累加器zn之間關(guān)系如下:
(1)
每次旋轉(zhuǎn)的角度θn(n=0,1,2…14,15)與zn的對應(yīng)關(guān)系如表1所示.
表1 θn與zn的對應(yīng)關(guān)系
1.3CORDIC算法原始誤差
首先由MATLAB軟件生成兩路正交余弦信號,并量化為每周期采樣點為250的數(shù)字信號,經(jīng)CORDIC算法處理后,與實際角度進行比較,CORDIC算法的原始誤差曲線如圖1所示,其中縱坐標為誤差,橫坐標為每個周期的采樣點,可知原始CORDIC算法的角度誤差范圍在-0.01°~0.01°之間.
圖1 CORDIC算法原始誤差
利用CORDIC算法計算角度時,誤差來源主要是工作環(huán)境的噪聲和工藝及安裝結(jié)構(gòu)產(chǎn)生的非正交信號相位偏差.受磁敏傳感器制造工藝和磁編碼器安裝結(jié)構(gòu)的影響,磁場信號的相位差范圍最大為-2°~2°;受磁編碼器實際工作環(huán)境的影響,磁場信號中往往包括噪聲信號,該噪聲信號大小可近似為均值為0、方差為0.005的白噪聲,這些噪聲會對角度信息的檢測造成一定的誤差.
2.1噪聲對角度檢測的影響
本文利用白噪聲模擬環(huán)境產(chǎn)生的噪聲信號.對原始信號加上均值為0,方差為0.005的白噪聲,模擬工作環(huán)境對磁編碼器產(chǎn)生的影響,數(shù)據(jù)經(jīng)CORDIC算法處理后得到的誤差曲線圖如圖2所示.
2.2相位差對角度檢測的影響
對原始正交數(shù)據(jù)進行相位變換,使信號不再正交且相位差為2°,模擬磁敏傳感器和磁編碼器結(jié)構(gòu)所產(chǎn)生的相位差,數(shù)據(jù)經(jīng)CORDIC算法處理后其角度誤差曲線圖如圖3所示.
圖2 環(huán)境噪聲對角度檢測造成的誤差
2.3噪聲和相位差疊加后對角度檢測的影響
將2.1節(jié)中正常的環(huán)境噪聲和2.2節(jié)中出現(xiàn)的最大相位差同時加到原始信號上,經(jīng)過CORDIC算法處理后其角度誤差曲線圖如圖4所示,由圖4可知其誤差曲線近似于正弦曲線.
圖3 相位誤差對角度檢測的影響
圖4 噪聲和相位差疊加后對角度檢測的影響
由上可知,無論是環(huán)境噪聲還是信號的非正交性對角度的檢測都有很大的影響,其中環(huán)境噪聲對角度檢測造成的誤差是沒有規(guī)律的,而信號的非正交性對角度檢測造成的誤差曲線是成余弦分布的.當兩種影響疊加到一起時,其誤差曲線和信號的非正交性造成的誤差曲線相近.
3.1算法流程
算法總流程圖如圖5所示,由圖5可知,讀入X,Y方向角度信息后,首先對數(shù)據(jù)進行均值濾波;然后通過采樣初期的幾個點,來判定X,Y軸方向數(shù)據(jù)是否正交,本文中相位差在0.25°之內(nèi)的為正交,具體方法是:首先找到X軸方向數(shù)據(jù)的最大值,然后查看對應(yīng)Y軸方向數(shù)據(jù)的值,根據(jù)正交曲線的原理確定是否存在相位差Y軸方向數(shù)據(jù)的閾值為100,若Y軸方向的值超過100,則存在相位差,否則不存在相位差.若不存在相位差,直接采用CORDIC算法對數(shù)據(jù)進行處理,得出角度輸出值.若存在相位差,則采用改進后的CORDIC算法進行處理,改進后的CORDIC算法流程圖如圖6所示,首先仍將X,Y軸方向數(shù)據(jù)進行CORDIC算法處理,然后將采樣點移相,再次利用CORDIC算法處理移相后的數(shù)據(jù),將兩次CORDIC算法輸出的數(shù)值進行加減處理,最后輸出處理后的角度值.
圖5 算法總流程圖
圖6 改進CORDIC算法流程圖
3.2算法誤差
文中對3組數(shù)據(jù)進行仿真實驗,來檢驗改進后的CORDIC算法的抗噪性和抗非正交性.
1)正常環(huán)境噪聲,相位差為2°.通過均值濾波和改進CORDIC算法處理的結(jié)果的誤差曲線圖如圖7所示,由圖7可知角度誤差范圍在-0.25°~0.25°之間.
2)2倍的正常環(huán)境噪聲,相位差為2°.誤差曲線圖如圖8所示,由圖8可知,角度誤差范圍在-0.3°~0.3°之間,由此可以看出改進的CORDIC算法具有較強的抗噪性.
圖7 正常噪聲和相位差為2°的誤差曲線圖
圖8 2倍的正常噪聲和相位差為2°的誤差曲線圖
圖9 正常的環(huán)境噪聲和相位差為1°的誤差曲線圖
3)正常的環(huán)境噪聲,相位差為1°.誤差曲線圖如圖9所示,可知角度誤差范圍在-0.2°~0.2°之間.
由以上誤差曲線圖可知,原始數(shù)據(jù)的相位差一定時,環(huán)境噪聲增大一倍,最終輸出角度的誤差最大值僅增加了0.05°,由此可以看出改進后的CORDIC算法具有較強的抗噪性;另外,改進后的CORDIC算法能很好地修正原始數(shù)據(jù)的非正交性造成的角度輸出誤差,并且在噪聲一定的條件下,原始X,Y軸方向數(shù)據(jù)的相位差越小,最終輸出角度值的誤差也越小.
本文通過對CORDIC算法的改進,使得檢測原始數(shù)據(jù)相位差的范圍為-2°~-0.25°以及0.25°~2°,仿真結(jié)果表明,改進后的CORDIC算法不僅具有較強的抗噪性,而且對數(shù)據(jù)非正交性產(chǎn)生的角度檢測誤差也具有很好的修正作用.雖然改進后的CORDIC算法在仿真中能夠達到很好效果,但是沒有在實際場合中驗證過,這是今后工作的方向.
[1]郝雙輝,劉勇,周春蛟,等.基于標定原理的單磁極編碼器設(shè)計[J].南京理工大學學報,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]劉小會,許蕾,劉海穎,等.基于CORDIC改進算法的反正切函數(shù)在FPGA中的實現(xiàn)[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].三峽大學學報(自然科學版),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]王爽,李鐵才,王治國.基于CORDIC算法的高分辨率磁編碼器設(shè)計[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