Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Создание самстабилизирующегося Arduino 짐бала с 3-осевым сервоуправлением

В этом уроке мы научимся строить Arduino гимбал или самстабилизирующуюся платформу с сервоприводами. Этот урок на самом деле является продолжением предыдущего урока о MPU6050.

Вы можете посмотреть следующее видео или прочитать письменный урок ниже.

Обзор

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

Создание самстабилизирующегося Arduino 짐бала с 3-осевым сервоуправлением

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

Создание самстабилизирующегося Arduino 짐бала с 3-осевым сервоуправлением

STL Файлы:

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

Создание самстабилизирующегося Arduino 짐бала с 3-осевым сервоуправлением

Сборка

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

Создание самстабилизирующегося Arduino 짐бала с 3-осевым сервоуправлением

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

Создание самстабилизирующегося Arduino 짐бала с 3-осевым сервоуправлением

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

Создание самстабилизирующегося Arduino 짐бала с 3-осевым сервоуправлением

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

Создание самстабилизирующегося Arduino 짐бала с 3-осевым сервоуправлением

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

Создание самстабилизирующегося Arduino 짐бала с 3-осевым сервоуправлением

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

Создание самстабилизирующегося Arduino 짐бала с 3-осевым сервоуправлением

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

Создание самстабилизирующегося Arduino 짐бала с 3-осевым сервоуправлением

2 литий-ионных аккумулятора выдадут около 7.4В, но нам нужно 5В для питания Arduino и сервоприводов.

Создание самстабилизирующегося Arduino 짐бала с 3-осевым сервоуправлением

Именно поэтому я использовал понижающий преобразователь (buck converter), который преобразует 7.4В в 5В.

Схема подключения Arduino гимбала

Что осталось сейчас — это соединить всё вместе. Вот схема этого проекта и то, как всё должно быть подключено.

Создание самстабилизирующегося Arduino 짐бала с 3-осевым сервоуправлением

Компоненты, необходимые для этого Arduino урока, можно найти по ссылкам ниже:

  • IMU MPU6050 ………………………………. Amazon / Banggood / AliExpress
  • Сервопривод MG996R ………………………………. Amazon / Banggood / AliExpress
  • Понижающий преобразователь (Buck Converter) ………………………………
  • Плата Arduino …………………………..…..
  • Макетная плата и перемычки …………

В конце я засунул электронные компоненты и провода в базу и закрыл их с помощью этой крышки снизу.

Создание самстабилизирующегося Arduino 짐бала с 3-осевым сервоуправлением

С этим самобалансирующаяся платформа или Arduino гимбал готова и работает хорошо, как и ожидалось. Что осталось — это взглянуть на программу.

Создание самстабилизирующегося Arduino 짐бала с 3-осевым сервоуправлением

Код Arduino

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

Здесь вы можете скачать код:

Описание кода: Так, мы используем выходные данные читаемые yaw, pitch и roll.

// Get Yaw, Pitch and Roll values #ifdef OUTPUT_READABLE_YAWPITCHROLL mpu.dmpGetQuaternion(&q, fifoBuffer); mpu.dmpGetGravity(&gravity, &q); mpu.dmpGetYawPitchRoll(ypr, &q, &gravity); // Yaw, Pitch, Roll values - Radians to degrees ypr[0] = ypr[0] * 180 / M_PI; ypr[1] = ypr[1] * 180 / M_PI; ypr[2] = ypr[2] * 180 / M_PI; // Skip 300 readings (self-calibration process) if (j <= 300) { correct = ypr[0]; // Yaw starts at random value, so we capture last value after 300 readings j++; } // After 300 readings else { ypr[0] = ypr[0] - correct; // Set the Yaw to 0 deg - subtract the last random Yaw value from the currrent value to make the Yaw 0 degrees // Map the values of the MPU6050 sensor from -90 to 90 to values suatable for the servo control from 0 to 180 int servo0Value = map(ypr[0], -90, 90, 0, 180); int servo1Value = map(ypr[1], -90, 90, 0, 180); int servo2Value = map(ypr[2], -90, 90, 180, 0); // Control the servos according to the MPU6050 orientation servo0.write(servo0Value); servo1.write(servo1Value); servo2.write(servo2Value); } #endifCode language: Arduino (arduino)

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

// Yaw, Pitch, Roll values - Radians to degrees ypr[0] = ypr[0] * 180 / M_PI; ypr[1] = ypr[1] * 180 / M_PI; ypr[2] = ypr[2] * 180 / M_PI;Code language: Arduino (arduino)

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

// Skip 300 readings (self-calibration process) if (j <= 300) { correct = ypr[0]; // Yaw starts at random value, so we capture last value after 300 readings j++; }Code language: Arduino (arduino)

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

// After 300 readings else { ypr[0] = ypr[0] - correct; // Set the Yaw to 0 deg - subtract the last random Yaw value from the currrent value to make the Yaw 0 degrees // Map the values of the MPU6050 sensor from -90 to 90 to values suatable for the servo control from 0 to 180 int servo0Value = map(ypr[0], -90, 90, 0, 180); int servo1Value = map(ypr[1], -90, 90, 0, 180); int servo2Value = map(ypr[2], -90, 90, 180, 0); // Control the servos according to the MPU6050 orientation servo0.write(servo0Value); servo1.write(servo1Value); servo2.write(servo2Value); }Code language: Arduino (arduino)

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

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

Это было бы всё для этого урока, надеюсь, вам понравилось, и вы узнали что-то новое. Не стесняйтесь задавать любые вопросы в разделе комментариев ниже и не забывайте проверять мою коллекцию проектов Arduino.


Производственный процесс

  1. Сделай свой LUMAZOID: DIY Arduino музыкальный визуализатор
  2. Умный вольтметр на Arduino и смартфоне — простое DIY-проект
  3. Робот-ускользатор на сервоприводе: сборка на Arduino и HC-SR04
  4. Сборка DIY VR-скейтборда на Arduino, Google Cardboard и Bluetooth
  5. Учебный стенд Arduino Mega 2560: сенсоры, моторы, дисплеи и собственная PCB
  6. DIY Arduino Radionics EMR Treatment Device — радионическое устройство
  7. DIY 2D гоночный симулятор движения на Arduino Nano и сервоприводах SG90
  8. Умная корзина для мусора на Arduino с автоматическим открыванием крышки
  9. Управление сервоприводами дрона 3DR Solo через Arduino: Firmata + pyMata
  10. Создание портативного RFID-замка на Arduino — пошаговое руководство