前面已经通过LPC11U68成功对对传感器板子的各种传感器进行了通信,现在就利用其中的加速度传感器计算一下角度。
通信就不多说了,了一参考我之前的帖子:https://bbs.eeworld.com.cn/forum.php?mod=viewthread&tid=1085961&extra=
这里只是利用公式简单的将加速度值转换成了角度,因为没有加速度计和磁场传感器的补偿,所以会存在一些误差,对于精度要求不是很高的条件下已经完全可以使用了。
代码如下:
void CalculateAngle(void)
{
int x_g = Get_X_LIS2DW12();
int y_g = Get_Y_LIS2DW12();
int z_g = Get_Z_LIS2DW12();
double x_coordinate = 0;
double y_coordinate = 0;
double z_coordinate = 0;
z_coordinate = tan(sqrt(x_g*x_g+y_g*y_g)/(double)z_g) * 180 / 3.14;
x_coordinate = tan((double)x_g/sqrt(y_g*y_g+z_g*z_g)) * 180 / 3.14;
y_coordinate = tan((double)y_g/sqrt(x_g*x_g+z_g*z_g)) * 180 / 3.14;
DEBUGOUT("X:%.2f | Y:%.2f | Z:%.2f \r\n",x_coordinate,y_coordinate,z_coordinate);
}
效果如下,通过转动传感器,可以正常读取角度,存在2度左右的偏差:
此内容由EEWORLD论坛网友hehung原创,如需转载或用于商业用途需征得作者同意并注明出处