型号:QMC5883L
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);
参考文献
1.http://blog.csdn.net/zsn15702422216/article/details/52174055
2.http://blog.csdn.net/lmonkey000/article/details/50814539
3.http://blog.sina.com.cn/s/blog_717116870102v2pf.html