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

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

<основной класс="главный сайт" id="главный">

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

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

Обзор

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

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

STL-файлы:

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

Сборка

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

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

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

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

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

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

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

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

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

Схема цепи стабилизатора Arduino

Осталось соединить все воедино. Вот принципиальная схема этого проекта и то, как все должно быть подключено.

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

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

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

Код Arduino

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

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

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

// 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, вычитая захваченное выше случайное значение. Затем мы сопоставляем значения рысканья, тангажа и крена от -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)

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

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

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


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

  1. Музыкальный визуализатор DIY LUMAZOID для Arduino
  2. Вольтметр своими руками с использованием Arduino и смартфона
  3. Робот с сервомотором избегает препятствий
  4. Скейтборд виртуальной реальности «Сделай сам»
  5. Учебная платформа Arduino
  6. Сделай сам Arduino РАДИОНИКА Лечение MMachine
  7. Самодельный двухмерный гоночный симулятор
  8. Arduino Trash-Bot (автоматическое открытие / закрытие корзины для мусора)
  9. Индивидуальная серво-развертка
  10. Идея DIY с RFID