指南針演算法
1. 求助!指南針版的『籌碼分布』的真實演算法
估計不行,軟體不可能都一樣,用哪個前提是你要理解他
2. 物理問題 手機指南針校正為什麼要繞 8 字
手機要想得到compass的值需要由三個sensor來確定,accel, gyro, magnetic。accel可以判斷重力感應的放心,來確定手機所在的三個軸向XYZgyro可以判斷出機器在三個軸向的轉動。magnetic可以判斷出在三個軸向的磁感應量。這個值並不是我們所能直觀看懂的compass的值。那麼通過orientation的設置,使機器能夠知道XYZ三個方向哪個是指北的。一般機器在打開compass的application時只有知道自己的orientation和default offset。這時候就需要各位轉動手機。雖然是說的8字,但是其實是想讓你把三個軸向都轉一轉這樣在每個軸向會形成一個螺旋線的球體(我用小畫家畫不出來,大家腦補,或者換個時間我去弄個圖來)。這個就是周圍的磁場。在這一刻感測器就開始計算當前的三個軸向offset並加以糾正,加上適當的補償值。如此你就可以得到准確的北。並且通過gyro和magnetic共同計算就可以知道你在水平方向的旋轉度數,這樣你除了東西南北還能知道其他方向的角度(東西南北對應的是-X,+X,-Y,+Y,比較好算,轉過這些點就要混合計算了。)如果演算法足夠先進,再加上accel的判斷就可以計算出機器是否是在傾斜的狀況下旋轉並計算出compass的值。
3. 指南針怎麼測海拔
你好,單純的指南針是沒有測量海拔的能力的。需要使用手機的內置指南針功能來測量。以下以小米手機為例介紹如何使用指南針功能測量海拔:
在小米桌面上找到系統工具並進入。
手機指南針測量海拔的原理:海拔的測量通常應該是用氣壓和GPS。氣壓計是測量大氣壓強計算的,而GPS基本原理是通過收集環繞地球的GPS衛星信號,然後通過定位演算法計算得來的,大致邏輯就就是已知一個點到空間其它若干個點的距離。
求解這個點的位置過程,其定位本身就是三維空間定位,因此計算相對海拔的高度理論上也是可以做到的。因為gps定位的高度誤差,因此有些軟體還是設計了通過位置,查找高程資料庫校對結果的方式。
4. 電子指南針的原理是怎麼樣的.
用磁場感測器KMZ52設計的電子指南針
文章作者:胡修林 楊 奇
文章類型:設計應用 文章加入時間:2004年11月26日15:28
文章出處:國外電子元器件
--------------------------------------------------------------------------------
摘要:介紹了目前用於定位系統中的電子指南針的工作原理,詳細論述了磁場感測器晶元KMZ52的工作原理,給出了用KMZ52磁場感測器設計電子指南針的總體設計方案和電路,同時給出了設計中的一些特殊處理方法。
關鍵詞:電子指南針;磁場感測器;KMZ52
1 概述
指南針是一種重要的導航工具,可應用在多種場合中。電子指南針內部結構固定,沒有移動部分,可以簡單地和其它電子系統介面,因此可代替舊的磁指南針。並以精度高、穩定性好等特點得到了廣泛運用。
Philips公司生產的半導體器件KMZ52是一種專門用於電子指南針的二維磁場感測器。它採用磁場感測器的磁阻(MR)技術,並用翻轉技術消除信號偏移,而用電磁反饋技術來消除溫度的敏感漂移。由於外界存在干擾,該系統集成了幾種特殊的抗干擾技術來提高系統精度。
本文介紹了電子指南針的工作原理及電路設計,同時給出了其抗干擾設計以及信號和數據的處理方法。
[img]http://www.21ic.com/info/images/iie/200408/13a.gif[/img]
2 工作原理與總體方案
圖1是KMZ52的內部結構框圖和引腳排列。圖中,Z1和Z4為翻轉線圈,Z2和Z3為補償線圈。由於環境溫度可能會影響系統精度,因此,在高精度系統中,可以通過補償線圈對其進行補償。KMZ52內部有兩個正交的磁場感測器� 分別對應二維平面的X軸和Y軸。磁場感測器的原理是利用磁阻(MR)組成磁式結構,這樣可改變電磁物質在外部磁場中的電阻系數。以便在磁場感測器的翻轉線圈Z1和Z2上載入翻轉電信號後使之能夠產生變化的磁場。由於該變化磁場會造成磁阻變化(ΔR)0並將其轉化成變化的差動電壓輸出,這樣,就能根據磁場大小正比於輸出差動電壓的原理,分別讀取對應的兩軸信號,然後再進行處理計算即可得到偏轉角度。
整個電子指南針系統主要由感測器單元、信號調整單元(SCU)、方向確定單元(DDU)和顯示單元四部分組成。電子指南針的總體設計框圖如圖2所示。圖中,磁場感測器KMZ52用於將地磁場信號轉化成電信號輸出,信號調整單元用於將磁場感測器單元中的輸出信號成比例放大,並將其轉換成合適的信號hex和hey,同時消除信號的偏移。對於保證系統的精度來說,SCU是最重要的部件。通過DDU可將信號調整單元輸出的兩路信號hex和 hey進行放大,然後再按下式計算出偏轉角度α:
α=arctan�hey/hex
這樣根據抗干擾技術演算法對α進行處理就可得出該磁場的偏轉角度,最後通過顯示單元進行輸出。
3 硬體設計
該電子指南針系統的電路設計如圖3所示。由於KMZ52內部橋式結構的磁阻輸出是差動電壓,通過運算放大器可以成比例放大,因此,在測量地磁場信號時,為了將兩個磁場感測器信號放大同樣的倍數,可以將二者的翻轉線圈串聯,並對差動電壓選用同樣的運放結構。翻轉信號從①口輸入,X、Y軸差動電壓信號則分別從②、③口輸出。然後通過處理系統對傳來的信號進行A/D采樣、數值處理和校正後,即可得到所求的角度。
[img]http://www.21ic.com/info/images/iie/200408/13c.gif[/img]
4 數值處理
由於KMZ52的輸出信號很微弱,故信號干擾較大。在輸出幅值很小的位置上,通常有300mV左右且變化很大的干擾;而在輸出幅值時則近似保持恆值。兩路信號幅值與角度的關系如圖4所示。
[img]http://www.21ic.com/info/images/iie/200408/13d.gif[/img]
為使二者的比值接近tanα�0<α<90°的變化,可以在幅值較大且數值變化較小的角度范圍內,使幅值保持基本不變;而在幅值較小且數值變化較大的角度范圍內,用一個函數改變其幅值變化曲線。具體實現時,可按照一定角度對曲線進行分段,並對各段用一次函數y=ax+b去擬合。這樣,就可以使幅值變化曲線接近tanα。角度劃分越細,精度越高。磁場感測器KMZ52的精度為3°,若按15°劃分,可將精度提高到1°。若按5°對其劃分,精度可高達0.3°。如劃分更細,精度還可進一步提高。若採用高階函數去擬合,也可以提高精度。實際上,在精度要求不高的情況下,通常以15°劃分就可以達到要求。
5 干擾校正
有時候,某些外來磁場疊加會產生一個恆定磁場,這個磁場對系統指示將造成影響。故可採用如下方法對其進行校正:
讓整個系統在水平面上旋轉一周,干涉磁場與地球磁場疊加會有一個最大值Vmax和一個最小值Vmin,記錄下這兩個值和達到最大值(或最小值)的角度φ,再經過校正,即可消除磁場的影響。現以圖5所示的干擾校正方案為例來加以說明。
設地球磁場的大小為Vear,干擾磁場的大小為Vdis�則有:Vear=(Vmax+Vmin)/2�
Vdis=(Vmax-Vmin)/2�
這樣,由正弦定理Vear/sinφ=Vdis/sinγ可求出γ。然後在α上加上γ角即可消除干擾磁場的影響。
6 結束語
本電子指南針採用特殊的數據處理方法提高了系統的精度。由於系統採用了抗干擾技術,因而減小了其它因素所造成的影響,使系統精度進一步得到提高。此外,該系統本身可測量2維磁場,故可以很方便地與另一個1維磁場感測器(KMZ51)組成3維測量系統,以消除傾斜現象。由於本系統可以採用各種處理平台來實現,因此具有良好的可移植性,可廣泛用於定位系統,而且可靠性好,精度很高。
5. 指南針怎麼測海拔
你好,單純的指南針是沒有測量海拔的能力的。需要使用手機的內置指南針功能來測量。以下以小米手機為例介紹如何使用指南針功能測量海拔:
在小米桌面上找到系統工具並進入。
2.點選指南針功能。
3.這個時候手機就可以顯示當前地理和位置,經緯線均可顯示出來,最重要的就是顯示了海拔高度。
4.記得要連上網這樣數據才可以比較准確。
手機指南針測量海拔的原理:海拔的測量 通常應該是用氣壓和GPS。氣壓計是測量大氣壓強計算的,而GPS基本原理是通過收集環繞地球的GPS衛星信號,然後通過定位演算法計算得來的,大致邏輯就就是已知一個點到空間其它若干個點的距離。
求解這個點的位置過程,其定位本身就是三維空間定位,因此計算相對海拔的高度理論上也是可以做到的。因為gps定位的高度誤差,因此有些軟體還是設計了通過位置,查找高程資料庫校對結果的方式
6. 能否多介紹一下指南針操作系統,我想在百度百科上創建一個詞條
沒有特別多的東西,當年學習操作系統課程。和幾個同學一起用匯編語言寫了一個小型的操作系統。
在最開始的啟動扇區的512個位元組裡面,放進去了4個漢字(64個位元組),一個FAT12的小程序(約300位元組),最後填滿了才發現只剩下幾十個位元組。
基本上用NASM編譯80x86的匯編寫了啟動部分,然後修改了GCC的鏈接腳本,使之能夠生成一種特殊格式的可執行文件。
驅動方面:
賈榮飛寫了一個FAT12的文件系統(一個匯編版本、一個C語言版本),匯編的版本幾百個位元組,可以按照文件名載入內核文件。不過後來發現簡單使用BIOS讀軟盤太慢了,不到100K的程序要讀取2-3分鍾,主要是沒有緩沖。進入了系統的那個C語言的版本,讀出全盤才40秒,比當時的HDD Copy還略微快一些。
我寫的顯示驅動和漢字顯示,不過發現要把C語言的位元組改成雙位元組真的相當麻煩,到處都要改。現在都是wchar了。
其他的就是鍵盤驅動、滑鼠驅動、定時器驅動。
此外為了演示,做了一個內核SHELL,內核收到鍵盤的特定按鍵可以彈出一個SHELL。做了幾個命令,就是基本的目錄和文件操作。做了估計是最慢的調度演算法,特點就是,切換任務的時間大約是1秒左右,這樣可以看清楚,切換到了那個任務,還突發奇想做了一個按鍵可以切換任務。你想切到哪個任務都可以。
有興趣可以再問,如果想要源碼,我可以給你找找。
7. 小米4自帶指南針為什麼要畫8
因為
地球磁場
是從地理南極(N),跨越地表流向地理北極(S),所以畫8可以讓
磁感測器
讀取更多的范圍更大的數據來決定自身數據
取值范圍
和演算法以增加准確度。
8. 三軸指南針 HMC5883L 的角度演算法公式是怎樣的如何使用C/C++編程序將數據處理並返回呢
HMCHMC_count()
{
HMCcount;
intx,y,z;
doubleangle;
Multiple_Read_HMC5883(); //連續讀出數據,存儲在BUF中
x=HMC_BUF[0]<<8|HMC_BUF[1];//
z=HMC_BUF[2]<<8|HMC_BUF[3];//
y=HMC_BUF[4]<<8|HMC_BUF[5];//
angle=atan2((double)y,(double)x)*(180/3.14159265)+180;//angleindegrees
count.x=x;
count.y=y;
count.z=z;
count.angle=angle;
returncount;
}
9. 電子指南針的原理
Z1和Z4為翻轉線圈,Z2和Z3為補償線圈。由於環境溫度可能會影響系統精度,因此,在高精度系統中,可以通過補償線圈對其進行補償。內部有兩個正交的磁場感測器? 分別對應二維平面的X軸和Y軸。磁場感測器的原理是利用磁阻(MR)組成磁式結構,這樣可改變電磁物質在外部磁場中的電阻系數。以便在磁場感測器的翻轉線圈Z1和Z2上載入翻轉電信號後使之能夠產生變化的磁場。由於該變化磁場會造成磁阻變化(ΔR)0並將其轉化成變化的差動電壓輸出,這樣,就能根據磁場大小正比於輸出差動電壓的原理,分別讀取對應的兩軸信號,然後再進行處理計算即可得到偏轉角度。整個電子指南針系統主要由感測器單元、信號調整單元(SCU)、方向確定單元(DDU)和顯示單元四部分組成。電子指南針的總體設計框圖如圖2所示。圖中,磁場感測器KMZ52用於將地磁場信號轉化成電信號輸出,信號調整單元用於將磁場感測器單元中的輸出信號成比例放大,並將其轉換成合適的信號hex和hey,同時消除信號的偏移。對於保證系統的精度來說,SCU是最重要的部件。通過DDU可將信號調整單元輸出的兩路信號hex和 hey進行放大,然後再按下式計算出偏轉角度α:α=arctan?hey/hex這樣根據抗干擾技術演算法對α進行處理就可得出該磁場的偏轉角度,最後通過顯示單元進行輸出。