Попробовал пример из библиотеки TroykaIMU Код (C++): // библиотека для работы с модулями IMU #include <TroykaIMU.h> // создаём объект для работы с акселерометром Accelerometer accel(ACCEL_ADDRESS_V1); // если напаяна перемычка, устройство доступно по новому адресу // Accelerometer accel(ACCEL_ADDRESS_V2); void setup() { // открываем последовательный порт Serial.begin(115200); // выводим сообщение о начале инициализации Serial.println("Accelerometer init..."); // инициализация акселерометра accel.begin(); // устанавливаем чувствительность акселерометра // 2g — по умолчанию, 4g, 8g // accel.setRange(RANGE_2G); // выводим сообщение об удачной инициализации Serial.println("Initialization completed"); } void loop() { // вывод направления и величины ускорения в м/с² по оси X Serial.print(accel.readAX()); Serial.print("\t\t"); // вывод направления и величины ускорения в м/с² по оси Y Serial.print(accel.readAY()); Serial.print("\t\t"); // вывод направления и величины ускорения в м/с² по оси Z Serial.print(accel.readAZ()); Serial.print("\t\t"); Serial.println(""); delay(1000); } Тройка лежит на столе ( боком правда) При этом акселерометр показывает дикие ускорения: Как это побороть?
осмелюсь предположить, что из-за крена тройки, это он g так раскладывает по осям? Но тоже странноЮ ведь сенсор не падает, так что ускорения нет...
Высоту он мне тоже странную показывает. 50 метров когда я на втором этаже p: 1007.10 mbar h: 51.29 m t: 27.93 C p: 1007.02 mbar h: 51.96 m t: 27.91 C p: 1007.04 mbar h: 51.84 m t: 27.91 C p: 1007.08 mbar h: 51.50 m t: 27.94 C p: 1007.06 mbar h: 51.64 m t: 27.91 C p: 1007.00 mbar h: 52.12 m t: 27.89 C
Может, высота над уровнем моря? Как я понял, это один модуль, который выдает 3 ускорения, температуру, давление и высоту. Высоту, давление и температуру он показывает правильно, а вот ускорение косячит. Значит подключение правильно. В библиотеке адрес зашит, а на плате есть возможность его менять, может, вам достался экземпляр с другим адресом? Или плохая пайка, или в библиотеке косяк с датчиком ускорения.
Карта высот. + Неизвестно кто калибровал барометр Высота расчитывается из давления. Есть возможность проверить давление?
Если поднять модуль на 1 метр, показания изменятся на 1 метр? Для дома, можно вычесть "лишнюю" высоту
Реакция есть. но значения прыгают +/- 0.8м В паринципе выстомер мне от него не особо нужен.. больше интересует акселерометр/гиро. Попробовал так: Код (C++): static float x, y, z; static float x1, y1, z1; accel.readAXYZ(&x, &y, &z); Serial.print((x1-x)); Serial.print("\t\t"); Serial.print((y1-y)); Serial.print("\t\t"); Serial.print((z1-z)); Serial.println(""); delay(1000); z1 =z; x1=x; y1=y; получаю такую картину покоя
Ну так фильтр маджвика нужен чтоб получитьориентацию в пространстве(углы эйлера) по совокупности датчиков. Не очень понятно почему аксельерометр выдает 6 единиц в покое компас тоже шумит. 17.16 Degrees min:17.16 max:20.41 21.34 Degrees min:17.16 max:21.34 24.98 Degrees min:17.16 max:24.98 25.41 Degrees min:17.16 max:25.41 24.02 Degrees min:17.16 max:25.41 29.07 Degrees min:17.16 max:29.07 22.78 Degrees min:17.16 max:29.07 24.73 Degrees min:17.16 max:29.07 26.59 Degrees min:17.16 max:29.07 придется фильтры ставить.. усреднять
Почитав даташит на LIS331DLH и подшаманив с регистрами, удалось стабилизировать акселерометр, теперь ое выдает от 0 до 3 в покое. осталось понять в каких единицах измерения
Хочу сделать инерциальная навигационную систему навигации, а с такими датчиками... Которые возвращают не пойми в какой системе счисления фиг что выйдет
От оно как, если модуль расположить параллельно земле, то он будет по всем осям показывать 0 по Z показывает 9.8. т.е. он в покое почему-то раскладывает вектор притяжения