最近在调一个ADXL345模块,用它来测试振动值。经过之前的摸索,这个芯片测得振动值倒还大致对的上。但是发现它静止的时候,还是有振动值在跳。小的0.1,0.2这样的跳动,大的就跳到1点几了。
经过不断的断点跟踪,我发现振动值大的时候,采集到的数据里面都会有几个奇异值。比如静止不动时,正常的数据一般都是250左右,但是偶尔会冒出来一两个0,或者是500这样的值。这一两个奇异值在一个数组里面,再经过FFT变换后,就会在很多个频率上都显示有个小的振动值。
经过一番排查,最终发现,把芯片输出数据的速率降低可以解决这个问题。我原来是每秒1600个数据,降到800个数据后,就没有读到奇异值。这样静止不动的时候,芯片测到的振动值就是0了。