指南针算法
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这样根据抗干扰技术算法对α进行处理就可得出该磁场的偏转角度,最后通过显示单元进行输出。