趙 磊,曹廣忠,梁芳萍,孫俊締,胡 勇,王 蕓
(1.深圳大學機電與控制工程學院,廣東 深圳 518060;2.深圳市四方電氣技術有限公司,廣東 深圳 518126)
磁編碼器是一類新型的位移檢測傳感器,采用磁敏感元件感應磁極運動產生的磁場變化,通過元件產生的磁電阻效應,測量運動物體的位移變化[1-2]。磁編碼器結構簡單、緊湊,以其抗干擾能力強、響應速度快、體積小和成本低等特點而被廣泛應用于伺服系統中[3-5]。角位置閉環控制伺服系統,如機器人關節、數控機床、雷達跟蹤系統等,需要快速反饋得到精確的角位置,才能使伺服控制系統具有快速、高精度的瞬態響應[6-7]。因此,軸角解算是磁編碼器研究中的重要環節。
近年來,國內外對磁編碼器的研究重點主要集中在對其信號處理(即軸角解算方法)上[6]。目前,常用的軸角解算方法有反正切法、標定查表法和鎖相環(phase locked loop,PLL)法[8-9]。其中,反正切法應用較廣泛。該方法通過對2路正余弦信號進行反正切運算得到軸角[10],但計算反正切函數和除法運算都耗費了非常多的資源。因應用反正切法解算軸角系統為開環系統,易受外界環境因素的干擾而產生較大誤差[10-12],故反正切法不利于求解位置角度的實時運算。標定查表法對電壓信號與電機運動角度進行標定,并把角度數據存儲在可擦除可編程存儲器中。工作過程中,根據磁編碼器輸出的電壓信號,分區間查表即可得到電機旋轉的角度值。但此方法會消耗大量的儲存單元,并且對磁柵的質量和信號的準確度要求非常苛刻[13-14]。采用鎖相環法解算軸角的方案中,絕大多數使用的是數字信號處理器(digital signal processor,DSP)或嵌入式單片機(STMicroelectronics,STM32)自帶的數模轉換(analogue-to-digital conversion,ADC)采樣模塊對信號進行采樣。但是,該方法存在兩方面不足:①DSP和STM32內部硬件結構較復雜;②DSP和STM32的ADC模塊達不到系統所需的采樣精度[15-21]。而Arduino相對結構簡單,易于編程,且能夠外接ADC采樣模塊。綜合以上原因,本文研究了基于Arduino的磁編碼器軸角解算系統。
霍爾式磁編碼器結構如圖1所示。

圖1 霍爾式磁編碼器結構
霍爾式磁編碼器是一種基于電磁感應原理的角位置傳感器,通過電磁感應將角度位置、角速度和旋轉速度等物理信號轉變為磁場強度、電壓等電信號,供后續測量處理[22]。本文設計的霍爾式磁編碼器主要包括3個部分:信號發生部分、信號處理部分以及上位機。圖1中,h為磁極與霍爾元件組件之間的距離。
霍爾元件組件由2個呈正交安裝在磁極下方的霍爾傳感器組成。當磁極與電機軸同步旋轉時,將產生同步變化的旋轉磁場。由霍爾效應可知,對霍爾傳感器通電后,當電流垂直于外磁場通過半導體即霍爾傳感器時,載流子發生偏轉,垂直于電流和磁場的方向會產生附加電場,從而在霍爾傳感器的兩端產生電勢差。霍爾效應原理如圖2所示[23-24]。

圖2 霍爾效應原理
由霍爾效應可知,當達到平衡狀態(即電場力等于洛倫茲力)時:

(1)
電流為:

(2)
由式(1)與式(2)可得霍爾電壓,為:

(3)
式中:Fe為半導體兩端的電場力;F為洛倫茲力;q為單位帶電粒子的電荷量;U為霍爾電壓;L、W、H分別為半導體的長、寬、高;v為帶電粒子的速度;B為磁感應強度;I為電流;Q為帶電粒子總電荷量;t為時間;n為帶電粒子濃度;Rh為霍爾系數。
電機轉動一周,磁柵也隨之轉動一周,磁敏元件檢測到由磁柵轉動引起的磁場變化,輸出工路呈周期變換的正余弦模擬信號[23-26]。然后,將2路正余弦信號傳送至后續的信號處理電路中解算軸角。
系統硬件主要由信號發生部分的霍爾傳感器、帶有17位分辨率光電編碼器的伺服同步電機,信號處理部分的16位ADC采樣模塊ADS1115、Arduino以及上位機組成。硬件平臺如圖3所示。

圖3 硬件平臺
AH3503霍爾傳感器是一款模擬信號輸出的霍爾集成電路,輸出電壓在一定磁場強度范圍內隨著磁場的增強而線性增大。當磁場強度超出該范圍持續增強時,其輸出電壓會呈非線性增大直至飽和。傳感器芯片內置有反向電壓保護器、電壓調整器、溫度補償電路、霍爾電壓發生器、信號放大器等電路單元。性能優良的電壓調整器和溫度補償電路,可確保傳感器在較寬的電壓范圍和溫度范圍內穩定地工作。反向電壓保護電路避免了傳感器受到反向電壓的損傷。磁場強度B和電壓U之間的磁電轉換特性曲線如圖4所示。

