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

Роботизированная рука, управляемая ПК

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

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

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

Microsoft Visual Studio 2015
IDE Arduino

Об этом проекте

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

Мой опыт создания этого робота-манипулятора был непростой задачей. Итак, в качестве начала я выбрал простую роботизированную руку, разработанную Fortzeroas в 2016 году, затем я решил не управлять им вручную, как обычно. Поэтому я создал приложение автоматизации с помощью «C # Windows Application» и сделал его похожим на приложения для автоматизации производства.

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

Шаг 1. Материал

Основной материал - дерево МДФ, я использовал 2 мм для конструкции и 4 мм для основы.

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

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

Шаг 2. Рисование и стилизация

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

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

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

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

Шаг 4. Захват (прижимной механизм)

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

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

Основание изготовлено из МДФ толщиной 4 мм, я вырезал квадрат 17 см * 10 см настольной пилой, затем просверлил холл, чтобы установить базовый серводвигатель 9g. Чтобы уменьшить трение между основанием и цилиндром, я вырезал часть прочной картонной банки высотой 2,5 см и диаметром 10 см, затем просверлил ее, чтобы прикрепить вал серводвигателя.

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

При использовании более двух сервоприводов с Arduino вы должны использовать для них внешний источник питания, и в этом проекте я использовал три микро сервоприводы 9g и один большой серводвигатель.

Конечно, первый демонстрационный тест был виртуальным на tinkercad.com, чтобы смоделировать сервоприводы и проверить электрическую цепь.

Итак, в этом случае я использовал 4 батареи AA 1,5 В, что равняется 6 В, затем я сделал тестовую установку на макетной плате и после этого сделал очень простую док-станцию ​​расширения для Arduino nano.

Шаг 7. Код Arduino

1. Загрузите и установите последнюю версию Arduino IDE. Последнюю версию для Windows, Linux или MAC OSX можно найти на веб-сайте Arduino:https://www.arduino.cc/en/main/software

2. Подключите плату Arduino к USB-порту.

3. Перейдите в Инструменты> Доска> затем выберите свою доску.

4. Скопируйте и вставьте код в редактор IDE.

5. Подтвердите свой код, нажав кнопку со значком (✔).

6. Загрузите Код на свою доску, нажав кнопку со значком (➤).

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

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

Достичь положения с фиксированным углом было непросто, поэтому вначале я решил эту проблему с помощью стороннего приложения под названием «Обработка 3».

На начальных этапах я создал поддерживаемый интерфейс, который имитирует сервоприводы манипуляторов робота (Основание, Плечо, Локоть и Захват) с помощью клавиатуры и перемещал их по отдельности «угол за углом», пока он не достиг заранее подготовленного фиксированного положения.

Затем, когда он достиг этой подготовленной позиции, я записал эти четыре угла в массив кода (A, B, C, D). Затем я использовал эти мульти-массивы позже в своем приложении Windows, это очень помогло мне узнать пределы каждый серводвигатель поворачивает каждый на своем месте.

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

Таким образом, с помощью этого приложения вы можете управлять, записывать и контролировать манипулятор робота следующим образом:

1. Управление движением:

Есть два способа управления этой роботизированной рукой:первое - вручную, перетаскивая направляющие, которые управляют спастическим сервоприводом, таким как

  • Захват:нажмите кнопку "Открыть и закрыть", чтобы открыть и закрыть робот-захват.
  • База:перетащите полосу отслеживания вправо и влево или даже используйте стрелки клавиатуры (вправо / влево) для перемещения базы вправо и влево.
  • Плечо:перетащите полосу слежения вправо и влево или даже используйте стрелки клавиатуры (вверх / вниз), чтобы переместить плечо вверх и вниз.
  • Локоть:перетащите полосу трекинга вправо и влево или даже используйте клавиши клавиатуры (w / s) для перемещения локтевого мотора вверх и вниз.

2. Запись движения:

Если вы хотите автоматизировать движение манипулятора робота, вы должны записывать положение на каждом шаге, нажимая кнопку «Записать положение» или нажимая (R) на клавиатуре. Тогда приложение позаботится об этом.

На каждом этапе вы записываете, как приложение определяет перемещенное положение двигателя и сохраняет его в списке отдельно.

