微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > LSM303DLHC应用解析单片机程序-----STM32F303

LSM303DLHC应用解析单片机程序-----STM32F303

时间:11-23 来源:互联网 点击:

余弦俯仰角

fSinRoll=-AccBuffer[1]/fNormAcc;

fCosRoll=sqrt(1.0-(fSinRoll*fSinRoll));

fSinPitch=AccBuffer[0]/fNormAcc;

fCosPitch=sqrt(1.0-(fSinPitch*fSinPitch));
8.根据加速度正弦余弦值来判断角度
RollAng-----横滚角(绕Z轴转)
PitchAng-----俯仰角(绕X轴转)
if(fSinRoll>0)
{
if(fCosRoll>0)
{
RollAng=acos(fCosRoll)*180/PI;
}
else
{
RollAng=acos(fCosRoll)*180/PI+180;
}
}
else
{
if(fCosRoll>0)
{
RollAng=acos(fCosRoll)*180/PI+360;
}
else
{
RollAng=acos(fCosRoll)*180/PI+180;
}
}

if(fSinPitch>0)
{
if(fCosPitch>0)
{
PitchAng=acos(fCosPitch)*180/PI;
}
else
{
PitchAng=acos(fCosPitch)*180/PI+180;
}
}
else
{
if(fCosPitch>0)
{
PitchAng=acos(fCosPitch)*180/PI+360;
}
else
{
PitchAng=acos(fCosPitch)*180/PI+180;
}
}

if(RollAng>=360)
{
RollAng=RollAng-360;
}
if(PitchAng>=360)
{
PitchAng=PitchAng-360;
}
if(RollAng>=360)
{
RollAng=RollAng-360;
}
if(PitchAng>=360)
{
PitchAng=PitchAng-360;
}
9.航向角计算
航向角是指移动物体前进方向和正北方向之间的夹角。以顺时针方向为正角度。
HeadingValue---航向角(范围:0~360度)
fTiltedX=MagBuffer[0]*fCosPitch+MagBuffer[2]*fSinPitch;
fTiltedY=MagBuffer[0]*fSinRoll*fSinPitch+MagBuffer[1]*fCosRoll-MagBuffer[1]*fSinRoll*fCosPitch;
航向角:Y轴与X轴的正切(atan2f)
HeadingValue=(float)((atan2f((float)fTiltedY,(float)fTiltedX))*180)/PI;
if(HeadingValue0)
{
HeadingValue=HeadingValue+360;
}
在平面坐标系中载体的方向定义与X、Y、Z三轴是对应关系如下:
X轴----E(东),Y轴----N(北),Z轴-----天
LSM303DLHC数据手册寄存器功能配置及地址请详细阅读,给寄存器地址写值时对应相应功能请仔细检查。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top