默れ

ADXL345旋转检测

0
阅读(3480)

 接下来完成的第一个题目是检测旋转,并显示旋转方向

 首先检测加速度计ADXL345输出x,y,z三轴倾角数据

(1)读取寄存器DEVID的值,为0xE5,即器件ID,可知,ADXL345可正常工作。

(2)设置寄存器POWER_CTL为0x08,唤醒加速度计并设置为测量状态。每个单轴加速度计检测输出的姿态数据为16位,高8位和低8位分别存入两个寄存器中。读取姿态数据,并经过数据转换,存入ADuC7026的存储器中。当改变ADXL345的姿态,如将芯片由水平放置变为竖直放置时,三轴输出的倾角数据随之改变。

ADXL345加速度计的三轴输出响应与相对于重力的方向关系如下图所示:

 存储初末两个位置的及速度值,读取x,y,z三轴输出的静态位置,找出哪一轴的加速度变化最大。当芯片竖直放置时,旋转芯片,检测到x轴加速度为正,则显示“x up”,加速度为负,则显示“x down”;检测到y轴加速度为正,则显示“y up”,加速度为负,则显示“y down”。当芯片水平放置时,旋转芯片,检测到x轴y轴加速度之和为正时,显示“left”,表示向左旋转,加速度之和为负时,显示“right”,表示向右旋转。

基本的寄存器设置如下:

    设置寄存器THRESH_ACT,保存检测活动的阈值,旋转的加速度与THRESH_ACT寄存器的值进行比较。

    设置寄存器ACT_INACT_CTL为0xF0,使能交流耦合操作,将活动开始时的加速度值作为参考值,将新的加速度采样与该参考值比较,当差值大小超过THRESH_ACT值时触发中断。

    设置FIFO寄存器FIFO_CTL为0x28,FIFO工作在触发器模式。

    设置寄存器INT_ENABLE为0x10,使能动态检测中断,最后读取寄存器INT_SOURCE将数据清零,关闭中断。

显示结果如下: