Акселерометр из Troyka IMU

Тема в разделе "Arduino & Shields", создана пользователем Mitrandir, 14 июл 2018.

  1. Mitrandir

    Mitrandir Гуру

    Попробовал пример из библиотеки 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);
      }
    Тройка лежит на столе ( боком правда)

    При этом акселерометр показывает дикие ускорения:
    Screenshot_15.jpg
    Как это побороть?
     
  2. Mitrandir

    Mitrandir Гуру

    осмелюсь предположить, что из-за крена тройки, это он g так раскладывает по осям?

    Но тоже странноЮ ведь сенсор не падает, так что ускорения нет...
     
  3. Mitrandir

    Mitrandir Гуру

    Высоту он мне тоже странную показывает. 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
     
  4. Daniil

    Daniil Гуру

    Может, высота над уровнем моря?
    Как я понял, это один модуль, который выдает 3 ускорения, температуру, давление и высоту. Высоту, давление и температуру он показывает правильно, а вот ускорение косячит. Значит подключение правильно.
    В библиотеке адрес зашит, а на плате есть возможность его менять, может, вам достался экземпляр с другим адресом?
    Или плохая пайка, или в библиотеке косяк с датчиком ускорения.
     
    Последнее редактирование: 14 июл 2018
    Mitrandir нравится это.
  5. Mitrandir

    Mitrandir Гуру

    допустим, с вики по Питеру

    берем по максимуму - 22.
    второй этаж высота 30 метров?
     
  6. Daniil

    Daniil Гуру

    Карта высот.
    + Неизвестно кто калибровал барометр
    Высота расчитывается из давления. Есть возможность проверить давление?
     
  7. Mitrandir

    Mitrandir Гуру

    поствил на телефон высотомер, показывает 31 метр, побегал по лестнице, вроде адекватно реагирует.
     
  8. Mitrandir

    Mitrandir Гуру

    спс за сайт, говорит 17 метров
     
  9. Daniil

    Daniil Гуру

    Если поднять модуль на 1 метр, показания изменятся на 1 метр? Для дома, можно вычесть "лишнюю" высоту
     
  10. Mitrandir

    Mitrandir Гуру

    Реакция есть. но значения прыгают +/- 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;

    получаю такую картину покоя
     
  11. Daniil

    Daniil Гуру

    любопытно, а если "уронить" он выдаст 1g?
     
  12. Mitrandir

    Mitrandir Гуру

    Провода коротковатые, а саму Дуню ронять стрёмно, проводные соединения разлетятся
     
  13. Mitrandir

    Mitrandir Гуру

    Пример с самолёт ком в процессинге адекватно работает
     
  14. Daniil

    Daniil Гуру

    ммм...там перед передачей данных используется:
     
  15. Mitrandir

    Mitrandir Гуру

    Ну так фильтр маджвика нужен чтоб получитьориентацию в пространстве(углы эйлера) по совокупности датчиков.

    Не очень понятно почему аксельерометр выдает 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


    придется фильтры ставить.. усреднять
     
  16. Mitrandir

    Mitrandir Гуру

    Почитав даташит на LIS331DLH
    и подшаманив с регистрами, удалось стабилизировать акселерометр, теперь ое выдает от 0 до 3 в покое.
    осталось понять в каких единицах измерения
     
    Daniil нравится это.
  17. Mitrandir

    Mitrandir Гуру

    Хочу сделать инерциальная навигационную систему навигации, а с такими датчиками... Которые возвращают не пойми в какой системе счисления фиг что выйдет
     
  18. Mitrandir

    Mitrandir Гуру

    От оно как, если модуль расположить параллельно земле, то он будет по всем осям показывать 0 по Z показывает 9.8.

    т.е. он в покое почему-то раскладывает вектор притяжения