磁力計(jì)校準(zhǔn)
方位角獲取
驅(qū)動(dòng)磁力計(jì)傳感器獲取到的只是原始數(shù)據(jù),即磁場(chǎng)在磁力計(jì)芯片的X軸、Y軸以及Z軸的大小,水平放置時(shí),可以通過(guò)反正切函數(shù)進(jìn)行獲取方位角,如下圖的α角度:

α = arctan(y / x),(-π/2 ~ π/2)
(提示:假如以B水平為X軸建立坐標(biāo)軸,那么α處于第四象限,即得到的角度值為負(fù)的,即下圖所表達(dá)的意思。要使角度以“北多少度”提示,就需要使用到α的互周角,即360+α。簡(jiǎn)單來(lái)說(shuō),方位角的計(jì)算,還得根據(jù)x和y判斷象限進(jìn)行不同的計(jì)算)

校準(zhǔn)
磁力計(jì)容易受到周圍一些磁性材料影響,導(dǎo)致坐標(biāo)圓心坐標(biāo)偏移,如下圖b所示:

若無(wú)干擾的情況下,就可以按照前面所述的獲取方位角進(jìn)行獲取,但在現(xiàn)實(shí)中,會(huì)存在偏差,所以需要進(jìn)行校準(zhǔn)。
常用的校準(zhǔn)方法有:平面校準(zhǔn)法、立體八字校準(zhǔn)法、十面校準(zhǔn)法。
平面校準(zhǔn)法
將開(kāi)發(fā)板水平放置,針對(duì)XY軸進(jìn)行校準(zhǔn),將開(kāi)發(fā)板在XY平面內(nèi)旋轉(zhuǎn)一周,等價(jià)于將地球磁場(chǎng)矢量繞著點(diǎn)O(x0, y0)即圓心垂直于XY平面的法線旋轉(zhuǎn),這樣子就可以得到圓心的位置,圓心就為旋轉(zhuǎn)中X軸和Y軸測(cè)到的最大值和最小值,即圓心((x_max + x_min) / 2, (y_max + y_min) / 2)。

從上圖就可以知道具體的偏移值就是偏移圓心與正圓心的差,即x軸的偏移為(x_max + x_min) / 2,而y軸的偏移為(y_max + y_min) / 2)。
當(dāng)我們獲取到磁力計(jì)的原始值時(shí),再減去偏移值即可。這樣的操作下,圓心即歸為正中心,如下圖所示。

由上可以算得校準(zhǔn)后比較精確的值,但是由于arctan的值的范圍為(-π/2 ~ π/2),所以想得到0~360°的表示,還得根據(jù)象限不同進(jìn)行不同的運(yùn)算。
具體區(qū)別如下:
當(dāng)x>0且y>0,處于第一象限:angle = (atan(double)y / x) * 180) / 3.14159f
當(dāng)x>0且y<0,處于第四象限:angle = 360 + (atan(double)y / x) * 180) / 3.14159f
當(dāng)x<0,y>0或y<0,處于第二象限或第三現(xiàn)象,angle = 180 + (atan(double)y / x) * 180) / 3.14159f
當(dāng)x=0且y>0,angle = 90
當(dāng)x=0且y<0,angle = 270
以上情況,需結(jié)合所處象限下,(atan(double)y / x) * 180) / 3.14159f這個(gè)算式的值即可理解。
打個(gè)比方,處于第二象限,這時(shí)候x小于0,而y大于0,如下圖情況。

通過(guò)(atan(double)y / x) * 180) / 3.14159f算式獲取到的是γ的值且該值為負(fù),而這里的0~360度的表示是γ的互補(bǔ)角即β,所以就需要加上180度即可。這樣算出來(lái)的角度值即β,其意義就是北β度方向,要獲得相對(duì)準(zhǔn)確的地理位置,還得加上“地磁偏角”,與各地的地理位置相關(guān)。