При нажатии кнопки «Начать автоматическое настроение» приложение отправит эти сохраненные позиции в виде очередных ордеров.

3. Мониторинг:

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

Таким образом, используя эти функции, вы можете составлять свои собственные движения и отправлять их в роботизированный манипулятор в качестве задачи, как это и делается при автоматизации производства.

Шаг 9. Обновления

Август 2018:

Недавно я сделал такой же дизайн после внесения некоторых модификаций в станок для лазерной резки из МДФ толщиной 3 мм. На самом деле эта дополнительная идея была крутой, особенно когда я добавил к ней пользовательский джойстик.

Код

  • Task.ino
  • RobotArm.ino
Task.ino Arduino
 int delayT =350; void Home () // Вызов этой функции, когда вы хотите установить руку в исходное положение {MyServo0.write (valGripper); // Задержка захвата (15); MyServo.write (valBase); // базовая задержка (30); MyServo2.write (valShoulder); // задержка плеча (30); MyServo3.write (valElbow); // задержка локтя (delayT); } void Pick () // Это фиксированное место выбора. {MyServo.write (4); // базовая задержка (delayT); MyServo3.write (125); // локоть MyServo2.write (95); // задержка плеча (delayT); MyServo0.write (50); // Захват широко открывается задержка (delayT); MyServo0.write (2); // Задержка закрытия захвата (delayT); MyServo2.write (60); // взвалить плечом немного MyServo3.write (80); // локтем вверх немного delay (delayT); Serial.println («Объект выбран»); } void Drop () // Это фиксированное место для перетаскивания. {MyServo.write (145); // базовая задержка (delayT); MyServo2.write (80); // задержка плеча (15); MyServo3.write (115); // задержка локтя (delayT); MyServo0.write (40); // Захват широко открывается задержка (delayT); MyServo3.write (90); // локтем вверх немного delay (delayT); Serial.println (F («Объект упал»)); } void Playback () {// https://arduino.stackexchange.com/questions/1013/how-do-i-split-an-incoming-string // вход ДОЛЖЕН быть массивом (servoId:Position &servoId:Position &servoId:Position) // Строковая фраза; // фраза =String (фраза + ByteReceived); // преобразование ввода char в перемешивание можно разделить // Прочитать каждую пару команд char * command =strtok (ByteReceived, "&"); while (command! =0) {// Разделить команду на два значения char * separator =strchr (command, ':'); if (separator! =0) {// Фактически разделите строку на 2:замените ':' на 0 * separator =0; int servoId =atoi (команда); ++ разделитель; int angle =atoi (разделитель); // Что-то делаем с servoId и angle if (servoId =1) {MyServo.write (angle); задержка (delayT); } иначе, если (servoId =2) {MyServo2.write (угол); задержка (delayT); } иначе, если (servoId =3) {MyServo3.write (угол); задержка (delayT); }} // Находим следующую команду во входной строке command =strtok (0, "&"); }} 
