手機指南針校正為什麼要繞 8 字?

手機指南針校正為什麼要繞8字?


mark下,電腦上來回答。
----------------------------------------------------
手機要想得到compass的值需要由三個sensor來確定,accel, gyro, magnetic。
accel可以判斷重力感應的放心,來確定手機所在的三個軸向XYZ

(用小畫家畫的。。。。能講明白事情就好,別在意畫工。。。)
gyro可以判斷出機器在三個軸向的轉動。
magnetic可以判斷出在三個軸向的磁感應量。這個值並不是我們所能直觀看懂的compass的值。
那麼通過orientation的設置,使機器能夠知道XYZ三個方向哪個是指北的。
一般機器在打開compass的application時只有知道自己的orientation和default offset。這時候就需要各位轉動手機。雖然是說的8字,但是其實是想讓你把三個軸向都轉一轉這樣在每個軸向會形成一個螺旋線的球體(我用小畫家畫不出來,大家腦補,或者換個時間我去弄個圖來)。這個就是周圍的磁場。在這一刻感測器就開始計算當前的三個軸向offset並加以糾正,加上適當的補償值。如此你就可以得到準確的北。並且通過gyro和magnetic共同計算就可以知道你在水平方向的旋轉度數,這樣你除了東西南北還能知道其他方向的角度(東西南北對應的是-X,+X,-Y,+Y,比較好算,轉過這些點就要混合計算了。)如果演算法足夠先進,再加上accel的判斷就可以計算出機器是否是在傾斜的狀況下旋轉並計算出compass的值。

所以你可以把手機拿好了,然後默默的沿著圖示的三個軸各轉三圈,一樣能達到效果。

---------------------------------------------------------------------------------------------------------------------
2014/09/23更新
@Lnight,引用你的英文注釋。
compass 指南針,一般在手機上會顯示指北為0度,然後指東90度,之後依次往上加。
sensor 感測器
accel 加速度,以g為單位,平放則重力向下,就是z=-1。
gyro 陀螺儀,指設備旋轉的角速度。
magnetic 磁,磁場的一個指,是raw data,普通用戶看不懂。
orientation 方向,就是設備是朝上還是朝下。
application 應用
default offset 默認偏移

以上是以MS的白皮書為基準,具體參考。
Integrating Motion and Orientation Sensors (Windows Drivers)


要實現電子羅盤功能,需要一個檢測磁場的三軸磁力感測器和一個三軸加速度感測器。隨著微機械工藝的成熟,意法半導體推出將三軸磁力計和三軸加速計集成在一個封裝里的二合一感測器模塊LSM303DLH,方便用戶在短時間內設計出成本低、性能高的電子羅盤。本文以LSM303DLH為例討論該器件的工作原理、技術參數和電子羅盤的實現方法。
 1. 地磁場和航向角的背景知識
  如圖1所示,地球的磁場象一個條形磁體一樣由磁南極指向磁北極。在磁極點處磁場和當地的水平面垂直,在赤道磁場和當地的水平面平行,所以在北半球磁場方向傾斜指向地面。用來衡量磁感應強度大小的單位是Tesla或者Gauss(1Tesla=10000Gauss)。隨著地理位置的不同,通常地磁場的強度是0.4-0.6 Gauss。需要注意的是,磁北極和地理上的北極並不重合,通常他們之間有11度左右的夾角。

圖1 地磁場分布圖

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

圖2 地磁場矢量分解示意圖

  實際上對水平方向的兩個分量來說,他們的矢量和總是指向磁北的。羅盤中的航向角(Azimuth)就是當前方向和磁北的夾角。由於羅盤保持水平,只需要用磁力計水平方向兩軸(通常為X軸和Y軸)的檢測數據就可以用式1計算出航向角。當羅盤水平旋轉的時候,航向角在0?- 360?之間變化。
 2.ST集成磁力計和加速計的感測器模塊LSM303DLH
  2.1 磁力計工作原理

  在LSM303DLH中磁力計採用各向異性磁致電阻(Anisotropic Magneto-Resistance)材料來檢測空間中磁感應強度的大小。這種具有晶體結構的合金材料對外界的磁場很敏感,磁場的強弱變化會導致AMR自身電阻值發生變化。
  在製造過程中,將一個強磁場加在AMR上使其在某一方向上磁化,建立起一個主磁域,與主磁域垂直的軸被稱為該AMR的敏感軸,如圖3所示。為了使測量結果以線性的方式變化,AMR材料上的金屬導線呈45ordm;角傾斜排列,電流從這些導線上流過,如圖4所示。由初始的強磁場在AMR材料上建立起來的主磁域和電流的方向有45ordm;的夾角。

圖3 AMR材料示意圖

圖4 45ordm;角排列的導線

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

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


圖6 θ-R特性曲線

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

