Оглавление:
- Запасы
- Шаг 1: Строительство
- Шаг 2: Подключение
- Шаг 3: теория управления
- Шаг 4: Использование MPU 6050
- Шаг 5: кодирование
- Шаг 6: Процедура настройки ПИД-регулятора
- Шаг 7: Заключение
Видео: Двухколесный самобалансирующийся робот: 7 шагов
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:48
В этом руководстве будет рассмотрен процесс проектирования и сборки самобалансирующегося робота. В качестве примечания, я просто хочу сказать, что самобалансирующиеся роботы - это не новая концепция, и они были созданы и задокументированы другими. Я хочу воспользоваться этой возможностью, чтобы поделиться с вами своей интерпретацией этого робота.
Что такое самобалансирующийся робот?
Самобалансирующийся робот - это система, которая использует данные инерционных измерений, полученные от бортового датчика, для непрерывной регулировки своего положения, чтобы оставаться в вертикальном положении.
Как это работает?
Рассмотрим простую аналогию с перевернутым маятником. Где центр масс находится над точкой поворота. Однако в нашем случае мы ограничиваем маятник 1 степенью свободы, имея одну ось вращения, в нашем случае оси вращения двух колес. Поскольку любые помехи могут привести к падению робота, нам нужен метод активного удержания робота в равновесии. Здесь вступает в игру наш алгоритм с обратной связью (ПИД-регулятор), зная, в каком направлении падает наш робот, мы можем регулировать направление вращения наших двигателей, чтобы поддерживать систему в равновесии.
Как работает алгоритм с обратной связью?
Основной принцип удержания робота в равновесии заключается в том, что если робот падает вперед, он компенсирует это, перемещая нижнюю часть робота вперед, чтобы поймать себя и, следовательно, оставаться в вертикальном положении. Точно так же, если робот падает назад, он компенсирует это, перемещая нижнюю часть робота назад, чтобы поймать себя.
Итак, нам нужно сделать здесь две вещи: во-первых, нам нужно вычислить угол наклона (крена), который испытывает робот, и, как следствие, нам нужно контролировать направление вращения двигателей.
Как мы будем измерять угол наклона?
Для измерения угла наклона мы будем использовать инерциальный измерительный блок. Эти модули включают акселерометр и гироскоп.
- Акселерометр - это электромагнитное устройство, которое измеряет правильное ускорение, это ускорение тела в системе мгновенного покоя.
- Гироскоп - это электромеханическое устройство, которое измеряет угловую скорость и используется для определения ориентации устройства.
Однако проблема с использованием таких датчиков заключается в том, что:
- Акселерометр очень шумный, но работает постоянно, угол меняется при резких горизонтальных движениях.
- С другой стороны, значение гироскопа будет дрейфовать со временем, но изначально оно довольно точное.
Для этого я не собираюсь реализовывать фильтр, вместо этого я буду использовать встроенную цифровую обработку движения (DMP). Другие использовали дополнительный фильтр для получения гладкого сигнала, вы можете выбрать любой метод, который вам нравится. поскольку робот балансирует с любой реализацией.
Запасы
Части:
- Arduino Pro Mini 3.3V 8 с ATMEGA328 8 МГц
- FT232RL 3.3V 5.5V FTDI USB-модуль последовательного адаптера TTL
- Модуль GY-521 с MPU-6050
- Пара микро мотор-редукторов N20 6V - 300 об / мин
- Драйвер двигателя L298N
- Понижающий преобразователь постоянного тока LM2596S
- Аккумулятор (перезаряжаемый литий-ионный аккумулятор 9,7 В)
- Ремешок для аккумулятора
- Две макетные печатные платы на печатной плате
- Штекерные и розеточные контакты перемычки
Инструменты:
- Паяльник и припой
- Стойка с нейлоновой шестигранной проставкой
- Набор прецизионных отверток
- 3д принтер
Шаг 1: Строительство
Поскольку у меня был доступ к 3D-принтеру, я решил напечатать корпус на 3D-принтере и использовать стойки, чтобы соединить все вместе.
Робот состоит из 4-х слоев.
- Нижний слой соединяет двигатели и имеет точки крепления для модуля драйвера двигателя L298N.
- На следующем слое находится макетная плата с припаянными к ней Arduino pro mini и разъемами.
- Третий слой устанавливает IMU
- Верхний слой, который я называю «бамперным слоем», скрывает аккумулятор, понижающий преобразователь и денежный переключатель.
Мой главный принцип дизайна заключался в том, чтобы все было модульным. Причина этого заключалась в том, что если что-то пойдет не так с одним из компонентов, я мог бы легко его заменить, или если мне понадобился компонент для другого проекта, я мог легко взять его, не беспокоясь о том, что не смогу снова использовать систему.
Шаг 2: Подключение
Я припаял несколько выводов женских заголовков к перфокартам, чтобы они совпадали с выводами мини-заголовков Arduino pro. После этого я припаял к плате штыревые контакты заголовка, чтобы обеспечить доступ к вводу / выводу. Остальные компоненты были прикреплены к раме, напечатанной на 3D-принтере, и подключены с помощью перемычек.
Шаг 3: теория управления
Теперь перейдем к сути проекта. Чтобы робот оставался сбалансированным, нам необходимо сгенерировать соответствующий управляющий сигнал, чтобы двигатели двигались в правильном направлении и с правильной скоростью, чтобы робот оставался сбалансированным и устойчивым. Для этого мы будем использовать популярный алгоритм контура управления, известный как ПИД-регулятор. Как следует из аббревиатуры, этот контроллер состоит из трех членов: пропорционального, интегрального и производного. Каждый из которых сопровождается коэффициентами, определяющими их влияние на систему. Часто наиболее трудоемкой частью реализации контроллера является настройка коэффициентов усиления для каждой уникальной системы для получения наиболее оптимального отклика.
- Пропорциональный член напрямую умножает ошибку, чтобы получить результат, поэтому чем больше ошибка, тем больше отклик.
- Интегральный член генерирует отклик на основе накопления ошибки для уменьшения установившейся ошибки. Чем дольше система находится в неуравновешенном состоянии, тем быстрее реагируют двигатели.
- Член производной - это производная ошибки, которая используется для прогнозирования будущей реакции и тем самым уменьшает колебания из-за выхода за установившееся состояние.
Основной принцип этого алгоритма состоит в том, чтобы непрерывно вычислять угол наклона, который представляет собой разницу между желаемым положением и текущим положением, это называется ошибкой. Затем он использует эти значения ошибок и вычисляет сумму пропорционального, интегрального и производного откликов для получения выходного сигнала, который представляет собой управляющие сигналы, отправляемые на двигатели. В результате, если ошибка велика, управляющий сигнал, отправленный на двигатели, будет вращать двигатели с высокой скоростью, чтобы перейти в сбалансированное состояние. Аналогичным образом, если ошибка мала, управляющий сигнал будет вращать двигатели на низкой скорости, чтобы робот оставался сбалансированным.
Шаг 4: Использование MPU 6050
Библиотека MPU6050
github.com/jrowberg/i2cdevlib/tree/master/…
Калибровка смещений Не все датчики являются точными копиями друг друга. В результате, если вы протестируете два MPU 6050, вы можете получить разные значения для акселерометра и гироскопа, когда будете размещены на одной и той же поверхности. Чтобы преодолеть это постоянное угловое смещение, нам нужно отметить каждый датчик, который мы используем. Запускаем этот скрипт:
www.i2cdevlib.com/forums/topic/96-arduino-…
написано Луисом Роденасом, мы получим компенсацию. Ошибки смещения можно устранить, задав значения смещения в подпрограмме setup ().
Использование цифрового процессора движения
MPU6050 содержит DMP (цифровой процессор движения).
Что такое DMP? Вы можете думать о DMP как о встроенном микроконтроллере, который обрабатывает сложное движение от 3-осевого гироскопа и 3-осевого акселерометра на борту mpu6050, используя собственные алгоритмы слияния движений. Разгрузка обработки, которая в противном случае выполнялась бы Arduino
Как это использовать? Чтобы понять, как использовать DMP, просмотрите пример скетча MPU6050_DMP6, который поставляется с библиотекой MPU6050 (в Arduino IDE: Файл-> Пример-> MPU6050-> MPU6050_DMP6). Это также хорошая возможность проверить, действительно ли ваш датчик работает и правильность подключения
Шаг 5: кодирование
Я использовал Arduino IDE и интерфейс FTDI для программирования Arduino pro mini.
Используя пример скетча (MPU6050_DMP6), который поставляется с библиотекой MPU6050 в качестве базового кода, я добавил функции PID () и MotorDriver ().
Добавить библиотеку
- MPU6050: Чтобы использовать датчик MPU6050, нам необходимо загрузить библиотеку разработчика I2C от Джеффа Роуберга и добавить ее в папку «библиотеки» Arduino, которая находится в программных файлах на вашем компьютере.
- Wire: Нам также нужна библиотека Wire, которая позволит нам общаться с устройствами I2C.
Псевдокод
Включить библиотеки:
- Wire.h
- MPU6050
- I2Cdev.h
Инициализировать переменные, константы и объекты
Настраивать ()
- Установите режим вывода для управления двигателями
- Установите режим вывода для светодиода состояния
- Инициализируйте MPU6050 и установите значения смещения.
PID ()
Рассчитать значение PID
MotorDriver (отклик ПИД-регулятора)
Используйте значение PID для управления скоростью и направлением двигателей
Петля ()
- Получить данные из DMP
- Вызов PID () функции MotorDriver ()
Шаг 6: Процедура настройки ПИД-регулятора
Это самая утомительная часть проекта, которая требует немного терпения, если вам не повезет. Вот шаги:
- Установите I и D на 0
- Удерживая робота, отрегулируйте P так, чтобы робот только начинал колебаться вокруг положения баланса.
- Установив P, увеличьте I, чтобы робот ускорялся быстрее при выходе из равновесия. Если P и I настроены правильно, робот должен иметь возможность самобалансироваться в течение как минимум нескольких секунд с некоторыми колебаниями.
- Наконец, увеличьте D, чтобы уменьшить колебания
Если первая попытка не дала удовлетворительных результатов, повторите шаги с другим значением P. Также имейте в виду, что вы можете настроить значения PID позже, чтобы еще больше повысить производительность. Значения здесь зависят от оборудования, не удивляйтесь, если вы получите очень большие или очень маленькие значения PID.
Шаг 7: Заключение
Используемые микродвигатели-редукторы должны были медленно реагировать на большие возмущения, и, учитывая, что система была слишком легкой, не хватало инерции, чтобы получить желаемый эффект маятника, поэтому, если робот наклоняется вперед, он просто наклоняется под углом и мчится вперед. Наконец, колеса, напечатанные на 3D-принтере, были плохим выбором, поскольку они продолжают скользить.
Предложения по улучшению:
- Более быстрые двигатели с более высоким крутящим моментом, т.е. для двигателей постоянного тока чем выше номинальное напряжение, тем выше крутящий момент.
- возьмите более тяжелую батарею или просто переместите массу немного выше
- Замените колеса с 3D-печатью на резиновые, чтобы улучшить сцепление с дорогой.
Рекомендуемые:
Самобалансирующийся робот от Magicbit: 6 шагов
Самобалансирующийся робот от Magicbit: в этом руководстве показано, как сделать самобалансирующегося робота с помощью платы разработчика Magicbit. Мы используем magicbit в качестве платы для разработки в этом проекте, основанном на ESP32. Поэтому в этом проекте можно использовать любую плату разработки ESP32
HeadBot - самобалансирующийся робот для изучения и распространения STEM: 7 шагов (с изображениями)
HeadBot - самобалансирующийся робот для изучения и распространения STEM: Headbot - самобалансирующийся робот высотой два фута - это детище южно-юджинской робототехнической команды (SERT, FRC 2521), конкурентоспособной школьной робототехнической команды из FIRST. Конкурс робототехники из Юджина, штат Орегон. Этот популярный информационно-пропагандистский робот
Proyecto Laboratorio De Mecatrónica (двухколесный балансировочный робот): 6 шагов
Proyecto Laboratorio De Mecatrónica (Двухколесный балансировочный робот): En este proyecto se mostrara, el funcionamiento y el como hacer for development un "Двухколесный балансировочный робот". paso a paso y con explicación y Concejos. Este es un sistema que consiste en que el robot no se debe caer, se debe de mantener en el
Двухколесный самобалансирующийся робот: 4 шага
Двухколесный самобалансирующийся робот: По моему скромному мнению, вы не настоящий производитель, если только вы не создадите своего собственного двухколесного самобалансирующегося робота. :-) Итак, вот он … и, самое главное, он работает !!! Этот проект выглядит очень просто. Вместо этого требуется хороший уровень знаний о
Самобалансирующийся робот с использованием алгоритма PID (STM MC): 9 шагов
Самобалансирующийся робот с использованием алгоритма PID (STM MC): в последнее время было выполнено много работы по самобалансировке объектов. Концепция самобалансировки началась с уравновешивания перевернутого маятника. Эта концепция распространилась и на дизайн самолетов. В этом проекте мы разработали небольшой мод