Razor AHRS [20180306]: Самодельный инерционный трекер

Что нового в версии [20180306]:

Сначала кратко об отличиях от предыдущей версии [20170701]:

  • Упрощен выбор варианта сенсора в скетче.

  • Поддержка нескольких новых сенсоров.

  • Значительно улучшена синхронизация.

  • Запоминание центровки на монитор в Ардуино.

  • Многоязычный интерфейс.

  • Добавлены команды для I2C сканнера.

  • Добавлены команды для чтения температуры и давления.

Скетч для Ардуино: Razor_AHRS_[20180306].rar

Программа для калибровки: AHRS_Razor_AllIn1_[20180306].rar

Теперь подробнее:

Выбор варианта сенсора в скетче

Скетч следует загружать в Arduino IDE версии 1.8.5 или 1.8.3. Совместимость с версией 1.6.7 и с более старыми не гарантируется. Помните, что в пути к папке "Razor_AHRS" не должно быть русских букв.

После открытия скетча в Arduino IDE следует перейти на страницу файла "Menu.h".

Названия сенсоров с кратким описанием читайте в таблице в строках 3...38. Укажите в 39й строке номер вашего варианта сенсора, то есть измените двойку на номер Вашего варианта (1…10):

#define SensorVariant 2

Если вы подключили к Ардуино Bluetooth модуль, замените в строке 48 значение 0 на 1:

#define OUTPUT__HAS_RN_BLUETOOTH 0

#define OUTPUT__HAS_RN_BLUETOOTH 1

Никаких других изменений в скетче делать не нужно. Теперь нужно скомпилировать скетч и загрузить прошивку в Ардуино, кнопками [Ctrl+U].

В программе калибровки AHRS_Razor_All_In_1 [20180306] прошитый вариант сенсора распознается автоматически.

Поддержка нескольких новых сенсоров.

Для поддержки нескольких сенсоров и для возможности добавления новых сенсоров в скетч внесены заметные изменения. В зависимости от выбора варианта сенсора в файле "Menu.h" подключаются файлы модулей сенсоров с расширением ".h". Каждый из этих файлов, в свою очередь, подключает один или несколько файлов чипов сенсоров с расширением ".cpp".

Все некалиброванные данные сенсоров теперь унифицированы и выдают значения в определенном масштабе:

  • Гироскоп - в градусах в секунду,

  • Акселерометр - в единицах гравитации g.

  • Магнетометр - в микроТесла.

В средних широтах магнитная индукция поля Земли около 50 микроТесла, по данным Википедии: https://ru.wikipedia.org/wiki/Тесла_(единица_измерения)

После калибровки Магнетометр выдает нормированные значения, т.е. длина его вектора близка к единице.

Полный список всех вариантов поддерживаемых на данный момент модулей сенсоров:

#define SensorVariant 2

http://www.thaieasyelec.com/downloads/ESEN237/GY85_USG.pdf

Модуль GY-85 с магнетометром HMC5883L. Хорошо работает («классический» вариант).


#define SensorVariant 6

http://www.thaieasyelec.com/downloads/ESEN247/GY521_USG.pdf

Модуль GY-521. В этом модуле нет магнетометра. Поэтому неизбежен дрейф по Yaw, зависящий от температуры. Не рекомендуется для использования, только чтобы попробовать. Но если к нему добавить модуль магнетометра GY271, то все в корне меняется в лучшую сторону, смотрите вариант 7:


#define SensorVariant 7

http://www.thaieasyelec.com/downloads/ESEN247/GY521_USG.pdf

http://tinkbox.ph/sites/tinkbox.ph/files/downloads/GY_271_ELECTRONIC_COMPASS.pdf

Модуль GY-521, к которому с помошью 4х контактной гребенки подпаян модуль GY-271. Внимание! Пятый контакт DRDY модуля GY-271 никуда не подключен. Связка из двух модулей работает прекрасно.


#define SensorVariant 8

https://yandex.ru/images/search?text=gy-9250&lr=51

Модуль GY-9250 (MPU9250 = MPU6500 + AK8963) Хорошо работает, очень доступный по цене вариант.


#define SensorVariant 9

http://www.thaieasyelec.com/downloads/ESEN237/GY85_USG.pdf


Модуль GY-85 с новым магнитометром QMC5883 вместо HMC5883L.

Хорошо работает! Может быть, магнитометр QMC5883 даже лучше, чем HMC5883L. Менее шумящий.

