Cyp*_*236 3 c++ embedded magnetometer compass
我正在使用带有简单3轴磁力计的嵌入式设备。我目前在微特斯拉中显示XYZ值,但是如何将其转换为指南针方向?我曾尝试在Google上查找它,但我发现的所有内容似乎都非常复杂/解释得很差。
如果可能的话,我想知道如何进行倾斜补偿和不倾斜补偿。
在某种程度上有帮助的情况下,我目前在平面上获得的X,Y,Z值分别为70、0.8和34.1。
附注:如果这有帮助,请参见我用于磁力计的代码片段:
mSensor.enable();
while(true){
wait(1);
mSensor.getAxis(mData);
lcd.cls();
lcd.locate(0,3);
lcd.printf("X=%4.1f micro-Tesla\n\rY=%4.1f micro-Tesla\n\rZ=%4.1f micro-Tesla", mData.x, mData.y, mData.z);
Run Code Online (Sandbox Code Playgroud)
没有倾斜的补偿,它并不太复杂:
angle = atan2(Y, X);
Run Code Online (Sandbox Code Playgroud)
这实际上与将笛卡尔坐标[X,Y]中的向量转换为极坐标[length,angle]中的向量而无需长度相同。
对于倾斜补偿版本,您需要首先将3D矢量[X,Y,Z]投影到平面[X2,Y2]上,然后使用与以前相同的公式。但要做到这一点,您将需要一个加速度计来知道倾斜量。