三轴加速度传感器LIS3DH使用心得
时间:2022-08-08 16:30:01
LIS3DH是ST公司推出的三轴加速度计芯片可以实现许多有趣的应用。接下来,作者通过例程分享LIS3DH一些发展经验。
首先请出我们使用的开发板:UFUN, 这是一个小巧精致的开发板,核心是STM32.配备多种传感器,包括LIS3DH,它的价格也很贴近百姓~
先给出LSI3DH官方文件下载地址:
https://www.st.com/zh/mems-and-sensors/lis3dh.html#
然后演示下一个例程的运行结果,PC计算后的加速度和角度通过串口接收
要获得加速度和角度这两个值,首先要配置加速度计,这里我们主要讨论LIS3DH,STM32的IIC不提配置。采样率、工作模式、量程、XYZ轴的使能。
采样率单位为HZ,意思是每秒采样次数,我们可以配置的采样率如下图所示(来自官方文件),例程为100HZ。
工作模式分为断电模式、正常模式和低功耗模式。断电模式LIS3DH几乎所有内部块都会关闭,功耗低于正常模式,但分辨率也会降低。我们选择正常模式。
量程分为±2、±4、±8、±16(如下图所示)。量程决定LIS3DH读取加速度的极限值。也会影响我们以后的计算。
我们可以式和低功耗模式下,我们可以决定X、Y、Z非使能轴生会的数据是00h。
代码如下。本例程使用ST官方提供的LIS3DH驱动器可以直接调用函数进行操作。当然,如果要用寄存器操作,可以根据官方文件编写。
配置后,我们可以读取数据。我们可以读取的每个轴加速度数据分为高8地址:高8位和低8位。该值为左对齐二进制补码。
我们可以直接调用官方驱动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
角度的计算可以根据自己的需要进行改变,这里的公式是计算的X、Y、Z轴和水平线的角度。LSI3DH理论上,水平放置x、y=0°,z=90°,实际误差。三轴的正方向如下图所示。
如有问题,请一起讨论。如果有错误,一定要纠正~
文中源码为ufun例程《基本例程7》 - 三轴加速度传感器ufun学习板共享微信官方账号下载,为了方便写作,变量名与例程略有不同。微信官方账号会定期更新与硬件开发相关的技术文章,欢迎关注。