- 1、本文档被系统程序自动判定探测到侵权嫌疑,本站暂时做下架处理。
- 2、如果您确认为侵权,可联系本站左侧在线QQ客服请求删除。我们会保证在24小时内做出处理,应急电话:400-050-0827。
- 3、此文档由网友上传,因疑似侵权的原因,本站不提供该文档下载,只提供部分内容试读。如果您是出版社/作者,看到后可认领文档,您也可以联系本站进行批量认领。
查看更多
磁场校准方法:
将模块安装到设备中固定,并放置于原理
分别将三轴磁场偏移值设置为0.发送指令如下:
0xff 0xaa 0x0b 0x00 0x00
0xff 0xaa 0x0c 0x00 0x00
0xff 0xaa 0x0d 0x00 0x00
注意每条指令需间隔100ms
开始统计三轴磁场强度的最大值和最小值,分别计为
HxMax,HxMin,HyMax,HyMin,HzMax,Hzmin。
校准的方式有两种,一种是平面校准,一种是三维校准。平面校准适用于模块在平面内工作,俯仰和滚转为小角度变化的情况,这种可以用平面校准法。如果俯仰角和滚转角变化较大,则需要用三维校准法。
平面校准法:
将模块放平,绕Z轴缓慢旋转360°,同时统计三轴磁场的最大值与最小值,直至最大值与最小值不在发生变化。
三维校准法:
先绕X缓慢旋转360°,再绕Y轴缓慢旋转360°,再绕Z轴缓慢旋转360°,最后再随意旋转几圈,同时统计三轴磁场的最大值与最小值,直至最大值与最小值不在发生变化。
计算磁场偏移值,偏移值为最大值与最小值相加的一半。
HxOffset = (HxMax+HxMin)/2;
HyOffset = (HyMax+HyMin)/2;
HzOffset = (HzMax+HzMin)/2;
将偏移值写入模块的寄存器,分别发送指令如下:
0xff 0xaa 0x0b HxOffsetL HxOffsetH
0xff 0xaa 0x0c HyOffsetL HyOffsetH
0xff 0xaa 0x0d HzOffsetL HzOffsetH
注意每条指令需间隔100ms。其中HxOffsetL为第4步中算出的x轴误差的低字节,HxOffsetH为第4步中算出的x轴误差的高字节,HyOffsetL, HyOffsetH, HzOffsetL, HzOffsetH同理。
保存当前配置。发送指令0xff 0xaa 0x00 0x00 0x00;
加速度校准方法:
分别将加速度三轴的偏移值设置为0。发送指令如下:
0xff 0xaa 0x05 0x00 0x00
0xff 0xaa 0x06 0x00 0x00
0xff 0xaa 0x07 0x00 0x00
注意每条指令需间隔100ms
将模块放置水平。
读取当前加速度的数值,为了计算准确,可多次读取后取平均。记下当前的三轴加速度值,分别为ax0,ay0,az0.
计算加速度的常值偏差。模块水平放置的时候,模块的三轴加速度输出应该为【0g,0g,1g】,转换为传感器的输出值就是【0,0,2048】。那么三轴加速度的误差值为:e =【ax0,ay0,az0-2048】。
将三轴的加速度偏移值写入寄存器,分别发送指令如下:
0xff 0xaa 0x05 exL exH
0xff 0xaa 0x06 eyL eyH
0xff 0xaa 0x07 ezL ezH
注意每条指令需间隔100ms。其中exL为第4步中算出的x轴误差的低字节,exH为第4步中算出的x轴误差的高字节,eyL,eyH,ezL,ezH同理。
保存当前配置。发送指令0xff 0xaa 0x00 0x00 0x00;
读取寄存器方法:
往READADDR(0x27)寄存器里写入需要读取的地址,比如要读取0x05寄存器,那么给模块发送指令:0xff 0xaa 0x27 0x05 0x00
模块收到指令以后,将返回数据包0x55 0x5f D1L D1H D2L D2H D3L D3H D4L D4H SUM
其中D1是刚才写入的寄存器的内容,D2、D3、D4分别是D1后面的寄存器的内容。比如刚才写入READADDR的内容是0x05,那么D1就是AXOFFSET(0x05),D2就是AYOFFSET(0x06),D3就是AZOFFSET(0x07),D4就是GXOFFSET(0x08)。
附表:
寄存器序号:
#define SAVE 0x00
#define CALSW 0x01
#define RSW 0x02
#define RRATE 0x03
#define BAUD 0x04
#define AXOFFSET 0x05
#define AYOFFSET 0x06
#define AZOFFSET 0x07
#define GXOFFSET 0x08
#define GYOFFSET 0x09
#define GZOFFSET 0x0a
#define HXOFFSET 0x0b
#define HYOFFSET 0x0c
#define HZOFFSET 0x0d
#define D0MODE 0x0e
#define D1MODE 0x0f
#define D2MODE 0x10
#def
文档评论(0)