STM32F103+LIS3DSH程序,自己调出来的可以直接应用,带原理图、PCB库和器件手册
我们可以直接调用官方驱动中的LIS3DH_GetAccAxesRaw()函数得到一个高位低位已经组合好的值。现在这个值还不是我们最后想要的加速度值,还需要做一下计算。
以X轴为例,我们称刚刚读取到的值为axis_x,因axis_x由高8位和低8位组成,所以我们可以测量到最多2的16次方(65536)种不同的值,再由之前配置好的量程(±2g)可知总量程为4g。计算得出结果单位是g,要转换为mg再乘以1000。综上可得出X轴加速度计算公式如下,其他两轴同理。
acc_x=axis_x*(4/65536)*1000。
于是我们得到了X、Y、Z轴的加速度矢量,通过反三角函数计算可得:
angle_x= [arctan(acc_x / squr(acc_yacc_y +acc_zacc_z))] 180/3.14
angle_y= [arctan(acc_y / squr(acc_xacc_x +acc_zacc_z))] 180/3.14
angle_z= [arctan(acc_z / squr(acc_xacc_x +acc_yacc_y))] *180/3.14
1