ITG3205
Добавлено: Вт фев 01, 2022 12:22:24
А кто-нибудь может простыми словами рассказать об опыте использования акселерометров? Потому как мой первый подход к этому сенсору пока не увенчался успехом. Пока у меня цель получить направление, поэтому я считываю только ускорение по оси Z. Кристалл запрограммирован на выдачу показаний каждые 10мс, сэмплирование 1кГц и 188Гц LPF. Тактирование от генератора Z, а X и Y уложены в спячку.
Так вот проблема в том, что неподвижная плата мне выдаёт значение 35. Как я понял даташит, младший бит значит 14,375 градуса в секунду, т.е. 35 соответствует 503,125 градуса в секунду? и получается, что за 10мс плата уже повернулась на 5 градусов? Или я не понимаю как интерпретировать данные?

Так вот проблема в том, что неподвижная плата мне выдаёт значение 35. Как я понял даташит, младший бит значит 14,375 градуса в секунду, т.е. 35 соответствует 503,125 градуса в секунду? и получается, что за 10мс плата уже повернулась на 5 градусов? Или я не понимаю как интерпретировать данные?
Код: Выделить всё
int ITG_angle(unsigned int reset) {
static int direction = 0;
uint8_t z_acceleration[2];
int16_t angle_velocity = 0;
if (reset) direction = 0;
while (BITBAND_PERI(ITG_IRQ_PORT->IN, ITG_IRQ_PIN) == 1) {
i2c_rd_reg(ITG_ADDRESS, GYRO_ZOUT_H, z_acceleration, 2);
angle_velocity = z_acceleration[0] << 8 | z_acceleration[1];
direction += (angle_velocity * 14375) / 100;
}
return direction;
}