磁羅盤

Allen5G發表於2018-11-17

地磁的北極在地理的南極的附近
地磁的南極在地理的北極的附近
磁體的同名磁極相斥,異名磁極相吸
所以指南針的北極總是指著地理的北極(地磁的南極)


1、紅色指標指向北面,白色指標指向南面。在錶盤上“北”用字母N表示,南用字母“S”表示。
  2、指南針又稱指北針,主要組成部分是一根裝在 軸上的磁針,磁針在天然地磁場的作用下可以自由轉動並保持在磁子午線的切線方向上,磁針的北極指向地理的北極,利用這一效能可以辨別方向。常用於航海、大 地測量、旅行及軍事等方面。物理上指示方向的指南針的發明由三部曲組成:司南、磁針和羅盤。他們均屬於中國的發明。

磁羅盤

        電子羅盤是一種重要的導航工具,能實時提供移動物體的航向和姿態。

        要實現電子羅盤功能,需要一個檢測磁場的三軸磁力感測器和一個三軸加速度感測器。隨著微機械工藝的成熟,意法半導體推出將三軸磁力計和三軸加速計整合在一個封裝裡的二合一感測器模組LSM303DLH,方便使用者在短時間內設計出成本低、效能高的電子羅盤。本文以LSM303DLH為例討論該器件的工作原理、技術引數和電子羅盤的實現方法。

1.    地磁場和航向角的背景知識

  地球的磁場象一個條形磁體一樣由磁北極指向磁南極。在磁極點處磁場和當地的水平面垂直,在赤道磁場和當地的水平面平行,所以在北半球磁 場方向傾斜指向地面。用來衡量磁感應強度大小的單位是Tesla或者Gauss1Tesla=10000Gauss。隨著地理位置的不同,通常地磁場的強度是0.4-0.6 Gauss。需要注意的是,磁北極和地理上的北極並不重合,通常他們之間有11度左右的夾角。

  地磁場是一個向量,對於一個固定的地點來說,這個向量可以被分解為兩個與當地水平面平行的分量和一個與當地水平面垂直的分量。如果保持電子羅盤和當地的水平面平行,那麼羅盤中磁力計的三個軸就和這三個分量對應起來,如圖所示。

     地磁場向量分解示意圖

  實際上對水平方向的兩個分量來說,他們的向量和總是指向磁北的。羅盤中的航向角(Azimuth)就是當前方向和磁北的夾角。由於羅盤保持水平,只需要用磁力計水平方向兩軸(通常為X軸和Y軸)的檢測資料就可以用式1計算出航向角。當羅盤水平旋轉的時候,航向角在0°- 360°之間變化。

2ST整合磁力計和加速計的感測器模組LSM303DLH

2.1  磁力計工作原理

  在LSM303DLH中磁力計採用各向異性磁滯電阻Anisotropic Magneto-Resistance)材料來檢測空間中磁感應強度的大小。這種具有晶體結構的合金材料對外界的磁場很敏感,磁場的強弱變化會導致AMR自身電阻值發生變化。

  在製造過程中,將一個強磁場加在AMR上使其在某一方向上磁化,建立起一個主磁域,與主磁域垂直的軸被稱為該AMR的敏感軸,如圖3所示。為了使測量結果以線性的方式變化,AMR材料上的金屬導線呈45°角傾斜排列,電流從這些導線上流過,如圖4所示。由初始的強磁場在AMR材料上建立起來的主磁域和電流的方向有45°的夾角。

               AMR材料示意圖

      45º角排列的導線

   當有外界磁場Ha時,AMR上主磁域方向就會發生變化而不再是初始的方向了,那麼磁場方向和電流的夾角θ也會發生變化,如圖5所示。對於AMR材料來說,θ角的變化會引起AMR自身阻值的變化,並且呈線性關係,如圖6所示。

                     磁場方向和電流方向的夾角

      θ-R特性曲線

  ST利用惠斯通電橋檢測AMR阻值的變化,如圖7所示。R1/R2/R3/R4是初始狀態相同的AMR電阻,但是R1/R2R3/R4具有相反的磁化特性。當檢測到外界磁場的時候,R1/R2阻值增加∆RR3/R4減少∆R。這樣在沒有外界磁場的情況下,電橋的輸出為零;而在有外界磁場時電橋的輸出為一個微小的電壓∆V

              惠斯通電橋

  當R1=R2=R3=R4=R,在外界磁場的作用下電阻變化為∆R時,電橋輸出?V正比於?R。這就是磁力計的工作原理。

2.2 置位/復位(Set/Reset)電路

  由於受到外界環境的影響,LSM303DLHAMR上的主磁域方向不會永久保持不變。LSM303DLH內建有置位/復位電路,通過內部的金屬線圈週期性的產生電流脈衝,恢復初始的主磁域,如圖8所示。需要注意的是,置位脈衝和復位脈衝產生的效果是一樣的,只是方向不同而已。

      LSM303DLH置位/復位電路

置位/復位電路給LSM303DLH帶來很多優點:

1    即使遇到外界強磁場的干擾,在干擾消失後LSM303DLH也能恢復正常工作而不需要使用者再次進行校正。

2    即使長時間工作也能保持初始磁化方向實現精確測量,不會因為晶片溫度變化或內部噪音增大而影響測量精度。

3    消除由於溫漂引起的電橋偏差。

2.3  LSM303DLH的效能引數

  LSM303DLH整合三軸磁力計和三軸加速計,採用數字介面。磁力計的測量範圍從1.3 Gauss8.1 Gauss共分7檔,使用者可以自由選擇。並且在20 Gauss以內的磁場環境下都能夠保持一致的測量效果和相同的敏感度。它的解析度可以達到8 mGauss並且內部採用12ADC,以保證對磁場強度的精確測量。和採用霍爾效應原理的磁力計相比,LSM303DLH的功耗低,精度高,線性度好,並且不需要溫度補償。

  LSM303DLH具有自動檢測功能。當控制暫存器A被置位時,晶片內部的自測電路會產生一個約為地磁場大小的激勵訊號並輸出。使用者可以通過輸出資料來判斷晶片是否正常工作。

3.ST電子羅盤方案介紹

  處理器通過磁場資料計算出方位角,通過重力資料進行傾斜補償。這樣處理後輸出的方位角不受電子羅盤空間姿態的影響。

  對於行動式裝置而言,器件的功耗非常重要,直接影響其待機的時間。LSM303DLH可以分別對磁力計和加速計的供電模式進行控制,使其進入睡眠 或 低功耗模式。並且使用者可自行調整磁力計和加速計的資料更新頻率,以調整功耗水平。在磁力計資料更新頻率為7.5Hz、加速計資料更新頻率為50Hz時,消耗電流典型值為0.83mA。在待機模式時,消耗電流小於3uA

4.鐵磁場干擾及校準

  電子指南針主要是通過感知地球磁場的存在來計算磁北極的方向。然而由於地球磁場在一般情況下只有微弱的0.5高斯,而一個普通的手機喇叭當相距2釐米時仍會有大約4高斯的磁場,一個手機馬達在相距2釐米時會有大約6高斯的磁場,這一特點使得針對電子裝置表面地球磁場的測量很容易受到電子裝置本身的干擾。

    磁場干擾是指由於具有磁性物質或者可以影響區域性磁場強度的物質存在,使得磁感測器所放置位置上的地球磁場發生了偏差。如圖11所示,在磁感測器的XYZ 座標系中,綠色的圓表示地球磁場向量繞z軸圓周轉動過程中在XY平面內的投影軌跡,在沒有外界任何磁場干擾的情況下,此軌跡將會是一個標準的以O(0,0)為中心的圓(xx 轉動的相對性,當轉動感測器時,感測器與地磁在水平面上的投影產生了相對位移———相當於將感測器固定,而去轉動地磁的投影,這時地磁的投影在XY軸上的分解量,就組成了一個圓;  當有干擾時,相當於先將座標系中心移動到干擾向量的頂點,然後將該頂點作為新的中心,去轉動座標系或者地磁的投影;  當去形成球形時,相當於在各個方向去進行轉動)。當存在外界磁場干擾的情況時,測量得到的磁場強度向量α將為該點地球磁場β與干擾磁場γ的向量和。記作:

                  圖 11  磁感測器XY座標以及磁力線投影軌跡

  一般可以認為,干擾磁場γ在該點可以視為一個恆定的向量。有很多因素可以造成磁場的干擾,如擺放在電路板上的馬達和喇叭,還有含有鐵鎳鈷等金屬的材料如遮蔽罩,螺絲、電阻、LCD背板以及外殼等等。同樣根據安培定律有電流通過的導線也會產生磁場。

  為了校準這些來自電路板的磁場干擾,主要的工作就是通過計算將γ求出。

4.1 平面校準方法

  針對XY軸的校準,將配備有磁感測器的裝置在XY平面內自轉,如圖11,等價於將地球磁場向量繞著過點O(γx,γy)垂直於XY平面的法線旋轉(運動的相對性),而紅色的圓為磁場向量在旋轉過程中在XY平面內投影的軌跡。這可以找到圓心的位置為((Xmax + Xmin)/2,  (Ymax + Ymin)/2).  同樣將裝置在XZ平面內旋轉可以得到地球磁場在XZ平面上的軌跡圓,這可以求出三維空間中的磁場干擾向量 伽馬γ(γx, γy, γz).  ★▫★▫★


4.2 立體8字校準方法

  一般情況下,當帶有感測器的裝置在空中各個方向旋轉時,測量值組成的空間幾何結構實際上是一個圓球,所有的取樣點都落在這個球的表面上,如圖所示,這一點同兩維平面內投影得到的圓類似。


       地球磁場空間旋轉後在感測器空間座標內得到球體

  這種情況下,可以通過足夠的樣本點求出圓心O(γx, γy, γz), 即固定磁場干擾向量的大小及方向。公式如下:


  8字校準法要求使用者使用需要校準的裝置在空中做8字晃動,原則上儘量多的讓裝置法線方向指向空間的所有8個象限,如圖所示。

   裝置的空中8字校準示意圖

5.傾斜補償及航偏角計算


  經過校準後電子指南針在水平面上已經可以正常使用了。但是更多的時候裝置並不是保持水平的,通常它和水平面都有一個夾角。這個夾角會影響航向角的精度,需要通過加速度感測器進行傾斜補償。

  對於一個物體在空中的姿態,導航系統裡早已有定義,Android中也採用了這個定義。Pitch(Φ)定義為x軸和水平面的夾角, 圖示方向為正方向;Roll(θ)定義為y軸和水平面的夾角,圖示方向為正方向。由Pitch角引起的航向角的誤差如圖18所示。可以看出,在x軸方向10度的傾斜角就可以引起航向角最大7-8度的誤差。


  Pitch角引起的航向角誤差

  裝置在空中的傾斜姿態如圖所示,通過3軸加速度感測器檢測出三個軸上重力加速度的分量,再計算出PitchRoll

   裝置在空中的傾斜姿態

   可以將磁力計測得的三軸資料(XMYM ZM)通過PitchRoll轉化為計算航向角需要的HyHx,之後再計算出航向角(將載體座標系上的磁力計資料,轉回到NED座標系,獲得NED座標系下,對應的 Hx 和 Hy 的值)。


6Android平臺指南針的實現


  在當前流行的android 手機中,很多都配備有指南針的功能。為了實現這一功能,只需要配備有ST提供的二合一感測模組LSM303DLHST 提供整套解決方案。Android中的軟體實現可以由以下框圖表示:

其中包括:

BSP Reference

Linux Kernel Driver (LSM303DLH_ACC + LSM303DLH_MAG)

HAL Library(Sensors_lsm303dlh + Liblsm303DLH) for sensors.default.so

經過library 的計算,上層的應用可以很輕鬆的運用由Android定義由Library提供的航偏角資訊進行應用程式的編寫。



自我檢測  SELF TEST OPERATION   

