在测试设置中,我将1-4个ADXL355三轴加速度计(https://www.analog.com/media/en/technical-documentation/data-sheets/adxl354_355.pdf)与Arduino MKR WIFI1010一起使用。理想情况下,无论是使用TCA9548A I2C多路复用器使用1个传感器还是使用4个传感器进行测试,我都希望分别采样接近500 Hz。目前,我正在使用1个传感器收集大约200 Hz,或者使用所有4个传感器收集大约50 Hz(此设置使用了不同的代码)。 ADXL355的默认值为500 Hz,这使我无法以该速率采样更加奇怪。
我试图将波特率从9600提高到128000。我试图使用Wire.setClock()将I2C速度最大化到传感器和Arduino可以运行的最大3.4MHz。我也尝试过一次使用屏蔽将其保存到micro SD,尽管我的大部分测试都是通过串行监视器进行的。我更改了Wire.write()来控制输出速率,但是即使将其设置为4kHz设置(Wire.write(0x00)),我仍然以〜200Hz采样。
#include <Wire.h>
#define ADXL 0x1D //Datasheet pages 4 and 7 have info that will be necessary for future development.
void setup() {
Wire.begin(); // initiate the accelerometer
Wire.setClock(3400000L);
Serial.begin(128000); // initiate the serial monitor
delay(100);
Wire.beginTransmission(ADXL); //set STBY bit 0 to low / turn on MEASURE mode
Wire.write(0x2D);
Wire.write(0x00);
Wire.endTransmission();
delay(100);
Wire.beginTransmission(ADXL); //set RANGE to +/- 2g pg. 37 of data sheet
Wire.write(0x2C);
Wire.write(0x01);
Wire.endTransmission();
delay(100);
Wire.beginTransmission(ADXL); //set data rate to 4000HZ page 37
Wire.write(0x28);
Wire.write(0x00);
Wire.endTransmission();
delay(100);
}
我期望获得500Hz(或现在的代码为4000Hz),但获得200Hz,并且更改设置的数据速率似乎不会影响结果。任何增加我的样本数据速率的帮助将不胜感激!谢谢!