首页 > 解决方案 > ADXL345 传感器的抽头检测数据转换

问题描述

我正在使用数据表以及其他我能够理解 TAP 阈值设置的库来连接ADXL345传感器。

我需要在示例代码中确认:

// Set values for what is considered a TAP and what is a DOUBLE TAP (0-
 255)
adxl.setTapThreshold(50);           // 62.5 mg per increment
adxl.setTapDuration(15);            // 625 μs per increment
adxl.setDoubleTapLatency(80);       // 1.25 ms per increment
adxl.setDoubleTapWindow(200);       // 1.25 ms per increment

其中根据数据表中提到的比例因子提到的用户设置值,我在这里面临疑问,需要清除它

  1. Tap解决方案提到的值是十进制还是十六进制值?

  2. 需要知道用于创建设置阈值的转换公式。

作为 ADXL345 传感器,我使用的最大分辨率为 13 位,因此我想将值设置为 13 位

任何有关此的建议对我在 ADXL345 传感器与 Arduino 接口上的工作都非常有帮助

标签: arduinohexarduino-ideadcassembly-resolution

解决方案


这些值是十进制值 - 您可以在评论中看到它们与实际物理值的关系:

adxl.setTapThreshold(50);           // 62.5 mg per increment -> 62.5mg * 50 = 3.125g
adxl.setTapDuration(15);            // 625 μs per increment -> 625us * 15 = 9.375ms
adxl.setDoubleTapLatency(80);       // 1.25 ms per increment -> 1.25ms * 80 = 100ms
adxl.setDoubleTapWindow(200);       // 1.25 ms per increment -> 1.25ms * 200 = 250ms

因此,要计算出阈值 Xg 所需的值,请使用公式

v = X / 62.5mg = X / 0.0625

例如,对于 5g 的阈值:

adxl.setTapThreshold(80); // Because 5 / 0.0625 = 80

推荐阅读