Оглавление:
- Шаг 1. Что нам понадобится:
- Шаг 2. Сборка…
- Шаг 3. Дополнительная информация, прежде чем мы продолжим
- Шаг 4: Код:
- Шаг 5: Тестирование и заключение
Видео: Измерение угла с помощью гироскопа, акселерометра и Arduino: 5 шагов
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:55
Устройство является грубым прототипом того, что в конечном итоге станет самобалансирующимся роботом, это вторая часть дырочного устройства (считайте показания акселерометра и управляйте двигателем для самобалансировки). Первую часть с гироскопом можно найти здесь. В этой инструкции мы будем измерять угол с помощью гироскопа и акселерометра, а также использовать технику объединения обоих датчиков, чтобы получить плавный сигнал. Этот метод называется «дополнительный фильтр».
Шаг 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 и построил график, чтобы увидеть, насколько хорош мой фильтр. Результаты потрясающие. Конечно, вы можете использовать сигнал для управления двигателем или для других вещей. Любые комментарии, любые сомнения, любая недостающая информация, просто скажите мне, и я исправлю это. Пожалуйста, если вам это нравится, оцените. Спасибо всем.
Рекомендуемые:
Измерение скорости двигателя с помощью Arduino: 6 шагов
Измерение скорости мотора с помощью Arduino: сложно ли измерить обороты мотора ??? Я так не думаю. Вот одно простое решение. Только один ИК-датчик и Arduino в вашем комплекте могут это сделать. В этом посте я дам простое руководство, объясняющее, как измерить скорость вращения любого двигателя с помощью ИК-датчика и A
Платформа гироскопа / подвес камеры: 5 шагов (с изображениями)
Платформа гироскопа / подвес камеры: Этот учебник был создан в соответствии с требованиями проекта Makecourse в Университете Южной Флориды (www.makecourse.com)
Stone Lcd + датчик гироскопа ускорения: 5 шагов
Stone Lcd + Acceleration Gyroscope Sensor: этот документ научит вас использовать сенсор гироскопа акселерометра STM32 MCU + MPU6050 + дисплей последовательного порта STONE STVC070WT для DEMO.STVC070WT - серийный дисплей нашей компании, его разработка проста и удобна , вы можете перейти на мы
Arduino Nano и Visuino: преобразование ускорения в угол с акселерометра и гироскопа Датчик I2C MPU6050: 8 шагов (с изображениями)
Arduino Nano и Visuino: преобразование ускорения в угол от акселерометра и гироскопа Датчик MPU6050 I2C: некоторое время назад я опубликовал руководство о том, как вы можете подключить акселерометр, гироскоп и датчик компаса MPU9250 к Arduino Nano и запрограммировать его с помощью Visuino для отправки пакетных данных и отображения это на осциллографе и визуальных приборах. Акселерометр отправляет X, Y
Визуализация движения гироскопа L3G4200D с помощью блендера: 5 шагов
Визуализация движения гироскопа L3G4200D с помощью Blender: Я купил довольно дешевый гироскопический датчик L3G4200D на eBay, который может обнаруживать 3-осевое вращение и передавать его через интерфейс I2C или SPI. Я попытался использовать его для определения горизонтального и вертикального вращения в реальном времени. Это оказалось довольно сложно