RobotArm.ino Arduino
 // написано AhmedAzouz # include  Servo MyServo, MyServo2, MyServo3, MyServo0; char ByteReceived; int MyPosition, MyPosition2, MyPosition3, MyPositionG; int runCounter =0; int ledPin =A5; // устанавливает исходные положения сервоприводов по умолчанию int valGripper =30; int valBase =70; int valShoulder =25; int valElbow =150; void setup () {Serial.begin (9600); pinMode (ledPin, ВЫХОД); digitalWrite (13, LOW); MyServo0.attach (12); // Захват присоединить MyServo.attach (11); // прикрепление базы MyServo2.attach (13); // прикрепление плеча MyServo3.attach (10); // Присоединение локтя // Устанавливаем начальные позиции MyServo0.write (valGripper); // Задержка захвата (15); MyServo.write (valBase); // базовая задержка (30); MyServo2.write (valShoulder); // задержка плеча (30); MyServo3.write (valElbow); // задержка локтя (300);} void loop () {Serial.print ("Base:"); Serial.print (valBase); Serial.print ("\ t"); Serial.print ("Шоу:"); Serial.print (valShoulder); Serial.print ("\ t"); Serial.print ("Локоть:"); Serial.print (valElbow); Serial.print ("\ t"); Serial.print ("Захват:"); Serial.println (valGripper); // если (Serial.available ()) //Byte=Serial.read (); // читать его // {while (Serial.available ()> 0) {ByteReceived =Serial.read (); switch (ByteReceived) {// ************* LED case 'n':digitalWrite (ledPin, HIGH); // включаем светодиод Serial.println («светодиод горит»); ломать; case 'f':digitalWrite (ledPin, LOW); // выключаем светодиод Serial.println («светодиод не светится»); ломать; // ************* Базовый вариант 'l':MyPosition =MyServo.read () + 2; // L для перемещения базы влево MyServo.write (MyPosition); Serial.print («База»); Serial.print ("\ t"); Serial.println (MyServo.read ()); задержка (15); ломать; case 'r':MyPosition =MyServo.read () - 2; // R для перемещения базы вправо MyServo.write (MyPosition); Serial.print («База»); Serial.print ("\ t"); Serial.println (MyServo.read ()); задержка (15); ломать; // ************* Случай локтя 'u':MyPosition2 =MyServo2.read () + 2; // U для перемещения локтя вверх MyServo2.write (MyPosition2); Serial.print («Локоть»); Serial.print ("\ t"); Serial.println (MyServo2.read ()); задержка (15); ломать; case 'd':MyPosition2 =MyServo2.read () - 2; // D для перемещения локтя вниз MyServo2.write (MyPosition2); Serial.print («Локоть»); Serial.print ("\ t"); Serial.println (MyServo2.read ()); задержка (15); ломать; // ************* Наплечный футляр 'w':MyPosition3 =MyServo3.read () + 2; // W для перемещения плеча вниз MyServo3.write (MyPosition3); Serial.print («Плечо»); Serial.print ("\ t"); Serial.println (MyServo3.read ()); задержка (15); ломать; case 's':MyPosition3 =MyServo3.read () - 2; // S для перемещения плеча вверх MyServo3.write (MyPosition3); Serial.print («Плечо»); Serial.print ("\ t"); Serial.println (MyServo3.read ()); задержка (15); ломать; // ************* Футляр захвата 'o':MyServo0.write (30); // O, чтобы открыть захват Serial.print ("Gripper Open"); Serial.print ("\ t"); Serial.println (MyServo0.read ()); задержка (15); ломать; case 'c':// C, чтобы открыть Gripper MyServo0.write (1); Serial.print («Захват закрывается»); Serial.print ("\ t"); Serial.println (MyServo0.read ()); задержка (15); ломать; // ************* Положение сброса по умолчанию (положение быстрого сброса) case 'q':digitalWrite (ledPin, HIGH); Serial.println ("Активировано отключение по умолчанию!"); Выбирать(); Уронить(); Домой(); digitalWrite (ledPin, LOW); ломать; // ************* Принудительный останов и возврат в исходное положение case 'h':Home (); digitalWrite (ledPin, LOW); ломать; // ************* Автоматические запуски настроения Функция воспроизведения // последовательное чтение Должен быть в следующем формате:1:90 &2:80 &3:180 // место сбора фиксировано, эта функция автоматизирует сброс должность. по умолчанию:digitalWrite (ledPin, HIGH); Serial.println («Автоматическое настроение активировано!»); Выбирать(); Воспроизведение (); Домой(); digitalWrite (ledPin, LOW); ломать; }}} 

Изготовленные на заказ детали и корпуса

f98t2axin238k2n_khGWAEIqdl.skp

Схема


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

  1. Makerarm:супер-крутая роботизированная рука для производителей
  2. Роботизированная рука:как это сделано?
  3. Робототехническое оружие в производстве и его преимущества
  4. Промышленное роботизированное оружие:ключ к производительности
  5. Гидравлический робот-манипулятор в обрабатывающей промышленности:полное руководство
  6. Использование Интернета вещей для удаленного управления манипулятором
  7. Роботизированная рука, напечатанная на 3D-принтере Arduino
  8. Роботизированная рука, управляемая нунчук (с Arduino)
  9. Рынок роботов-манипуляторов вырастет до 14,78 млрд долларов США к 2026 году
  10. Промышленный роботизированный манипулятор — производственный бум