孫 賓,應 浩
(南京模擬技術研究所,江蘇 南京 210016)
直線位移傳感器是無人機測量舵機絲桿位置信息的一個重要傳感裝置[1]。作為舵系統的位置環,其主要用來實時反映舵機絲桿的當前位置[2]。目前,舵系統的絲桿位置反饋系統裝置主要有接觸式直線電位器[3]、線性可變差動變壓器(linear variable differential transformer,LVDT)磁編碼器等。其中:接觸式直線電位器的主要缺點是電阻體使用壽命短,長時間使用后容易出現“非接觸”或“跳點”現象;LVDT 測量精確度高,但需要專門的激磁解調電路,且結構件安裝復雜、價格高、質量大[4-5]。而采用基于非接觸式磁感應器件的位移傳感器電路設計簡單、測量精度高,能有效提升位移傳感器的使用壽命[6-8]。
磁感應位移傳感器主要由磁感應芯片HMC1512組成的外圍電路和磁鋼構成。磁感應芯片內部是由坡莫合金的含鐵材料組成一個惠斯頓電橋。磁感應芯片內部電路結構如圖1 所示。當磁鋼產生的磁場穿過該芯片,將會使其輸出一個差分電壓值;該信號經放大、濾波后送主控制器采集,通過相應算法解算出此時磁鋼相對于磁感應芯片的角度,根據三角關系即可解算出磁鋼的位移值。

圖1 磁感應芯片內部電路結構圖Fig.1 Internal circuit structure of magnetic induction chip
單個芯片工作示意圖如圖2 所示。

圖2 單個芯片工作示意圖Fig.2 Schematic diagram of single chip
當圖2 中的磁鋼運行在A區域時,隨著磁鋼由遠及近地靠近磁感應芯片,磁感應芯片電壓輸出波形如圖3 所示。

圖3 磁感應芯片電壓輸出波形圖Fig.3 Voltage output waveform of magnetic induction chip
磁感應芯片輸出電壓值將逐漸從圖3 中的a點向b點接近,但此時磁感應芯片工作在其非線性區。隨著磁鋼進入B區后,磁感應芯片的差分電壓輸出值將由b點向c點逐漸接近。當磁鋼運行到芯片正上方時,差分電壓值為0。bc段為磁感應芯片的線性工作區,角度范圍為±45°。當磁鋼進入C區后,隨著磁鋼逐漸遠離芯片,磁感應芯片的差分電壓輸出值將由c點逐漸向d點靠近。此時,磁感應芯片也工作在非線性工作區。因此,該磁感應芯片可實現線性測量區域的范圍為-D~+D。
根據單個磁感應芯片的工作原理,利用其線性工作區域,通過并排放置多個磁感應芯片,可實現長距離線性位移的測量。為實現100 mm 的線性位移,本設計中將10 個間隔為10 mm 的磁感應芯片并排放置在與磁鋼平行的一條直線上。將磁鋼固定在舵機絲桿上,當舵機絲桿動作時,帶動磁鋼運動。此時,磁感應位移傳感器中的主控制器將采集到的10 路磁感應芯片的數據進行相關算法計算,得到當前磁鋼位置,并將該位置值通過CAN 總線發送出去。
從系統的可實現性考慮,遵行簡便原則,磁感應位移傳感器的硬件電路包括以下幾個方面:最小系統電路、位置采集信號調理電路、通信電路等。磁感應位移傳感器原理如圖4 所示。

圖4 磁感應位移傳感器原理框圖Fig.4 Principle block diagram of magnetic induction displacement sensor
由于每個位置采集和調理電路對應1 個磁感應芯片,而本系統中有10 個磁感應芯片,因此本系統中將有10 路位置采集和調理電路。
最小系統電路是保證整個系統硬件穩定運行的基礎,包括主控制器、電源電路、復位電路和程序下載接口等。
主控制器選用的是 Cortex-M3 系列的STM32F103C8T7。該芯片具有體積小、價格便宜、使用方便的特點,同時具備16 通道的12 位ADC,支持CAN總線,SPI 總線等,系統總線時鐘達72 MHz,可以很快實現大量數據的采集、處理功能。
HMC1512 芯片輸出電壓為±60 mV。為便于單片機電壓信號采集,位置采集與調理電路要對該芯片進行電壓偏置與信號放大。位置采集和調理電路如圖5 所示。

圖5 位置采集和調理電路Fig.5 Position acquisition and conditioning circuit

式中:R為磁感應芯片內部B 路H 橋上、下橋臂電阻和;Vout+、Vout-分別為磁感應芯片A路H橋的輸出信號。
通信電路用于實現本系統與其他系統之間的信息交換功能。考慮到通信電路的可移植性,以及通信距離、復雜環境等對通信信號的品質影響等因素,采用具有高抗干擾性且具備總線功能的CAN 通信方式。
軟件部分是檢測電路的算法實現,也是位移檢測的關鍵。相對于較簡單的硬件電路而言,系統軟件部分稍微復雜一些。其中,位置算法是系統軟件部分的重點也是難點。目前,可以實現的位置檢測的算法有以下兩種。
①用更精密儀器標定。在磁感應位移傳感器正常工作之前,可以用0.005 mm 或者更小步進距離的步進電機帶動磁鋼運動,由主控制器實時記錄當前磁感應式位移傳感器的位移值,并將這些位移值與所有磁阻傳感器的輸出A/D 值存儲在單片機Flash 的某一區間。當磁感應位移傳感器正常使用時,將當前采集到的幾路A/D 值與存儲在Flash 中的A/D 值進行匹配,即通過查表法實現磁鋼位移的測量。
②純粹利用算法解算。根據采集到的各個A/D值,推算出當前磁鋼的位置,即磁鋼位于哪兩個磁感應芯片之間;再根據當前兩個A/D 值,計算出當前的磁鋼位移值。
第一種方法相比于第二種方法較易實現,但是其Flash 中存儲的數據量較大,每增加一個磁感應芯片,Flash 中的數據量將增加一倍。如果發生一個磁感應芯片損壞情況,也將影響Flash 中位移值的輸出。本設計將采用第二種方法來實現磁鋼位移的測量。
系統軟件流程如圖6 所示。

圖6 系統軟件流程圖Fig.6 Flowchart of system software
初始化各模塊包括系統時鐘、看門狗、GPIO、定時器、A/D 模塊、USART、中斷系統。由10 個磁感應芯片組成的芯片排布陣列如圖7 所示。

圖7 芯片排布陣列示意圖Fig.7 Schematic diagram of chip layout array
算法解算磁鋼位置的具體步驟如下。
①前提條件:將磁鋼從1#芯片的左側勻速移動到10#芯片的右側,從而獲得10 路磁感應芯片的A/D 最大值與最小值,即Vmax[10]、Vmin[10]。
②將(0,Vmin),(2D,Vmax)代入公式yi=kixi+bi,即可解算出每一個芯片的線性公式。
③磁鋼處于圖7 中直線上的任何位置時,將采集到的10 路A/D 值經濾波處理后保存在Vin[0]~Vin[9]中。
④將Vin[0]~Vin[9]的值分別代入各自的線性方程中,即可解算出當前10 個磁感應芯片的X值。通過比較這10 個X值,找出Xmax、Xmin,即可確定當前磁鋼的位置。
如果此時磁鋼處于圖7 中的B區域,4#、5#、6#三個磁感應芯片相應的芯片組電壓輸出波形如圖8 所示。圖8 中的pos 即為當前磁鋼所處的位置。

圖8 芯片組電壓輸出波形圖Fig.8 Voltage output waveforms of chipsets
推算出磁鋼的位置后,接下來的工作即為精確計算磁鋼的位移量。
(1)計算每一路磁感應芯片的A/D 均值以及均值與最大值、最小值之間的差值,即:

式中:Vaver為磁感應芯片的A/D 均值;Vdiff為磁感應芯片有效輸出值的中間值。
(2)計算磁鋼距當前兩個磁感應芯片中心正上方的直線距離:

根據式(4)、式(5),即可計算出Xi+1與Xi的值:
(3)分別計算Xi+1與Xi與D的差值的絕對值:

(4)計算最終磁鋼位移值:
①如果Δi+1>Δi,則以Δi計算最終的距離值,即S=(i+1)×L-Xi;
②如果Δi+1<Δi,則以Δi+1計算最終的距離值,即S=(i+1)×L+Xi+1;
③如果Δi+1=Δi,則最終位移即為S=(i+1)×L。
為驗證磁感應式位移傳感器的性能,采用更精密的標定設備帶動磁鋼運動。每運動一段距離,分別記錄當前標定設備和位移傳感器的輸出位移值。試驗測試數據如圖9 所示。

圖9 試驗測試數據Fig.9 Experimental test data
標定設備的輸出值為理論值,磁感應式位移傳感器計算的位移值為實際值,兩者的差值為誤差值。圖9中,誤差值小于等于0.1 mm,小于技術要求的0.5 mm。這個誤差的產生主要是由于磁鋼從一個磁感應芯片運動到相鄰的磁感應芯片時,計算距離時的參考對象發生變化。而每個傳感器各自的特性稍微有些不同,因此該誤差值在一定程度上會存在。通過改進芯片位置結構排布以及磁鋼與芯片之間的間距,可以盡量減小誤差值。
本文針對傳統位移測量傳感器使用壽命短、安裝復雜等的缺點,利用磁感應芯片一定角度范圍內線性輸出的特點,提出了在非接觸的情況下實現直線位移測量的觀點,詳細分析了相應的工作原理與位置解算的方法。經多次試驗測試可知,磁感應式位移傳感器輸出位移精度可以達到0.02 mm,測量值誤差不大于0.1 mm,小于技術要求的0.5 mm,線性度達到±1‰,滿足無人機直線位移傳感器的使用要求。