您实际上将什么值存储到“寄存器0x31—DATA_FORMAT”中?
我将假设您没有在该寄存器中存储任何内容,因此它仍处于其复位值00。换句话说,在收集数据时(来自ADXL345数据表的表16和第17页):
- 寄存器0x31—DATA_FORMAT == 00。
- FULL_RES ==0。因此,器件处于10位模式,并且范围位确定最大g范围和比例因子。
- 对齐位==0。因此右对齐模式带有符号扩展。
- 范围位==00。因此+-2g范围。
我要做的第一件事是恢复从加速度计读取的原始16位值。(即,如果我不小心丢掉了原始数据,剩下的只是以“ g”为单位的数字,这些数字是通过减去一些偏移量并乘以一些不正确的比例因子而得出的,我会将收集到的数据复制到电子表格并除以相同(不正确)的比例因子,然后添加该偏移量以尝试恢复接近原始值的内容)。
然后,我将对数据进行绘图,看看它看起来更像是“饱和”,“线性”或“翻转”(如下所述)。
数据表令人迷惑不解,当传感器经历大于2 g的加速度时会发生什么。
切线
我是否告诉过您,当技术作家坚持用被动语态写作时,有多少让我感到烦恼?当作者在您引用的句子中使用被动语态时,
“除±16 g范围外,所有数据都必须剪裁以避免翻转。” (第17页)
我无法确定究竟应该由谁来执行此剪辑。
许多人建议使用主动声音。当我遵循这些建议时,我的文字通常会更清楚地说明谁在做什么。当我编写更容易理解的东西而不是使用人们被骗去认为听起来“更专业”或“更学术”的风格时,这会更好吗?
自动裁剪
我最好的猜测是加速度计会自动进行削波。
饱和度:如果您看到加速度通过合理的值上升,然后神秘地停留在平稳状态,饱和度达到+ 2g或接近+ 2g,则加速度计“有帮助”地为您修剪了数据。裁剪后,“ top”值不再表示“加速度非常接近+ 2g”,而是现在表示“加速度至少2g,甚至可能更多,更多-无法分辨”。
因为它处于10位右对齐模式,所以当我将这16位值解释为普通的16位带符号整数时,我希望看到的值范围从
- 0x01FF = +511,表示大于1.992 g。可能更多。
- 0x01FE = +510,表示510/256 g〜= 1.992 g
- 0x01FD = +509,表示510/256 g〜= 1.988 g
- ...
- 0x0001 = +1,表示1/256 g = 0.0039 g
- 0x0000 = 0,表示0 g
- 0xFFFF = -1,表示-1/256 g = 0.0039
- ...
- 0xFE02 = -510,表示-510/256 = -1.992 g
- 0xFE01 = -511,表示-511/256 = -1.996 g
- 0xFE00 = -512,表示负数-1.996 g。可能更远,更负面。
(是的,我知道此传感器不需要4位小数的精度)。(我已经看到某些设备在其他点达到饱和,例如-511或-510。我通常可以查看数据并找出实际的饱和点)。
您可以从此裁剪的数据集中恢复一些有用的数据。例如,您可以使用它来测量加速度至少为1.5 g的毫秒数。,当您在这种数据集中看到平稳状态时,就无法测量最大加速度或总脉冲-您所能做的就是说:“嗯,我们知道最大加速度至少为 2g,甚至可能更大”,然后计算出“好吧,我们计算出总冲量至少为(牛顿*秒)*”。
备择方案
应该可以从数据中确定加速度计是否进行削波。(我已经根据上升的角度描述了“饱和”,“线性”和“翻转”-使用一些数据集,改为观察下降可能更清楚)。
线性的:如果您看到加速度通过合理的值逐渐增加,然后继续增加至更高的值(大于512的值,或者大于-512的负值),那么您就走了-加速度计实际上没有进行任何削波,并且您拥有整个范围内的有效数据。
翻滚:如果您看到加速度通过合理的值增加,并且在达到+2 g之前,它会立即跳至-2 g附近的非实际值,然后继续增加-可能会增加从零开始,然后再次接近+ 2g,然后再次跳回-2 g附近-那么您将获得翻转环绕。如果幸运的话,这些值的变化非常平滑,可以检测到每个翻转并“解开”这些值以恢复真正的g力。
ps:随时编辑“ 断路:火箭计算机”。