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

Создание точного манипулятора с ПК-управлением на Arduino Nano и сервоприводах Tower Pro MG996R

Компоненты и расходные материалы

Arduino Nano R3 × 1
Сервоприводы Tower Pro MG996R × 4

Приложения и онлайн-сервисы

О проекте

Я всегда восхищался современными производственными технологиями и ролью манипуляторов в подъеме материалов, сборке, сварке, резке и работе на складах.

Создание этого манипулятора стало вызовом. В основу взял простой дизайн 2016 года (автор fortzero), но решил не управлять вручную, а написать приложение автоматизации на C# (Windows Forms), стилизованное под промышленные SCADA-системы.

Приложение полностью управляет манипулятором, отслеживает движения, позволяет задавать последовательности задач.

Шаг 1: Материалы

Создание точного манипулятора с ПК-управлением на Arduino Nano и сервоприводах Tower Pro MG996R

Основной материал — МДФ: 2 мм для конструкции, 4 мм для основания. Чертежи доступны для скачивания в последнем шаге — распечатайте, наклейте на МДФ, вырежьте по контуру, просверлите отверстия. Для сверления и резки использовал ротационную шлифмашинку. Для основания чертежей нет — можно импровизировать.

Шаг 2: Покраска и оформление

Создание точного манипулятора с ПК-управлением на Arduino Nano и сервоприводах Tower Pro MG996R

Для привлекательного вида использовал те же чертежи: в Photoshop создал декали и геометрические формы, распечатал и наклеил на дерево клеем ПВА.

Шаг 3: Сборка рамы

Создание точного манипулятора с ПК-управлением на Arduino Nano и сервоприводах Tower Pro MG996R

Манипулятор собирался просто: всё заранее спланировано. Сервоприводы закреплены винтами. Для соединения левой и правой сторон использовал толстые деревянные штыри на суперклей — легче, чем длинные винты.

Шаг 4: Захват (щипцовый механизм)

Создание точного манипулятора с ПК-управлением на Arduino Nano и сервоприводах Tower Pro MG996R

Согнул два металлических стержня плоскогубцами, просверлил отверстие в деревянной детали 3 мм и закрепил суперклеем.

Шаг 5: Изготовление основания

Создание точного манипулятора с ПК-управлением на Arduino Nano и сервоприводах Tower Pro MG996R

Основание из МДФ 4 мм: квадрат ~17×10 см, отверстие под сервопривод основания (9g). Для снижения трения использовал картонную трубку (высота 2,5 см, диаметр 10 см) с отверстием под вал сервы.

Шаг 6: Электроника

Создание точного манипулятора с ПК-управлением на Arduino Nano и сервоприводах Tower Pro MG996R
Создание точного манипулятора с ПК-управлением на Arduino Nano и сервоприводах Tower Pro MG996R

При использовании более двух сервоприводов с Arduino обязательно внешнее питание. Здесь: 3 микросервы 9g и 1 мощный сервопривод. Сначала тестировал виртуально на Tinkercad.

Питание: 4 батареи АА (1,5 В) = 6 В. Сделал макет на breadboard, затем простую расширительную плату для Arduino Nano.

Шаг 7: Код Arduino

  1. Скачайте и установите последнюю Arduino IDE: arduino.cc
  2. Подключите Arduino к USB.
  3. Инструменты → Плата → выберите вашу плату.
  4. Вставьте код в редактор IDE.
  5. Проверьте код (кнопка ✔).
  6. Загрузите (кнопка ➤).

Шаг 8: Приложение автоматизации

Создание точного манипулятора с ПК-управлением на Arduino Nano и сервоприводах Tower Pro MG996R

Любимая часть — автоматизация Arduino через ПХ. Хороший старт для изучения расширенного управления платами.

Достижение фиксированных углов было непросто. Сначала решал через Processing 3: сделал интерфейс, симулирующий сервы (База, Плечо, Локоть, Захват) с клавиатуры «угол за углом» до заданных позиций. Зафиксировал углы в массивы (A,B,C,D) и использовал их в Windows-приложении — это помогло узнать пределы каждого сервопривода.

Эти пределы заложены в ползунки интерфейса для безопасности и поддержки воспроизведения.

Возможности приложения:

1. Ручной контроль: ползунки для каждой сервы + клавиатура:

2. Запись движений: кнопка «Rec. Position» или клавиша R — сохраняет текущие углы в список. Кнопка «Start Auto mood» воспроизводит последовательность.

3. Мониторинг: графический интерфейс рисует графики движений в реальном времени, таблица справа показывает точные углы и время. Можно создавать свои задачи и отправлять манипулятору — как в промышленной автоматизации.

Шаг 9: Обновления (авг. 2018)

Создание точного манипулятора с ПК-управлением на Arduino Nano и сервоприводах Tower Pro MG996R

Повторил дизайн на лазерном станке из МДФ 3 мм с улучшениями. Добавил кастомный джойстик — крутая идея.

Код

Task.ino (Arduino)
int delayT = 350;
void Home() { // Позиция "дом"
  MyServo0.write(valGripper); delay(15);
  MyServo.write(valBase); delay(30);
  MyServo2.write(valShoulder); delay(30);
  MyServo3.write(valElbow); delay(delayT);
}
void Pick() { // Фиксированная позиция захвата
  MyServo.write(4); delay(delayT);
  MyServo3.write(125); MyServo2.write(95); delay(delayT);
  MyServo0.write(50); delay(delayT); // Открыть
  MyServo0.write(2); delay(delayT);  // Закрыть
  MyServo2.write(60); MyServo3.write(80); delay(delayT);
  Serial.println("Object Picked");
}
void Drop() { // Фиксированная позиция сброса
  MyServo.write(145); delay(delayT);
  MyServo2.write(80); delay(15);
  MyServo3.write(115); delay(delayT);
  MyServo0.write(40); delay(delayT); // Открыть
  MyServo3.write(90); delay(delayT);
  Serial.println("Object Dropped");
}
void Playback() { // Парсинг команд "servoId:angle&servoId:angle..."
  char* command = strtok(ByteReceived, "&");
  while (command != 0) {
    char* separator = strchr(command, ':');
    if (separator != 0) {
      *separator = 0;
      int servoId = atoi(command);
      ++separator;
      int angle = atoi(separator);
      if (servoId == 1) { MyServo.write(angle); delay(delayT); }
      else if (servoId == 2) { MyServo2.write(angle); delay(delayT); }
      else if (servoId == 3) { MyServo3.write(angle); delay(delayT); }
    }
    command = strtok(0, "&");
  }
}
RobotArm.ino (Arduino)
// written by AhmedAzouz
#include 
Servo MyServo, MyServo2, MyServo3, MyServo0;
char ByteReceived;
int valGripper = 30, valBase = 70, valShoulder = 25, valElbow = 150;

void setup() {
  Serial.begin(9600);
  pinMode(A5, OUTPUT);
  MyServo0.attach(12); // Gripper
  MyServo.attach(11);  // Base
  MyServo2.attach(13); // Shoulder
  MyServo3.attach(10); // Elbow
  // Стартовые позиции
  MyServo0.write(valGripper); delay(15);
  MyServo.write(valBase); delay(30);
  MyServo2.write(valShoulder); delay(30);
  MyServo3.write(valElbow); delay(300);
}

void loop() {
  // Вывод текущих углов в Serial
  while (Serial.available() > 0) {
    ByteReceived = Serial.read();
    switch (ByteReceived) {
      case 'n': digitalWrite(A5, HIGH); Serial.println("LED on"); break;
      case 'f': digitalWrite(A5, LOW); Serial.println("LED off"); break;
      case 'l': MyServo.write(MyServo.read()+2); Serial.println(MyServo.read()); delay(15); break; // Base left
      case 'r': MyServo.write(MyServo.read()-2); Serial.println(MyServo.read()); delay(15); break; // Base right
      case 'u': MyServo2.write(MyServo2.read()+2); Serial.println(MyServo2.read()); delay(15); break; // Elbow up
      case 'd': MyServo2.write(MyServo2.read()-2); Serial.println(MyServo2.read()); delay(15); break; // Elbow down
      case 'w': MyServo3.write(MyServo3.read()+2); Serial.println(MyServo3.read()); delay(15); break; // Shoulder down
      case 's': MyServo3.write(MyServo3.read()-2); Serial.println(MyServo3.read()); delay(15); break; // Shoulder up
      case 'o': MyServo0.write(30); Serial.println(MyServo0.read()); delay(15); break; // Gripper open
      case 'c': MyServo0.write(1); Serial.println(MyServo0.read()); delay(15); break;  // Gripper close
      case 'q': digitalWrite(A5,HIGH); Pick(); Drop(); Home(); digitalWrite(A5,LOW); break; // Quick demo
      case 'h': Home(); digitalWrite(A5,LOW); break; // Force home
      default: digitalWrite(A5,HIGH); Pick(); Playback(); Home(); digitalWrite(A5,LOW); break; // Auto mode
    }
  }
}

3D-модели

Файл SketchUp: f98t2axin238k2n_khGWAEIqdl.skp

Схемы

Создание точного манипулятора с ПК-управлением на Arduino Nano и сервоприводах Tower Pro MG996R

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

  1. Makerarm: универсальный настольный робот-манипулятор для мейкеров
  2. Как создаются манипуляторы роботов: проектирование и функции
  3. Как промышленные манипуляторы трансформируют производство: ключевые преимущества
  4. Промышленные роботизированные руки: повышение эффективности производства и ценности персонала
  5. Гидравлические роботизированные руки в производстве: экспертное руководство
  6. Удаленное IoT-управление самодельной манипулятором
  7. Сборка функционального 3D-печатного манипулятора на Arduino: пошаговое руководство
  8. Роботизированная рука 6 степеней свободы на Arduino Mega с управлением через Nunchuk
  9. Рынок SCARA-роботов достигнет $14,78 млрд к 2026 году, стимулируя рост автоматизации
  10. Промышленные роботы-манипуляторы: Движущая сила производственной революции