Оглавление:

Самобалансирующийся робот - алгоритм ПИД-регулирования: 3 шага
Самобалансирующийся робот - алгоритм ПИД-регулирования: 3 шага

Видео: Самобалансирующийся робот - алгоритм ПИД-регулирования: 3 шага

Видео: Самобалансирующийся робот - алгоритм ПИД-регулирования: 3 шага
Видео: Баланс бот 2024, Ноябрь
Anonim
Самобалансирующийся робот - алгоритм ПИД-регулирования
Самобалансирующийся робот - алгоритм ПИД-регулирования

Этот проект был задуман, потому что мне было интересно узнать больше об алгоритмах управления и о том, как эффективно реализовать функциональные контуры PID. Проект все еще находится на стадии разработки, так как еще не добавлен модуль Bluetooth, который позволит управлять роботом со смартфона с поддержкой Bluetooth.

Используемые двигатели постоянного тока N20 были относительно дешевыми и, следовательно, имели значительный люфт. Это приводит к небольшому рывку, поскольку двигатели преодолевают «провисание», поскольку оно передает крутящий момент на колеса. Следовательно, добиться идеально плавного движения практически невозможно. Код, который я написал, достаточно прост, но эффективно демонстрирует возможности алгоритма PID.

Резюме проекта:

Шасси робота напечатано на 3D-принтере на принтере Ender 3 и спроектировано так, чтобы его можно было запрессовать.

Робот управляется Arduino Uno, который принимает данные датчиков от MPU6050 и управляет двигателями постоянного тока через внешний драйвер двигателя. Он работает от батареи 7,4 В емкостью 1500 мАч. Драйвер двигателя регулирует это значение до 5 В для питания Arduino и подает на двигатели 7,4 В.

Программное обеспечение было написано с нуля с помощью библиотек Arduino-KalmanFilter-master и Arduino-MPU6050-master с gitHub.

Запасы:

  • Детали, напечатанные на 3D-принтере
  • Arduino UNO
  • 6-осевой датчик MPU6050
  • Драйвер двигателя постоянного тока
  • Двигатели постоянного тока N20 (2 шт.)
  • Батарея 9В

Шаг 1. Сборка робота

Сборка роботов
Сборка роботов
Сборка роботов
Сборка роботов
Сборка роботов
Сборка роботов

Печать и сборка

Вся сборка должна быть запрессована, но я использовал суперклей, чтобы закрепить компоненты, чтобы гарантировать полную жесткость робота при балансировке.

Я разработал детали в Fusion 360 и оптимизировал каждую деталь для печати без опор, чтобы обеспечить более жесткие допуски и более чистую поверхность.

На принтере Ender 3 использовались следующие настройки: высота слоя 0,16 мм при заполнении 40% для всех деталей.

Шаг 2: робот для 3D-печати

Робот для 3D-печати
Робот для 3D-печати

Шасси (x1)

Левое колесо (x2)

Левый кожух двигателя (x2)

Корпус Arduino (1 шт.)

Шаг 3: алгоритм ПИД-регулирования

Алгоритм ПИД-регулирования
Алгоритм ПИД-регулирования

Я написал алгоритм ПИД-управления с нуля, используя библиотеки Arduino-KalmanFilter-master и Arduino-MPU6050-master с gitHub.

Предпосылка алгоритма заключается в следующем:

  • Чтение сырых данных из MPU6050
  • Используйте фильтр Калмана для анализа данных гироскопа и акселерометра, чтобы устранить неточности в показаниях гироскопа из-за ускорения датчика. Это возвращает относительно сглаженное значение шага датчика в градусах с точностью до двух десятичных знаков.
  • Рассчитайте E rror в угле, то есть: угол между датчиком и заданным значением.
  • Рассчитайте пропорциональную ошибку как (Константа пропорциональности x погрешность).
  • Рассчитайте интегральную ошибку как текущую сумму (Константа интегрирования x ошибка).
  • Рассчитайте производную погрешность как константу [(константа дифференцирования) x (изменение ошибки / изменение во времени)]
  • Суммируйте все ошибки, чтобы получить выходную скорость, которая будет отправлена на двигатели.
  • Рассчитайте, в каком направлении повернуть двигатели, исходя из знака угла ошибки.
  • Цикл будет выполняться бесконечно и основываться на выходе по мере изменения входа. Это цикл обратной связи, в котором выходные значения используются в качестве новых входных значений для следующей итерации.

Последний шаг - настройка параметров Kp, Ki и Kd контура ПИД-регулирования.

  1. Хорошей отправной точкой является постепенное увеличение Kp до тех пор, пока робот не начнет колебаться вокруг точки равновесия и не сможет поймать падение.
  2. Затем начните Kd примерно с 1% от значения Kp и медленно увеличивайте, пока колебания не исчезнут, и робот будет плавно скользить при нажатии.
  3. Наконец, начните с Ki около 20% от Kp и изменяйте до тех пор, пока робот не «перескочит» заданное значение, чтобы активно поймать падение и вернуться в вертикальное положение.

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