ADXL345之倾角+活动中断

ADXL345之倾角+活动中断

1. 硬件

ADDRESS 引脚接地
所以IIC设备地址为0x53

中断INT1 的引脚为PB9

2. 测量范围

ADXL345是一款数字三轴加速度计,可以测量沿三个方向的加速度。
这里的“2g”、“4g”、“8g”和“16g”指的是加速度计可以测量的不同最大加速度范围。
这里的“g”代表地球表面的标准重力加速度,大约为9.80665 m/s²。

自由落体的加速度是指物体在仅受重力作用下自由下落时的加速度,
这个加速度被称为重力加速度,通常用符号 ( g ) 表示。在地球表面附近,
重力加速度的平均值大约是 9.8 米每秒平方(m/s²),有时为了简化计算,也会近似取为 10 m/s²。

测量范围的理解
2g:表示加速度计可以测量从-2g到+2g之间的加速度,即从-19.6133 m/s²到+19.6133 m/s²。
4g:表示加速度计可以测量从-4g到+4g之间的加速度,即从-39.2266 m/s²到+39.2266 m/s²。
8g:表示加速度计可以测量从-8g到+8g之间的加速度,即从-78.4532 m/s²到+78.4532 m/s²。
16g:表示加速度计可以测量从-16g到+16g之间的加速度,即从-156.9064 m/s²到+156.9064 m/s²。
分辨率与灵敏度
分辨率:指加速度计能够区分的最小加速度变化。对于ADXL345,它的分辨率最高可达13位,这意味着在不同的测量范围内,每个LSB(最低有效位)所代表的实际加速度值是不同的。
灵敏度:指加速度计将物理加速度转换为数字输出的能力。ADXL345的灵敏度是固定的4 mg/LSB(毫克每最低有效位),这意味着无论选择哪个测量范围,每个LSB都代表相同的加速度值(0.004 g/LSB 或者 0.0392266 m/s²/LSB)。
这意味着每个最低有效位(Least Significant Bit, LSB)代表 0.004 g 的加速度变化。这里 mg 是毫克(milli-g),1 g 相当于地球表面的标准重力加速度,大约为 9.80665 m/s²。

不同测量范围的选择
如果你的应用只需要测量较小的加速度变化,比如人体运动或轻微震动,可以选择±2g的范围,这样可以获得更高的分辨率。
对于更大的加速度变化,如车辆行驶或机器振动,可以选择±4g或±8g的范围。
对于极端情况,如碰撞测试或非常快速的动态运动,可以选择±16g的范围。
总结
±2g:适用于测量较轻的加速度变化,如人体活动。
±4g:适用于测量中等程度的加速度变化,如日常设备的运动。
±8g:适用于测量较大的加速度变化,如车辆行驶。
±16g:适用于测量极端的加速度变化,如碰撞测试或剧烈的冲击。
你可以根据自己的应用需求选择合适的测量范围。
如果不确定,通常会选择一个能够覆盖预期加速度变化范围的设置,并且尽可能保持较高的分辨率

  • 选用16g 的测量范围

3. 寄存器概念

    user_write_byte_extend(&iic_ctl_triaxial, ADXL345_ADDR, 0x2E,0x00);   //禁用中断

    user_write_byte_extend(&iic_ctl_triaxial, ADXL345_ADDR, 0x1E,0x00);   //X 偏移量 根据测试传感器的状态写入
    user_write_byte_extend(&iic_ctl_triaxial, ADXL345_ADDR, 0x1F,0x00);   //Y 偏移量 根据测试传感器的状态写入
    user_write_byte_extend(&iic_ctl_triaxial, ADXL345_ADDR, 0x20,0x00);   //Z 偏移量 根据测试传感器的状态写入

    user_write_byte_extend(&iic_ctl_triaxial, ADXL345_ADDR, 0x1D,0x10);   //敲击阀值
    user_write_byte_extend(&iic_ctl_triaxial, ADXL345_ADDR, 0x21,0x00);   //持续时间
    user_write_byte_extend(&iic_ctl_triaxial, ADXL345_ADDR, 0x22,0x00);   //开始延迟
    user_write_byte_extend(&iic_ctl_triaxial, ADXL345_ADDR, 0x23,0x00);   //敲击窗口

    user_write_byte_extend(&iic_ctl_triaxial, ADXL345_ADDR, 0x24,0x0A);   //活动阀值
    user_write_byte_extend(&iic_ctl_triaxial, ADXL345_ADDR, 0x25,0x05);   //静止阀值
    user_write_byte_extend(&iic_ctl_triaxial, ADXL345_ADDR, 0x26,0x01);   //进入静止时间
    user_write_byte_extend(&iic_ctl_triaxial, ADXL345_ADDR, 0x27,0xFF);   //三轴参与

    user_write_byte_extend(&iic_ctl_triaxial, ADXL345_ADDR, 0x28,0x05);   //自由落体阀值
    user_write_byte_extend(&iic_ctl_triaxial, ADXL345_ADDR, 0x29,0x14);   //自由落体时间

    user_write_byte_extend(&iic_ctl_triaxial, ADXL345_ADDR, 0x2A,0x00);   //抑制双击检测

    user_write_byte_extend(&iic_ctl_triaxial, ADXL345_ADDR, 0x2C,0x0A);   //标准默认速率
    user_write_byte_extend(&iic_ctl_triaxial, ADXL345_ADDR, 0x2D,0x08);   //测量不休眠

    user_write_byte_extend(&iic_ctl_triaxial, ADXL345_ADDR, 0x31,0x0B);   //测量范围,正负16g,13位模式
    user_write_byte_extend(&iic_ctl_triaxial, ADXL345_ADDR, 0x38,0xA0);   //流

    user_write_byte_extend(&iic_ctl_triaxial, ADXL345_ADDR, 0x2F,0xEF);   //使能中断引脚
    user_write_byte_extend(&iic_ctl_triaxial, ADXL345_ADDR, 0x2E,0x93);   //使能中断

在这里插入图片描述
重要关注的中断寄存器

在这里插入图片描述
详细的查看数据手册

实现功能

每次开启电源后
读取倾角数据
清空活动中断
等待一段时间比如1秒
根据上述寄存器配置
如果环境存在震动,大于设置的阀值
会触发活动中断-高电平
相应的0x30 寄存器位会为1
此时可知环境存在震动

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值