圖7 惠斯通電橋

  當R1=R2=R3=R4=R,在外界磁場的作用下電阻變化為?R時,電橋輸出?V正比於?R。這就是磁力計的工作原理。
 2.2 置位/複位(Set/Reset)電路
  由於受到外界環境的影響,LSM303DLH中AMR上的主磁域方向不會永久保持不變。LSM303DLH內置有置位/複位電路,通過內部的金屬線圈周期性的產生電流脈衝,恢復初始的主磁域,如圖8所示。需要注意的是,置位脈衝和複位脈衝產生的效果是一樣的,只是方向不同而已。

圖8 LSM303DLH置位/複位電路

  置位/複位電路給LSM303DLH帶來很多優點:
  1) 即使遇到外界強磁場的干擾,在干擾消失後LSM303DLH也能恢復正常工作而不需要用戶再次進行校正。
  2) 即使長時間工作也能保持初始磁化方向實現精確測量,不會因為晶元溫度變化或內部噪音增大而影響測量精度。
  3) 消除由於溫漂引起的電橋偏差。
2.3 LSM303DLH的性能參數
  LSM303DLH集成三軸磁力計和三軸加速計,採用數字介面。磁力計的測量範圍從1.3 Gauss到8.1 Gauss共分7檔,用戶可以自由選擇。並且在20 Gauss以內的磁場環境下都能夠保持一致的測量效果和相同的敏感度。它的解析度可以達到8 mGauss並且內部採用12位ADC,以保證對磁場強度的精確測量。和採用霍爾效應原理的磁力計相比,LSM303DLH的功耗低,精度高,線性度好,並且不需要溫度補償。
  LSM303DLH具有自動檢測功能。當控制寄存器A被置位時,晶元內部的自測電路會產生一個約為地磁場大小的激勵信號並輸出。用戶可以通過輸出數據來判斷晶元是否正常工作。
  作為高集成度的感測器模組,除了磁力計以外LSM303DLH還集成一顆高性能的加速計。加速計同樣採用12位ADC,可以達到1mg的測量精度。加速計可運行於低功耗模式,並有睡眠/喚醒功能,可大大降低功耗。同時,加速計還集成了6軸方向檢測,兩路可編程中斷介面。
 3. ST電子羅盤方案介紹
  一個傳統的電子羅盤系統至少需要一個三軸的磁力計以測量磁場數據,一個三軸加速計以測量羅盤傾角,通過信號條理和數據採集部分將三維空間中的重力分布和磁場數據傳送給處理器。處理器通過磁場數據計算出方位角,通過重力數據進行傾斜補償。這樣處理後輸出的方位角不受電子羅盤空間姿態的影響,如圖9所示。

圖9 電子羅盤結構示意圖

  LSM303DLH將上述的加速計、磁力計、A/D轉化器及信號條理電路集成在一起,仍然通過I2C匯流排和處理器通信。這樣只用一顆晶元就實現了6軸的數據檢測和輸出,降低了客戶的設計難度,減小了PCB板的佔用面積,降低了器件成本。
  LSM303DLH的典型應用如圖10所示。它需要的周邊器件很少,連接也很簡單,磁力計和加速計各自有一條I2C匯流排和處理器通信。如果客戶的I/O介面電平為1.8V,Vdd_dig_M、Vdd_IO_A和Vdd_I2C_Bus均可接1.8V供電,Vdd使用2.5V以上供電即可;如果客戶介面電平為2.6V,除了Vdd_dig_M要求1.8V以外,其他皆可以用2.6V。在上文中提到,LSM303DLH需要置位/複位電路以維持AMR的主磁域。C1和C2為置位/複位電路的外部匹配電容,由於對置位脈衝和複位脈衝有一定的要求,建議用戶不要隨意修改C1和C2的大小。

圖10 LSM303DLH典型應用電路圖

  對於攜帶型設備而言,器件的功耗非常重要,直接影響其待機的時間。LSM303DLH可以分別對磁力計和加速計的供電模式進行控制,使其進入睡眠或低功耗模式。並且用戶可自行調整磁力計和加速計的數據更新頻率,以調整功耗水平。在磁力計數據更新頻率為7.5Hz、加速計數據更新頻率為50Hz時,消耗電流典型值為0.83mA。在待機模式時,消耗電流小於3uA。
 4. 鐵磁場干擾及校準
電子指南針主要是通過感知地球磁場的存在來計算磁北極的方向。然而由於地球磁場在一般情況下只有微弱的0.5高斯,而一個普通的手機喇叭當相距2厘米時仍會有大約4高斯的磁場,一個手機馬達在相距2厘米時會有大約6高斯的磁場,這一特點使得針對電子設備表面地球磁場的測量很容易受到電子設備本身的干擾。
  磁場干擾是指由於具有磁性物質或者可以影響局部磁場強度的物質存在,使得磁感測器所放置位置上的地球磁場發生了偏差。如圖11所示,在磁感測器的XYZ 坐標系中,綠色的圓表示地球磁場矢量繞z軸圓周轉動過程中在XY平面內的投影軌跡,再沒有外界任何磁場干擾的情況下,此軌跡將會是一個標準的以O(0,0)為中心的圓。當存在外界磁場干擾的情況時,測量得到的磁場強度矢量α將為該點地球磁場β與干擾磁場γ的矢量和。記作:

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

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

圖12 電流對磁場產生的影響

  為了校準這些來自電路板的磁場干擾,主要的工作就是通過計算將γ求出。
  4.1 平面校準方法
  針對XY軸的校準,將配備有磁感測器的設備在XY平面內自轉,如圖11,等價於將地球磁場矢量繞著過點O(γx,γy)垂直於XY平面的法線旋轉, 而紅色的圓為磁場矢量在旋轉過程中在XY平面內投影的軌跡。這可以找到圓心的位置為((Xmax + Xmin)/2, (Ymax + Ymin)/2). 同樣將設備在XZ平面內旋轉可以得到地球磁場在XZ平面上的軌跡圓,這可以求出三維空間中的磁場干擾矢量γ(γx, γy, γz).
 4.2 立體8字校準方法
  一般情況下,當帶有感測器的設備在空中各個方向旋轉時,測量值組成的空間幾何結構實際上是一個圓球,所有的採樣點都落在這個球的表面上,如圖13所示,這一點同兩維平面內投影得到的圓類似。

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

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

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

圖14 設備的空中8字校準示意圖

4.2 十面校準方法
  同樣,通過以下10面校準方法,也可以達到校準的目的。

圖15 10面交准法步驟

  如圖16所示,經過10面校準方法之後,同樣可以採樣到以上所述球體表面的部分軌跡,從而推導出球心的位置,即固定磁場干擾矢量的大小及方向。

圖16 10面校準後的空間軌跡

5.傾斜補償及航偏角計算
  經過校準後電子指南針在水平面上已經可以正常使用了。但是更多的時候手機並不是保持水平的,通常它和水平面都有一個夾角。這個夾角會影響航向角的精度,需要通過加速度感測器進行傾斜補償。
  對於一個物體在空中的姿態,導航系統里早已有定義,如圖17所示,Android中也採用了這個定義。Pitch(Φ)定義為x軸和水平面的夾角,圖示方向為正方向;Roll(θ)定義為y軸和水平面的夾角,圖示方向為正方向。由Pitch角引起的航向角的誤差如圖18所示。可以看出,在x軸方向10度的傾斜角就可以引起航向角最大7-8度的誤差。

圖17 Pitch角和Roll角定義 圖18 Pitch角引起的航向角誤差

  手機在空中的傾斜姿態如圖19所示,通過3軸加速度感測器檢測出三個軸上重力加速度的分量,再通過式2可以計算出Pitch和Roll。

圖19 手機在空中的傾斜姿態


  式3可以將磁力計測得的三軸數據(XM,YM ,ZM)通過Pitch和Roll轉化為式1中計算航向角需要的Hy和Hx。之後再利用式1計算出航向角。


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

  其中包括:
  BSP Reference
  Linux Kernel Driver (LSM303DLH_ACC + LSM303DLH_MAG)
   HAL Library(Sensors_lsm303dlh + Liblsm303DLH) for sensors.default.so
  經過library 的計算,上層的應用可以很輕鬆的運用由Android定義由Library提供的航偏角信息進行應用程序的編寫。
————————————————————————————————————————
原文地址ST集成感測器方案實現電子羅盤功能



1,為什麼叫校正?答:測的不準(廢話1)

2,為什麼測不準?答:有誤差(廢話2)

3,有什麼誤差?答:軟鐵+硬鐵+。。。。

4,有什麼表現形式?答:零偏+刻度+非正交耦合+各軸互感+。。。

5,裝逼!能通俗直觀點嗎?答:采組數,畫個圖,看到個美國橄欖球--橢圓!

6,怎麼解決?答:校正或校準。

7,能痛快點嗎?答:採集數據,儘可能覆蓋更多的橢圓球體面(裝逼專業術語是讓感測器敏感軸盡量敏感全量程範圍),然後blabla(一言難盡,總之是想校正什麼參數,應用相應模型,套路,看看就會),算到一組參數,原始數據預處理後,用算的參數校正。

8,怎麼評價結果?畫個圖,美國橄欖球就變中國足球了,雖然可能還不是很圓,但比老毛子順眼點多了。


推薦閱讀:

華為手機為什麼這麼多人買?
有沒有人覺得Face ID不安全?
為什麼外國人演講時說一兩句中文就迎來一大片掌聲,而雷軍用英文演講時卻被眾人吐槽、惡搞?
手機在功能上未來還會有什麼突破?
手機聽歌用什麼APP比較好,現在音樂app這麼多?

TAG:手機 | 冷知識 | 物理科普 | 指南針 | 霍爾效應感測器 |