判斷輸出是否正確?

 To check the HMC5883L  for proper operation, a self test feature in incorporated in which the sensor offset straps are excited to create a nominal field strength (bias field) to be measured.

        Then, by placing the mode register into single-measurement mode (0x01), two data acquisition cycles will be made on each magnetic vector. The first acquisition will be a set pulse followed shortly by measurement data of the external field. The second acquisition will have the offset strap excited (about 10 mA) in the positive bias mode for X, Y, and Z axes to create about a ±1.1 gauss self test field plus the external field. The first acquisition values  will be subtracted from the second acquisition, and the net measurement will be placed into the data output registers. 

 Since self test adds ~1.1 Gauss additional field to the existing field strength, using a reduced gain setting prevents sensor from being saturated and data registers overflowed. For example, if the configuration register B is set to 0x60  (Gain=3), values around +766 LSB  (1.16 Ga * 660 LSB/Ga) will be placed in the X and Y data output registers and around +713 (1.08 Ga * 660 LSB/Ga) will be placed in Z data output register. To leave the self test mode, change MS1 and MS0 bit of the configuration register A back to 00 (Normal Measurement Mode), e.g. 0x10.   

比例因子校準  SCALE FACTOR CALIBRATION

補償?

 Using the self test method described above,  the user can scale sensors’ sensitivity  to match each other.  Since placing device in positive bias mode  (or alternatively negative bias mode) applies a known artificial field on all three axes, the resulting ADC measurements in data output registers can be used to scale the sensors. For example, if the expected self test value for X-axis  is 766 and the actual value  is 750 then a scale factor of (766/750) should be multiplied to all future readings of X-axis. Doing so for all three axes will ensure their sensitivity are well matched.                                                      溫漂

 The built-in self test can also be used to periodically compensate the scaling errors due to temperature variations. A compensation factor can be found by comparing the self test outputs with the ones obtained at a known temperature. For example, if the self test output is 750 at room temperature and 700 at the current temperature then a compensation factor of (750/700) should be applied to all current magnetic readings. A temperature sensor is not required using this method.

簡單的修正模型

       如果磁力計在含有附加的區域性磁場的環境中進行操作,磁力計的輸出做附加的修正將是必要的。

一.

       修正的輸出可以根據下面的方法來計算:     

   1)在磁場干擾的條件下進行,資料收集裝置被旋轉360° 

   2)資料進行分析,以產生  偏差的偏移  和  靈敏度的比例因子,以補償所述干擾。

例子:

從資料中發現的XY磁強計的最大輸出:

      Xmin = -0.284gauss                           Xmax = +0.402gauss

      Ymin = -0.322gauss                          Ymax  = +0.246gauss

從中可以看出X軸的資料具有更大的變化量,設定其比例係數為1;若果設定  Y  的比例係數為1,那麼相對的 X 的測量值,就要被按係數縮小,那樣解析度就低了 xxx。

    Xs = 1

再計算其它比例係數:

                                                          Xmax - Xmin

                                                Ys = ————————

                                                          Ymax - Ymin

對於偏置補償:

                        Xb = Xs[1/2(Xmax - Xmin) Xmax ]

                        Yb = Ys[1/2(Ymax - Ymin) - Ymax ]

正確的輸出:

                      Xout = Xin*Xs + Xb   ;如果這裡是減,那麼上邊大括號裡的兩項,需要調換位置。

                      Yout = Yin*Ys + Yb    ;因為這裡是加號,所以上邊是減max

.

    1)水平勻速旋轉,收集XY軸資料

    2)轉動器材90度(Z軸)勻速轉動以收集Z軸資料

Xoffset = Xmax + Xmin/2

Yoffset = Ymax + Ymin/2

Zoffset = Zmax + Zmin/2

      將磁力計讀到的裸值減去offset,得到用做角度計算的Heading

Xh = X - Xoffset

Yh = Y - Yoffset

Zh = Z - Zoffset

       水平測試,得到的方位角 = arctanYH/XH;非水平測試,需要使用加速計進行傾角補償,先計算出翻滾角Roll和俯仰角Pitch,然後計算Heading值:

XH = x*cos(P)+Y*sin(R)*sin(P)-Z*cos(R)*sin(p)

YH = Y*cos(R)+Z*sin(R)

 













相關文章