圖4 磁電轉換特性曲線
本設計采用了Arduino UNO單片機。該單片機有14路數字輸入/輸出端口(其中6個可以作為脈沖寬度調制輸出)、6路模擬輸入端口,以及USB連接口、電源接口、在線串行編程(in-circuit serial programming,ICSP)端口和復位按鈕。Arduino結構簡單,是一款便捷靈活、方便上手的開源電子原型平臺,編程相對容易,運算速度塊,適用于本系統。
ADS1115是一款小型、低功耗、16位精度Δ∑數模轉換器。ADS1115由1個內部基準電源、輸入多路復用器、1個時鐘振蕩器和1個內部整合電路(inter-integrated circuit,I2C)接口組成。ADS1115可以測量4個單端信號或2個差分信號。本設計采用2路并行采樣。ADS1115功能框圖如圖5所示。

圖5 ADS1115功能框圖
本設計采用了2個霍爾芯片。霍爾芯片感應到磁場的變化,產生2路正余弦電壓。霍爾芯片輸出電壓信號如圖6所示。

圖6 霍爾芯片輸出電壓信號
2路正余弦信號經ADS1115采樣模塊采樣后給Arduino,分別用反正切法和鎖相環跟蹤法進行軸角解算。系統軟件設計主要是對反正切法和鎖相環跟蹤法進行編程。
根據圖6,2路輸出信號可表示為:

(4)
式中:Um為輸出電壓的幅值;θ為伺服電機軸的角位移;UA與UB為霍爾芯片的輸出電壓。
利用反正切函數,可求取伺服電機軸的角位移[23-24],如式(5)所示。
(5)
根據以上分析,反正切法編程流程如圖7所示。

圖7 反正切法編程流程
鎖相環法是一種利用相位同步產生的電壓去調諧壓控振蕩器,以產生目標頻率的負反饋控制系統。其利用外部輸入的參考信號控制環路內部振蕩信號的頻率和相位,實現輸出信號頻率對輸入信號頻率的自動跟蹤。將磁編碼器檢測輸出的sinθ、cosθ作為鎖相環的輸入信號,與其輸出反饋的2路信號通過相乘器、減法器進行相位比較,得到誤差δ。對于很小的位置變化量,即δ=θ-φ趨近于0時,有:

(6)
本文設計采用二階鎖相環。環路濾波器由比例積分(proportional integral,PI)控制器構成。壓控振蕩器由積分環節構成。將δ代入PI控制器。負反饋的目的是將位置變化量減小到零。同時,通過PI控制器建立了1個二階低通濾波器。該濾波器是對位置變化量濾波而非直接對正余弦信號濾波,極大地抑制了噪聲。鎖相環算法原理如圖8所示[15]。

圖8 鎖相環算法原理圖
簡化的鎖相環算法原理如圖9所示。

圖9 簡化的鎖相環算法原理圖
由圖9可以求出系統的開環傳遞函數,為:

(7)
根據系統的開環傳遞函數可以求出系統的Z傳遞函數,為:

(8)
對式(8)進行反Z變換,得到差分方程:
(9)
根據以上分析,鎖相環法編程流程如圖10所示。

圖10 鎖相環法編程流程圖
為驗證算法的可行性、計算誤差,對比2種方法的差異以及調整相關參數,在MATLAB中進行了仿真試驗。反正切法和鎖相環法解算軸角的試驗仿真如圖11所示,試驗結果如圖12所示。

圖11 試驗仿真示意圖

圖12 試驗結果
由圖11、圖12可知,反正切法能有效跟蹤軸角變化,但由于電機轉動角度周期性變化,其誤差在電機由360°轉到0°時會跳變。將反正切法解算結果與理論角度作對比。對比結果表明,采用反正切法解算軸角的誤差會隨著時間的推移而緩慢變大。鎖相環跟蹤算法也能有效跟蹤軸角變換,但其對于角度輸入的穩態誤差趨近于0,收斂時間在10 ms以內。
試驗所用平臺上安裝了2臺對拖的伺服電機(左側電機安裝有自制的磁編碼器,右側電機安裝有17位絕對式的光電編碼器),通過控制伺服電機所轉角度對比試驗結果,從而得到相應誤差。為了驗證本系統的可行性以及對比反正切法和鎖相環法的測量精度,對1個旋轉周期的不同角度進行了測量。磁編碼器輸出電壓信號如圖13所示。

圖13 磁編碼器輸出電壓信號
試驗測量結果如表1所示。

表1 試驗測量結果
由表1可知:采用反正切法測量90°和180°,解算得到的軸角平均值分別為90.62°和180.14°;采用鎖相環法測量90°和180°,解算得到的軸角平均值分別為90.24°和180.02°。反正切法和鎖相環法在實際應用中都能有效測量出軸角。通過測量1個旋轉周期內不同的角度,對比發現,反正切法的平均測量相對誤差為0.4%,鎖相環法的平均測量相對誤差為0.11%。
本文基于Arduino,設計了磁編碼器的軸角解算系統。該系統中采用了外圍獨立高精度16位ADC采樣模塊ADS1115對正余弦信號進行采樣,通過反正切法和鎖相環法分別實現了軸角的測量。試驗表明,反正切法和鎖相環法在工程實際中均能有效測量軸角,但鎖相環法相對于反正切法測量軸角誤差更低。本系統硬件結構簡單、成本較低且鎖相環法測量誤差小,適用于實際工程中。