CSDN话题挑战赛第2期
参赛话题:学习笔记
学习之路,长路漫漫,写学习笔记的过程就是把知识讲给自己听的过程。这个过程中,我们去记录思考的过程,便于日后复习,梳理自己的思路。学习之乐,独乐乐,不如众乐乐,把知识讲给更多的人听,何乐而不为呢?
三轴加速度传感器的驱动实现
- 项目中解决的问题
- 三轴加速度传感器的驱动实现
- 做题思路
- 三轴加速度传感器初始化
- 三轴加速度传感器加速度xyz
- 加速度至角度转换
- 传感器位置校准
- 总结
项目中解决的问题
三轴加速度传感器的驱动实现
ADXL345支持SPI与IIC这两种自由灵活的数字通信方式,为了节约STM32的引脚数量,我们在传感器底层驱动中采用IIC协议进行数据交互。
做题思路
三轴加速度传感器初始化
为了节省STM32的引脚,我们选用的是IIC通信协议。三轴加速度传感器初始化可以利用3D Init.vi函数来实现,如图
所示。该VI输入端需要指定使用哪一组IIC,哪两个物理引脚作为SCL与SDA,以及ADXL345器件地址。输出端可以返回ADXL345的初始化状态以及芯片ID号。具体的参数会在后面的实验中进行讲解。
本VI首先对IIC进行初始化,然后设置ADXL345的工作方式(13位全分辨率、右对齐输出、±16g量程、更新频率为100Hz),最后设置ADXL345进入测量模式。这些过程都是在该函数内部自动完成的,用户只需按照选择与IIC相关的SCL与SDA引脚即可。
三轴加速度传感器加速度xyz
当三轴加速度传感器初始化成功以后,说明ADXL345传感器进入正常工作模式,此时可以利用3D XYZ Read.vi函数来读取3个轴向上的加速度分量,如图
该VI返回3个I16整型数值,但有效输出范围是-4096~4095。由于满量程输出为±16g,因此X、Y、Z这3个方向上的加速度分量单位为3.9mg/LSB。
加速度至角度转换
获取3个轴向上的加速度分量之后,对于用户来说,这些数值并没有实际的物理意义,还需要按照前面介绍的公式,将这些原始数据转换成相对于Ax、Ay、Az的夹角,利用3D XYZ To Angle.vi实现
传感器位置校准
三轴加速度传感器会随着工作时间以及温度发生漂移,致使输出结果误差越来越大。这时我们可以利用3D XYZ Calibration.vi函数对该芯片进行校准,如图3-258所示。需要注意的是,在执行该函数之前,需要将贴有该传感器的物体水平放置。
最后两个是ADXL345寄存器操作函数,仅供感兴趣的用户在编写更多的ADXL通信函数时使用。不太熟悉这两个函数的用户可以参考3D-VI子面板中的前4个驱动VI,双击打开这些VI的程序框图,再对比ADXL345芯片手册中的时序图,就会明白整个实现过程。
总结
三轴加速度传感器可以感知三维空间坐标系中,每个方向上的重力加速度分量,据此,可以计算出当前传感器翻转后的真实角度,故加速度传感器又称倾角传感器,一般多用在智能手机、云台以及航模飞行器等设备上。