Оглавление:

Измерение угла с помощью гироскопа, акселерометра и Arduino: 5 шагов
Измерение угла с помощью гироскопа, акселерометра и Arduino: 5 шагов

Видео: Измерение угла с помощью гироскопа, акселерометра и Arduino: 5 шагов

Видео: Измерение угла с помощью гироскопа, акселерометра и Arduino: 5 шагов
Видео: Гироскоп-Акселерометр MPU-6050. Первое знакомство 2024, Ноябрь
Anonim
Измерение угла с помощью гироскопа, акселерометра и Arduino
Измерение угла с помощью гироскопа, акселерометра и Arduino

Устройство является грубым прототипом того, что в конечном итоге станет самобалансирующимся роботом, это вторая часть дырочного устройства (считайте показания акселерометра и управляйте двигателем для самобалансировки). Первую часть с гироскопом можно найти здесь. В этой инструкции мы будем измерять угол с помощью гироскопа и акселерометра, а также использовать технику объединения обоих датчиков, чтобы получить плавный сигнал. Этот метод называется «дополнительный фильтр».

Шаг 1. Что нам понадобится:

Что нам понадобится
Что нам понадобится
Что нам понадобится
Что нам понадобится
Что нам понадобится
Что нам понадобится
Что нам понадобится
Что нам понадобится

Некоторая часть может быть заменена, и необходимо внести некоторые изменения в код, чтобы он соответствовал вашему оборудованию. В этом проекте мы будем использовать: - Макетную плату - Микроконтроллер, я использовал Arduinoboard - Провод - Перемычки - Гироскоп XV-8100 - Nunchuck Wii (для акселерометра) - Адаптер Nunchuck Wii для Arduino

Шаг 2. Сборка…

Строительство…
Строительство…
Строительство…
Строительство…
Строительство…
Строительство…

Схема состоит из гироскопа, подключенного напрямую к порту 0 на вашем Arduino, и нунчака, подключенного к порту I2C. Сборка гироскопа: 1. - подключить гироскоп к макету 2. - Все провода: - Вывод Vo от гироскопа, подключенный к аналоговому порту 0 на Arduino (Светло-оранжевый провод) - Вывод G от гироскопа, подключенный к земле (Белый провод) - Вывод V + от гироскопа, подключенный к Vdd (3,3 В) (Оранжевый провод) Сборка акселерометр: 1. - подключите адаптер к нунчаку2. - подключите нунчак к ардуино с помощью адаптера 3. - разместить датчик ускорения как на фото выше

Шаг 3. Дополнительная информация, прежде чем мы продолжим

Некоторая дополнительная информация, прежде чем мы продолжим
Некоторая дополнительная информация, прежде чем мы продолжим
Некоторая дополнительная информация, прежде чем мы продолжим
Некоторая дополнительная информация, прежде чем мы продолжим
Некоторая дополнительная информация, прежде чем мы продолжим
Некоторая дополнительная информация, прежде чем мы продолжим

С обоих датчиков мы можем измерить угол, но используя два разных метода. Чтобы измерить угол с помощью гироскопа, мы должны интегрировать сигнал. Но почему мы должны это делать? Поскольку гироскоп дает нам угловую скорость, простой способ получить угол - это умножить угловую скорость на время [угол = угол + w * dt]. Чтобы измерить угол с помощью акселерометра, мы должны почувствовать силу тяжести в каждом ось акселерометра, что это означает, проекция ускорения свободного падения на каждое направление датчика дают нам представление об угле. [angle_accel = arctg (Ay / sqrt (Ax ^ 2 + Az ^ 2))] Так почему мы будем использовать два датчика вместо одного? Чтобы воспользоваться преимуществами обоих свойств датчика. Если вы посмотрите на график, непрерывно увеличивающиеся данные гироскопа, это называется дрейфом, и данные акселерометра сильно меняются за короткое время. А как объединить оба сигнала? Мы будем использовать метод, называемый дополнительным фильтром. Я не знаю точной теории, лежащей в основе этого, но она отлично работает. В Интернете есть некоторая информация, просто погуглите, если вам нужна дополнительная информация. Эта ссылка содержит много информации и может быть полезной. Filtered_angle = HPF * (filter_angle + w * dt) + LPF * (angle_accel); где HPF + LPF = 1 Значения HPF и LPF можно найти по этой ссылке в файле filter.pdf. Спасибо вам, ребята из "DIY Segway". Просто для целей тестирования мы установим эти значения следующим образом: HPF = 0,98 и LPF = 0,02.

Шаг 4: Код:

Код представляет собой адаптацию кода, который я использовал в другом проекте. Вероятно, есть какие-то неиспользуемые переменные. Я использовал библиотеку для чтения данных нунчака с https://todbot.com/blog/. Спасибо, Тод Э. Курт. Комментарии к коду на португальском языке, как только у меня появится свободное время, я переведу его. Вывод кода через последовательную строку некоторых чисел с таким шаблоном: dt: w: teta: pitch: filter_teta $ time: angular_velocity: gyro_angle: Accel_angle: filter_angle $ Таким образом, вы можете сохранить эти значения на последовательном терминале и построить график или использовать угол для других вещей. Если вам нужно какое-либо объяснение кода, вы можете спросить. застежка-молния. Просто разархивируйте, откройте и загрузите его на свой Arduino.

Шаг 5: Тестирование и заключение

Тестирование и заключение
Тестирование и заключение
Тестирование и заключение
Тестирование и заключение

Чтобы протестировать систему, я сохранил данные с помощью программы под названием Termite, затем импортировал эти данные в Excel и построил график, чтобы увидеть, насколько хорош мой фильтр. Результаты потрясающие. Конечно, вы можете использовать сигнал для управления двигателем или для других вещей. Любые комментарии, любые сомнения, любая недостающая информация, просто скажите мне, и я исправлю это. Пожалуйста, если вам это нравится, оцените. Спасибо всем.

Рекомендуемые: