Позволяет определить положение и перемещение прибора в пространстве: углы крена, дифферента (тангажа) ориентируясь по вектору силы тяжести и скорости вращения. Измеряет температуру. При перемещении определяет линейное ускорение и угловую скорость по трем осям, что дает полную картину положения. Как работает модуль 3-х осевого гироскопа и акселерометра GY-521 MPU-6050 показано на видео.
Основа модуля – микросхема MPU-6050. Содержит два устройства акселерометр и гироскоп. Их данные проходят предварительную обработку и передаются по последовательному интерфейсу I2C в микроконтроллер. Модуль 3-х осевого гироскопа и акселерометра GY-521 MPU-6050 является электронным аналогом нашего вестибулярного аппарата. Благодаря вестибулярному аппарату или похожему органу живые существа чувствуют направление тяготения. Вестибулярный аппарат на подсознательном уровне позволяет нам держать равновесие. Одно из применений гироскопа и акселерометра – электрическая система удержания баланса сигвея как показано в видеофрагменте.
Благодаря отслеживанию вектора силы тяжести акселерометр может применяться как электронная альтернатива обычному строительному уровню. На основе акселерометра строят угломеры относительно тяготения земли – инклинометры. Они применяются для контроля за архитектурными сооружениями, при бурении скважин. Комплекс из гироскопа и акселерометра применяется для стабилизации объекта в требуемом положении при внешних воздействиях. Например, поддержание положения объектива при съемке из автомобиля, с борта катера или квадрокоптера. Эффективность применения гироскопа при съемке для стабилизации объектива по двум осям при качке иллюстрирует видео.
Теперь применяя гироскоп-акселерометр GY-521 можно отказаться от джойстика, рукояток и прочих механических устройств в стационарных пультах управления. Применение гироскопа-акселерометра для управления положением веб-камеры с помощью сервоприводов показано далее.
Интересно применить гироскоп и акселерометром для управления манипулятором. Работа модели такой системы на видео.
Наиболее интересное применение гироскопа и акселерометра – в движущихся полуавтоматических и автоматических системах. Прибор измеряет и сообщает микроконтроллеру о ускорении и ориентации. Динамические параметры подвижного объекта, которые измеряет модуль 3-х осевого гироскопа и акселерометра GY-521 MPU-6050: тангаж (нос вверх и вниз), рыскание (нос влево и вправо) и крен (по часовой стрелке или против часовой стрелки глядя из кабины объекта). Они в навигационной системе подаются в МК, который рассчитывает текущее положение. Полет квадрокоптера без такого модуля невозможен.
Характеристики
Питание напряжение 3,7 – 5,5 В ток до 10 мА гироскоп потребляет 3,6 мA, в режиме ожидания 5 мкА акселерометр потребляет 350 мкА. В режиме ожидания: 10 мкА для 1,25 Гц, 20 мкА для 5 Гц, 60 мкА для 20 Гц, 110 мкА для 40 Гц. Максимальная частота интерфейса I2C составляет 400 кГц Формат данных: углы Эйлера, кватернионы, матрица поворота или необработанные данные Диапазон гироскопа: ±250, ±500, ±1000, и ±2000 градусов в секунду Диапазон акселерометра: ±2, ±4, ±8 и ±16 g 16 бит вывода данных Резонансная частота 27 кГц Шум 0,005°/с/√Гц Расстояние между контактами 2,54 мм Отверстия под винт 3 мм Размеры 20 x 16 мм
Теория кратко
АКСЕЛЕРОМЕТР
Трехосевой акселерометр ”чувствует” проекции ускорения на оси X, Y и Z. Если прибор размещен строго горизонтально и не движется то проекции ускорения силы тяжести на оси X и Y равны нулю. Сила тяготения воспринимается только чувствительными элементами вертикальной оси Z. Время от времени в состоянии покоя производят проверку и калибровку акселерометра. Во время движения объект постоянно то ускоряется, то замедляется. Идеально равномерного движения не существует. Это и позволяет использовать акселерометр не только для определения положения объекта, но и для определения динамических параметров при движении. Акселерометр регистрирует сумму ускорения при движении и гравитацию. Если от всех элементов акселерометра по осям X, Y, Z поступают показания близкие к нулю, значит, двигатель выключен и объект находится в свободном падении – выпускаем парашют. Возрастание данных – парашют раскрылся, резкое возрастание данных – столкновение, есть посадка!
ГИРОСКОП
Трехосевой гироскоп – датчик поворота объекта, позволяющий вычислить углы поворотов по осям X, Y, Z благодаря определению угловых скоростей.
Roll (крен), Pitch (Тангаж) и Yaw (рыскание).
РАСПОЗНОВАНИЕ И ОБРАБОТКА ПАРАМЕТРОВ ДВИЖЕНИЯ
Предположим квадрокоптер при горизонтальном полете накренился. Акселерометр фиксирует изменение ускорение по осям. Теперь к ускорению движения прибавляется ускорение тяготения в другом порядке, не так как при полете без крена. В результате система управления сделает вывод о движении в сторону крена, хотя на самом деле происходит горизонтальное движение. Для правильной обработки параметров движения и верного распознавания динамических параметров применяют совместно акселерометр и гироскоп. При использовании гироскопа в рассмотренном случае он определит угол поворота и даст возможность правильно интерпретировать данные акселерометра. Использование гироскопа без акселерометра невозможно из-за особенностей математики гироскопа приводящих к накоплению погрешности. Специальная математика позволяет объединить обработку данных от обоих датчиков. Гироскопы и акселерометры широко применяются в авиации, ракетной, космической и военной технике. Например. Произошел захват цели прицелом танка во время движения. Перемещение по пересеченной местности вызывает мощные искажения угла подъема ствола орудия. Зафиксировать прицел на захваченной цели помогает акселерометр и гироскоп.
Микросхема MPU-6050
Напряжение питания 2,3 – 3,6 В. Номинальное 3,3 В. Микросхема MPU-6050 содержит запатентованный компанией InvenSense процессор обработки сигналов, вызванных движением Digital Motion Processor (DMP), способный обрабатывать алгоритмы MotionFusion. DMP может быть использован для сложных расчетов. Собственный процессор может делать расчеты, не отвлекая микроконтроллер и даже способен обрабатывать информацию от другого датчика, подключенного ко второй шине I2C. Специальная программа на языке команд DMP записывается в память каждый раз после подачи питания. Это занимает около секунды. Программа фильтрует показания акселерометра и гироскопа. Данные передаются в буфер FIFO. Некоторые рассуждения об этом здесь. Для точного отслеживания движений предусмотрена возможность записи в память MPU-6050 актуальных пределов измерений. Данные можно считывать из регистров хранения или буфера FIFO размером 1024 байт. Микросхема MPU-6050 может работать в режиме мастер на шине I2C для контактов XDA и XCL. Содержит АЦП 16 бит. Есть регистр под названием Who am I (как меня зовут) хранящий адрес модуля GY-521 на шине I2C. Значение в регистре 104 десятичное или 68 шестнадцатеричное. Есть выход для прерываний МК, который настраивается под интересующее событие. Микросхема MPU-6050 содержит более 100 регистров. Адрес микросхемы может быть двух значений (без бита чтения / записи) в зависимости от состояния вывода AD0 модуля 3-х осевого гироскопа и акселерометра GY-521 MPU-6050.
68 (шестнадцатиричное), если AD0 соединен с общим проводом. 69 (шестнадцатиричное), если AD0 соединен с потенциалом лог. 1.
Акселерометр микросхемы MPU-6050 использует пьезоэлектрический эффект. Представьте кубический ящик, имеющий внутри маленький шарик. Стенки этой коробки выполнены из пьезоэлектрических кристаллов. Когда вы наклоните коробку, шар будет двигаться в направлении наклона. Стена, с которой шар сталкивается, создает крошечные пьезоэлектрические токи. В зависимости от тока, получаемого от стен, определяется направление наклона и его величина. Гироскоп представляет собой колеблющуюся пьезоэлектрическую пластину. При повороте пластина искривляется и ее электрические параметры меняются. Это регистрирует микросхема. Подробнее на видео.
Питание модуля GY-521 поступает на вход стабилизатора напряжения Q2 микросхема MIC5205-3.3BM5 с выходным напряжением 3,3 В. На стабилизаторе происходит небольшое падение напряжения 0,3 – 0,4 В, поэтому напряжение питания модуля должно быть выше 3,3 В. Индикатор питания модуля 3-х осевого гироскопа и акселерометра GY-521 MPU-6050 – светодиод D1. Величина резисторов R4 и R5 может отличаться от указанных на схеме.
Назначение контактов
VCC – напряжение питания GND – общий провод SCL – тактовый сигнал I2C SDA – данные I2C XDA – данные шины I2C при работе в режиме мастера XCL – тактовый сигнал шины I2C при работе в режиме мастера AD0 – бит 0 адреса I2C INT – выход сигнала о готовности данных для использования как внешнего прерывания МК
Подключение модуля 3-х осевого гироскопа и акселерометра GY-521 MPU-6050 к Arduino UNO.
5 V Arduino – VCC
GND Arduino – GND
A4 Arduino – SDA
A5 Arduino – SCL
GND Arduino – AD0
В зависимости от программы – INT
Подводные камни, рифы и турбулентность
При изучении работы микросхемы MPU-6050 гироскопа следует помнить, что механические гироскопы стабилизируются в пространстве за счет своих физических свойств. Электронный гироскоп так работать не может. Он лишь измеряет скорость вращения. Каждый модуль GY-521 требует калибровки. Показания датчиков имеют некоторое смещение относительно нуля, что вносит погрешность в измерения. Нужно учесть это смещение для каждой оси гироскопа и каждой оси акселерометра, внести корректировку в программу. При производстве микросхем невозможно получить абсолютную точность угла между осями датчиков, поэтому угол между ними содержит погрешность. Также нельзя забывать о том, что данные от трех осей могут иметь разную пропорциональность. Наибольшая точность результатов математических преобразований для получения параметров движения будет получена при синхронном считывании данных акселерометра и гироскопа. При построении управляемой машины следует избегать в механизмах источников колебаний и их гармоник с частотой резонанса указанной в характеристиках. При первом ознакомлении с модулем проверяют его работу на шине данных I2C. Для этого используют программу I2C сканер. Внутреннее АЦП микросхемы очень чувствительно, его разрядность 16 бит. При такой чувствительности предъявляются повышенные требования к питанию модуля, несмотря на собственный стабилизатор. Здесь не подходит источник питания класса ”какой есть” на 5 В. Прежде всего надо разобраться с параметром используемого блока питания величина пульсаций или уровень шумов с помощью осциллографа. Величина шума в линии питания не должна превышать 50 мВ. Применение батарей в этих условия уместно, но это дорого. Установка конденсаторов не снизит шумы некачественного блока питания. Если блок питания шумит от него надо отказаться, заменить или собрать другой. В тоже время установка конденсаторов на линиях питания возле модуля GY-521 снизит влияние мощных электромагнитных помех. Рекомендуется провода питания перевить в витую пару. Нельзя использовать блок питания один и тот же для модуля и для питания двигателей. При калибровке модуль 3-х осевого гироскопа и акселерометра GY-521 MPU-6050 должен иметь собственный источник, отдельный от модуля МК и других потребителей. Если на этапе первого запуска еще можно смириться с повышенным шумом в питании, то на этапе калибровки это приведет к ошибкам, а о высокой точности измерений без качественного питания говорить не приходится.
Программирование на ардуино и математика
Один из способов использования модуля GY-521 – применение микроконтроллерного модуля Arduino. Программное обеспечение Arduino позволяет установить библиотеки для GY-521. Есть сложная библиотека I2Cdevlib для доступа к MPU-6050 и другим устройствам на шине I2C.
Она устанавливается в папку MPU6050. Использует аппаратный буфер микросхемы и возможности цифровой обработки параметров движения MPU-6050 для выполнения преобразования данных между различными системами координат и объединяет данные от нескольких датчиков. Еще одна полезная библиотека FreeIMU, ориентированная на инерциальный измерительный блок из нескольких датчиков и может выполнять сложную обработку данных. FreeIMU использует I2Cdevlib, но последняя версия I2Cdevlib в комплекте с FreeIMU вызывает конфликт версий. Перед использованием следует убедиться в правильном выборе версии I2Cdevlib. В конце этого раздела приведены ссылки на адаптированные программы. При работе программ будут получены примерно следующие числа, но их нужно преобразовать в значимые данные.
В начале программы должна происходить калибровка по первым 10 данным для получения постоянных погрешностей (смещений) от датчиков. Смещения вычитаем из необработанных значений датчика до преобразования данных в углы. Для вычисления ориентации акселерометром, мы опираемся на тот факт, что происходит постоянное гравитационное притяжение 1 g. Если нет дополнительных сил, действующих на акселерометр, то обнаруженная величина ускорения будет 1 g. Согласно описанию MPU-6050 с. 13 (Sensitivity Scale Factor), сырые данные акселерометра программой преобразуются в ускорение свободного падения g=9,8 м/с^2 путем деления на коэффициент 16384. При перемещении и вращении датчика, данные акселерометра сильно колеблются. Если они могут быть очищены от шумов, то акселерометр обеспечит точные результаты. Для вычисления ориентации, мы должны сначала инициализировать гироскоп с известным значением (возможно, от акселерометра), затем измерять угловую скорость ω через интервалы времени Δt. Тогда ω × Δt = изменение угла. Проблема с этим подходом заключается в том, что мы интегрируем. Многократное суммирование приращения ω × Δt приведет к увеличивающейся со временем ошибке. Это является причиной гироскопического дрейфа. Деление сырых данных гироскопа на 131 дает угловую скорость в градусах в секунду. 131 - коэффициент чувствительности гироскопа в заданном режиме 250 град/с. Поскольку у него АЦП 16 бит, то модуль максимального необработанного значения равен 32767. Теперь 32767 / 250 = 131 условных единиц на градус в секунду. То есть, если необработанное значение равно 131, то угловая скорость равна 1 градус в секунду. С помощью этих данных можно получить положение объекта. Для этого мгновенное значение угловой скорости умножим на промежуток времени между опросами датчика гироскопа. Например, разрешение 2000 градусов в секунду, время между опросами 0,1 с, значение мгновенной скорости 210, значит 210*0,1=21 – за это время произошел поворот на 21 градус. Далее каждое полученное значение нужно сложить с предыдущим. Как объяснено выше данные акселерометра и гироскопа склонны к систематическим ошибкам. Акселерометр обеспечивает получение точных данных в долгосрочной перспективе, но дает сильный шум при рассмотрении за короткий промежуток времени. Гироскоп обеспечивает получение точных данных о изменении ориентации за короткий промежуток времени, но при интеграции данных происходит дрейф. Решение этих проблем заключается в использовании данных акселерометра и гироскопа вместе таким образом, чтобы ошибки взаимно уничтожались. Стандартный способ объединения – применение фильтра Калмана, который является довольно сложной методикой. Есть более простая аппроксимация для объединения этих двух типов данных – комплементарный фильтр. Хорошо объяснено здесь и здесь. Вот формула комбинирования данных обоих датчиков:
Угол фильтра = α × (Угол от гироскопа) + (1 − α) × (Угол от акселерометра) α=τ/(τ + Δt) Угол от гироскопа = (Последний угол измеренный фильтром) + ω×Δt Δt = время выборки τ = постоянная времени превышающая интервалы между шумами Угол фильтра – отфильтрованный, результирующий угол наклона Рекомендуется время выборки около 0,04 с и постоянная времени около 1 с, что дает α≈0,96.
Величина угла наклона представляет собой сумму интегрированного значения гироскопа и мгновенного значения акселерометра. Главная задача комплементарного фильтра в том, чтобы ликвидировать дрейф нуля гироскопа и ошибки дискретного интегрирования. На каждом шаге интегрирования (шаге цикла управления машиной) корректируется интеграл угла наклона с помощью показаний акселерометра. Сила этой коррекции определяется коэффициентом фильтра α. Выбор коэффициента α зависит от величины дрейфа нуля гироскопа, от скорости накопления ошибок вычисления и от условий использования машины. Так, слишком малое значение α приведет к тому, что на результат работы фильтра будет влиять вибрация корпуса. Как правило, коэффициент комплементарного фильтра подбирается вручную для каждого случая.
Программное обеспечение модуля 3-х осевого гироскопа и акселерометра GY-521 MPU-6050 для ардуино: GY_521_send_serial ShowGY521Data
Англоязычная версия этого раздела, а продолжение разговора здесь.