QMC5883L 校准方法

  • Post author:
  • Post category:其他


1、   数据读取

X_QMC=BUF[1]<< 8 | BUF[0]; //Combine MSB and LSB of X Data output register  最高有效位

Y_QMC=BUF[3]<< 8 | BUF[2]; //Combine MSB and LSB of Y Data output register

Z_QMC=BUF[5]<< 8 | BUF[4]; //Combine MSB and LSB of Z Data output register

2、 水平校准:把椭圆修到正圆,一、修偏心,二、修半径。

a)、选定中心点,以固定半径R水平旋转,找出x和y的最大最小值x_max、x_min、y_max 、y_min。

b)、于是,x的偏移: Xoffset= (x_max + x_min) / 2;

c)、x的比例取:x_gain=1

d)、y的偏移:Yoffset =(y_max + y_min) / 2;

e)、y的比例:y_gain=(x_max – x_min) / (y_max – y_min);

X_QMC = Xgain *(X_QMC -Xoffset);

Y_QMC = Ygain * (Y_QMC -Yoffset);

3、空间校准:把椭球修到正球

a)、空间旋转芯片,找出xyz的最大最小值xmax、xmin、ymax 、ymin、zmax 、zmin。

b)、于是,x的偏移: Xoffset= (xmax + xmin) / 2;

c)、x的比例取:x_gain=1

d)、y的偏移:Yoffset =(ymax + ymin) / 2;

e)、y的比例:y_gain=(xmax – xmin) / (y_max -y_min);

f)、 z的偏移:Zoffset =(zmax + zmin) / 2;

g)、z的比例:z_gain=(xmax – xmin) / (z_max -z_min);

X_QMC = QMC_Xgain *(X_QMC – QMC_Xoffset);

Y_QMC = QMC_Ygain * (Y_QMC – QMC_Yoffset);

Z_QMC = QMC_Zgain * (Z_QMC- QMC_Zoffset);