(Спасибо за помощь в тестировании пользователю Charas04 aka Chaban.)


#define SensorVariant 10

https://yandex.ru/images/search?text=gy-91&stype=image&lr=51&source=wiz

Модуль GY-91 (MPU9250, BMP280)

Хорошо работает. Этот модуль аналогичен варианту 8, но еще у него есть барометр, что позволяет измерять атмосферное давление и температуру.


Варианты 1, 3, 4, 5 не протестированы из-за отсутствия у меня этих модулей и поэтому не могу рекомендовать их использовать. Они отличаются от варианта 2 взаимной ориентацией Гироскопа, Акселерометра и Магнетометра. Оставлены, как историческое наследие:

https://www.sparkfun.com/products/retired/10125

https://www.sparkfun.com/products/retired/10183

https://www.sparkfun.com/products/retired/10321

https://www.sparkfun.com/products/retired/10724



Модуль сенсора соединен с Ардуино так:

У Arduino Nano использованы контакты: "5V", "GND", "A5 (SCL)", "A4 (SDA)".

У Arduino Pro Micro использованы контакты: "VCC", "GND", "3 (SCL)", "2 (SDA)".

Контакт питания Ардуино "5V" или "VCC" следует подключить к контакту "VCC" или "VCC_IN" вашего сенсора. Только не следует подавать 5 вольт на 3х вольтовый вход GY-85 и GY-91 "3V3" или "3.3V". Сенсор этого может не пережить!

Остальные три контакта Arduino соединяются с одноименными контактами сенсора. Соединение можно делать 4х-проводным кабелем длиной до 2х метров.


Значительно улучшена синхронизация.

Был переработан скетч и программа калибровки. Изменен алгоритм синхронизации и поиска Razor AHRS. Теперь обеспечивается устойчивая работа с Arduino Nano и Arduino Pro Micro. Синхронизация не срывается при переключении режимов, так как в протокол обмена включен байт идентификатора режима.

Программа калибровки несовместима с предыдушими версиями скетча.


Запоминание центровки на монитор в Ардуино.

В предыдущей версии при нажатии в OpenTrack кнопки [Start] приходилось держать голову, неподвижно глядя в центр монитора. Это довольно неудобно.

В этой версии можно один раз и навсегда отцентрировать Razor AHRS на центр монитора и запомнить это направление в EEPROM Ардуино. Это удобно!

Для этого:

  • В режиме [OpenTrack] выберите метод цетровки в комбобоксе [Center YPR]: Y, YP или YPR. [1]

  • Поверните голову в направлении на центр монитора и нажмите кнопку [FT center]. [2]

  • Проверьте правильность центровки поворачивая голову во всех направлениях и возвращая ее в центр.

  • Сохраните центровку в EEPROM кнопкой [Save center]. [3]

Теперь Ардуино будет помнить направление на монитор и при следующих подключениях к компьютеру.


Чтобы центровка не сбивалась в OpenTrack, команду инициализации в OpenTrack следует сократить с

#of#o1#Z1#oz

до:

#of#o1

Эта команда переведет Razor AHRS в режим работы с OpenTrack и задаст непрерывный вывод данных. Даже и эту команду можно не вписывать, так как Ардуино, при подключении, находится именно в этом режиме!


Многоязычный интерфейс.

Перед нажатием кнопки [Connect] внизу справа видно кнопку переключателя языка интерфейса с флагом страны. Нажмите на флаг и сразу увидите результат.

Пока доступны русский и английский языки. Легко можно добавить другие.


Добавлены команды для I2C сканнера.

Поддерживается утилита Razor_I2C_scanner. Это может быть полезным при решении проблем с работой сенсора:

Утилита Razor I2C scanner


Добавлены команды для чтения температуры и давления.

Описание команд и утилиты для чтения температуры и давления здесь: Утилита RazorClimate

В остальном калибровка и настройка проводится так же, как и для предыдущей версии [20170701]: AHRS_Razor_AllIn1_software



На этом все. Удачи!

Нет, это еще не всё! Здесь продолжение:

Razor AHRS 5DOF [20180715]: Самодельный инерционный 5DOF трекер


Ссылки:

Скетч для Ардуино: Razor_AHRS_[20180306].rar

Дополнение для Razor AHRS [20180306]: SensorVariant 11

Дополнение для Razor AHRS [20180306]: SensorVariant 12

Программа для калибровки: AHRS_Razor_AllIn1_[20180306].rar

Методика калибровки (версия [20170701])

download...