Скорость передачи данных ADXL345, похоже, больше зависит от скорости передачи данных, чем от фактической скорости передачи данных, которую я установил.
У меня есть Arduino UNO, подключенный к ADXL345. Проблема в том, что мне нужно собирать данные с частотой не менее 50 Гц. ADXL345, согласно его техническому описанию, может работать на частоте до 3200 Гц без каких-либо проблем. Я использую библиотеку Adafruit с интерфейсом I2C, но акселерометр не поднимается выше 10-12 Гц, как сообщает функция getDataRate()
библиотеки Adafruit.
Я пытаюсь установить скорость передачи данных следующим образом:
accel.setDataRate(ADXL345_DATARATE_100_HZ);
Странно, что скорость передачи данных больше зависит от увеличения скорости передачи данных в начале моей функции настройки. Если я устанавливаю ее на 38400, я получаю около 90-92 показаний в секунду. Я настроил свой код таким образом, что каждое измерение с акселерометра записывается с временной меткой до секунд. Это снимок выходных данных последовательного монитора.
Data Rate: 9 Hz
------------------------------------
Sensor: ADXL345
Driver Ver: 1
Unique ID: 12345
Max Value: -156.91 m/s^2
Min Value: 156.91 m/s^2
Resolution: 0.04 m/s^2
------------------------------------
Range: +/- 8 g
84.00,18:40:4,15/7/2018,0.59,9.14,2.82
85.00,18:40:4,15/7/2018,0.59,9.14,2.86
86.00,18:40:4,15/7/2018,0.63,9.10,2.86
87.00,18:40:4,15/7/2018,0.55,9.10,2.82
88.00,18:40:4,15/7/2018,0.55,9.10,2.82
89.00,18:40:4,15/7/2018,0.59,9.10,2.82
90.00,18:40:4,15/7/2018,0.59,9.10,2.82
91.00,18:40:4,15/7/2018,0.55,9.10,2.86
92.00,18:40:4,15/7/2018,0.55,9.10,2.86
93.00,18:40:4,15/7/2018,0.63,9.10,2.90
94.00,18:40:4,15/7/2018,0.63,9.10,2.90
95.00,18:40:4,15/7/2018,0.63,9.06,2.82
96.00,18:40:4,15/7/2018,0.63,9.06,2.82
97.00,18:40:4,15/7/2018,0.59,9.06,2.82
98.00,18:40:4,15/7/2018,0.59,9.06,2.82
99.00,18:40:4,15/7/2018,0.59,9.10,2.82
Это проблема с кодом или adxl345?
@m.umar, 👍0
1 ответ
Лучший ответ:
Вы ведь знаете, что отправка данных через последовательный порт занимает время, не так ли?
Вы отправляете 41 байт за одно чтение. Последовательный порт имеет буфер на 64 байта. Ко второму чтению буфер заполняется, и вся печать блокируется, пока в буфере не появится место.
При 38400 бод это отправка 3840 байт в секунду. При 41 байте на чтение это 93,66 чтения в секунду (не включая время, необходимое для выполнения фактического чтения), которые вы можете втиснуть в последовательный порт.
Либо работайте на более высокой скорости, либо уменьшите объем данных, отправляемых за одно чтение, либо сделайте и то, и другое.
- Можно ли измерить скорость акселерометром? Насколько точно?
- OVF в последовательном мониторе вместо данных
- Снять гравитацию с акселерометра MPU-6050
- Обнаружение движущегося объекта, не являющегося человеком
- Использование MPU-6050 без I2C
- Акселерометр ADXL345 не работает
- Изменение скорости передачи данных не работает
- Как получить и интерпретировать данные цифрового акселерометра?