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. Это может быть полезным при решении проблем с работой сенсора:
Добавлены команды для чтения температуры и давления.
Описание команд и утилиты для чтения температуры и давления здесь: Утилита 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])