空间遍历找最大值和最小值是最基本的方法,但是应用有难度。因为在空间中,最大值和最小值一般只出现在X/Y/Z轴各自与地球磁力线重合的情况下,那么即使通过反复8字也可能无法得到正确的最大值和最小值,这会造成计算的gain和offset有偏差。最大值最小值一般用在平面校准法,比如在X/Y和Y/Z平面各自缓慢旋转一周,就能得到mx_max,mx_min,my_max,my_min,mz_max,mz_min,从而求得各自的gain和offset,因为平面是固定的,所以旋转校准的目的性很强。
对于gain,我的想法是校准还不如不校准。我测试过PNI和honeywell的磁传感器(分立元件),还有ST的集成传感器LSM303DLH,应该说分立元件的灵敏度很差,是必须校准的;但是集成传感器如LSM303DLH、AK8975的灵敏度一致性已经相当好了。拿AK8975来说,我在X/Y平面认真地旋转一周,(mx_max-mx_min)(my_max-my_min)两者的值基本相等。另外,我觉得gain不好校准的原因是,根据地球磁场强度50-60uT的大小,(mx_max-mx_min)的值在200-300之间变化,这时如果校准得到的数据即使只有2-3个值的偏差,对gain的影响都很大,况且磁力计读出数据本来就有跳动。相比于自己校准gain,我更相信芯片的一致性。
对于空间8字法,我的观点是通过普通的样本点(不是最大值和最小值)来找圆心(偏置坐标),这个和楼主的想法有出入。 |