Оглавление:
Видео: Самобалансирующийся робот - алгоритм ПИД-регулирования: 3 шага
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:48
Этот проект был задуман, потому что мне было интересно узнать больше об алгоритмах управления и о том, как эффективно реализовать функциональные контуры 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-печати
Шасси (x1)
Левое колесо (x2)
Левый кожух двигателя (x2)
Корпус Arduino (1 шт.)
Шаг 3: алгоритм ПИД-регулирования
Я написал алгоритм ПИД-управления с нуля, используя библиотеки Arduino-KalmanFilter-master и Arduino-MPU6050-master с gitHub.
Предпосылка алгоритма заключается в следующем:
- Чтение сырых данных из MPU6050
- Используйте фильтр Калмана для анализа данных гироскопа и акселерометра, чтобы устранить неточности в показаниях гироскопа из-за ускорения датчика. Это возвращает относительно сглаженное значение шага датчика в градусах с точностью до двух десятичных знаков.
- Рассчитайте E rror в угле, то есть: угол между датчиком и заданным значением.
- Рассчитайте пропорциональную ошибку как (Константа пропорциональности x погрешность).
- Рассчитайте интегральную ошибку как текущую сумму (Константа интегрирования x ошибка).
- Рассчитайте производную погрешность как константу [(константа дифференцирования) x (изменение ошибки / изменение во времени)]
- Суммируйте все ошибки, чтобы получить выходную скорость, которая будет отправлена на двигатели.
- Рассчитайте, в каком направлении повернуть двигатели, исходя из знака угла ошибки.
- Цикл будет выполняться бесконечно и основываться на выходе по мере изменения входа. Это цикл обратной связи, в котором выходные значения используются в качестве новых входных значений для следующей итерации.
Последний шаг - настройка параметров Kp, Ki и Kd контура ПИД-регулирования.
- Хорошей отправной точкой является постепенное увеличение Kp до тех пор, пока робот не начнет колебаться вокруг точки равновесия и не сможет поймать падение.
- Затем начните Kd примерно с 1% от значения Kp и медленно увеличивайте, пока колебания не исчезнут, и робот будет плавно скользить при нажатии.
- Наконец, начните с Ki около 20% от Kp и изменяйте до тех пор, пока робот не «перескочит» заданное значение, чтобы активно поймать падение и вернуться в вертикальное положение.
Рекомендуемые:
Самобалансирующийся робот от Magicbit: 6 шагов
Самобалансирующийся робот от Magicbit: в этом руководстве показано, как сделать самобалансирующегося робота с помощью платы разработчика Magicbit. Мы используем magicbit в качестве платы для разработки в этом проекте, основанном на ESP32. Поэтому в этом проекте можно использовать любую плату разработки ESP32
Двухколесный самобалансирующийся робот: 7 шагов
Двухколесный самобалансирующийся робот: в этом руководстве будет рассмотрен процесс проектирования и сборки самобалансирующегося робота. В качестве примечания, я просто хочу сказать, что самобалансирующиеся роботы не являются новой концепцией, и они были созданы и задокументированы другими. Я хочу воспользоваться этой возможностью
HeadBot - самобалансирующийся робот для изучения и распространения STEM: 7 шагов (с изображениями)
HeadBot - самобалансирующийся робот для изучения и распространения STEM: Headbot - самобалансирующийся робот высотой два фута - это детище южно-юджинской робототехнической команды (SERT, FRC 2521), конкурентоспособной школьной робототехнической команды из FIRST. Конкурс робототехники из Юджина, штат Орегон. Этот популярный информационно-пропагандистский робот
Двухколесный самобалансирующийся робот: 4 шага
Двухколесный самобалансирующийся робот: По моему скромному мнению, вы не настоящий производитель, если только вы не создадите своего собственного двухколесного самобалансирующегося робота. :-) Итак, вот он … и, самое главное, он работает !!! Этот проект выглядит очень просто. Вместо этого требуется хороший уровень знаний о
Самобалансирующийся робот с использованием алгоритма PID (STM MC): 9 шагов
Самобалансирующийся робот с использованием алгоритма PID (STM MC): в последнее время было выполнено много работы по самобалансировке объектов. Концепция самобалансировки началась с уравновешивания перевернутого маятника. Эта концепция распространилась и на дизайн самолетов. В этом проекте мы разработали небольшой мод