Рубрики
Схемы на Arduino

Самостабилизирующаяся платформа на Arduino своими руками

В этом уроке мы узнаем как на основе платы Arduino сконструировать самостабилизирующуюся платформу с серводвигателями. Основой данного проекта является гироскоп MPU6050, работу с которым мы рассматривали в этой статье. Применения для этой самостабилизирующейся платформы могут быть самые разнообразные — если вы решили прочитать данную статью, наверняка вы про них знаете.

Необходимые компоненты

  1. Плата Arduino Nano (купить на AliExpress).
  2. Серводвигатель MG996R (3 шт.) (купить на AliExpress).
  3. Модуль акселерометра и гироскопа MPU6050 (купить на AliExpress).
  4. Понижающий преобразователь постоянного тока в постоянный (Buck Converter).
  5. Макетная плата.
  6. Соединительные провода.

Реклама: ООО «АЛИБАБА.КОМ (РУ)» ИНН: 7703380158

Обзор проекта

Я спроектировал самостабилизирующуюся платформу с помощью программного обеспечения для 3D-моделирования. Она будет включать в себя 3 серводвигателя MG996R для 3-осевого управления и основания, на котором будут размещены датчик MPU6050, плата Arduino и аккумулятор.

Вы можете найти и скачать эту 3D-модель, а также изучить ее в своем браузере на сайте Thangs.

Скачать STL-файлы для самостабилизирующейся платформы

Используя свой 3D-принтер Creality CR-10 я напечатал на нем все детали проекта и они получились просто идеальными.

Сборка платформы

Собрать самостабилизирующуюся платформу оказалось довольно легко. Я начал с установки сервопривода рыскания. Используя болты и гайки М3, я прикрепил его к основанию.

Затем, используя тот же метод, я закрепил сервопривод крена (Roll). Детали специально разработаны для легкой установки на сервоприводы MG996R.

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

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

Я повторил этот процесс для сборки остальных компонентов, сервопривода тангажа (Pitch) и верхней платформы.

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

Для питания проекта я использовал 2 литий-ионные батареи, которые поместил в этот держатель. Я прикрепил держатель батареи к основанию с помощью двух болтов и гаек.

Две литий-ионные батареи будут производить около 7,4 В, но нам нужно 5 В для питания Arduino и сервоприводов.

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

Схема проекта

Теперь осталось соединить все вместе. На следующем рисунке показана принципиальная схема нашего проекта и то, как все нужно подключить.

Для завершения сборки платформы я втиснул компоненты электроники и провода в основание и закрыл их этой крышкой внизу.

На этом самобалансирующаяся платформа (или подвес) на основе платы Arduino готовы и работают хорошо, как и ожидалось. Осталось посмотреть программу.

Исходный код программы для Arduino

Код Arduino для нашего проекта — это модификация примера MPU6050_DMP6 из библиотеки i2cdevlib Джеффа Роуберга.

Здесь вы можете скачать код: код программы для самостабилизирующейся платформы.

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

Получив эти значения, сначала преобразуем их из радиан в градусы.

Дальше ждем или делаем 300 показаний, т. к. датчик все это время еще находится в процессе самокалибровки. Кроме того, мы фиксируем значение отклонения от курса, которое вначале не равно 0, как значения Pitch и Roll, а всегда является каким-то случайным значением.

После 300 показаний сначала мы устанавливаем рысканье на 0, вычитая полученное выше случайное значение. Затем мы сопоставляем значения рыскания, тангажа и крена от – 90 до +90 градусов со значениями от 0 до 180, которые используются для управления сервоприводами.

Наконец, используя функцию записи, мы отправляем эти значения сервоприводам в качестве управляющих сигналов. Конечно, вы можете отключить сервопривод отклонения от курса, если хотите просто стабилизировать оси X и Y, и использовать эту платформу в качестве подвеса камеры.

Обратите внимание: это далеко не лучший стабилизатор камеры. Движения не плавные, потому что эти сервоприводы не предназначены для такой цели. В настоящих подвесах камеры используются двигатели BLDC специального типа, обеспечивающие плавность движений.

Видео, демонстрирующее сборку и работу проекта

Источник статьи

2 ответа к “Самостабилизирующаяся платформа на Arduino своими руками”

смотрим на схему с товарищем и не понимаем как она работает если датчик и ардуино имеют общую землю, но она больше не к чему не подключена.

Да, наверное на схеме есть опечатка.

Почему «общая земля» не подключена — это ошибка
На схеме в статье вы видите, что:
— Контакты GND на Arduino и MPU6050 соединены между собой.
— Но эта общая точка не соединена с «минусом» источника питания (аккумулятора).
В электронике это называется «висящей землей» (floating ground). Электрический ток всегда течет по замкнутому контуру. Если нет соединения с минусом питания, то:
— Нет питания: Датчик MPU6050 не получит «минус», и его внутренняя схема не включится.
— Нет сигнала: Данные, которые датчик пытается отправить по проводам SDA/SCL, не будут иметь опорного напряжения относительно «земли» Arduino. Контроллер не сможет их правильно прочитать.

Как на самом деле должна быть собрана схема (исправленный вариант)
Чтобы все заработало, нужно добавить одно единственное соединение:
— Соедините общую точку GND (Arduino + датчик) с отрицательным (-) выходом вашего понижающего преобразователя (Buck Converter), на который подается питание 5В.
Правильная логика подключения питания выглядит так:
1. Источник (аккумулятор 7.4В):
Плюс (+) аккумулятора → Вход IN+ понижающего преобразователя.
Минус (-) аккумулятора → Вход IN- понижающего преобразователя.
2. Понижающий преобразователь (выход 5В):
Выход OUT+ (5В) → Пин 5V Arduino и пин VCC датчика MPU6050 (поскольку они оба питаются от 5В).
Выход OUT- (GND, 0В) → ОБЯЗАТЕЛЬНО подсоедините к пину GND Arduino и пину GND датчика. Именно здесь все «земли» сходятся в одну общую точку.

Дополнительный нюанс по питанию сервоприводов
Обратите внимание на важную деталь, которую статья не акцентирует: сервоприводы MG996R не следует питать от регулятора напряжения на самой Arduino. Они потребляют большой ток, особенно при активной стабилизации, и могут выжечь встроенный стабилизатор платы.
Правильнее сделать так:
— Для Arduino и MPU6050: Используйте выход 5В с понижающего преобразователя (как описано выше).
— Для сервоприводов: Подключите их красный провод (VCC) напрямую к плюсовому выходу аккумулятора (7.4В), а коричневый/черный (GND) — к общему минусу (OUT- преобразователя и GND Arduino). Сигнальные провода сервоприводов подключаются к пинам Arduino, как указано в коде.

Краткий итог для сборки
Чтобы схема заработала, ваша цепь «земли» должна выглядеть так:
Минус аккумулятора → Вход IN- преобразователя → Выход OUT- преобразователя → (общий узел) → GND Arduino и GND датчика.
Если вы соедините все «земли» в один общий узел и подключите его к минусу источника питания, схема станет полностью работоспособной. В остальном, логика управления, описанная в коде (чтение углов с MPU6050 и преобразование их в сигналы для сервоприводов), верна.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *