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

Автоматизированная роботизированная рука для пайки

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

Шаговый двигатель 28BYJ-48 с модулем драйвера ULN2003
× 1
Arduino UNO
× 1
Серводвигатель TowerPro MG955
× 1
МОДУЛЬ ПОСЛЕДОВАТЕЛЬНОГО ЖК-дисплея 1602 I2C
× 1
Модуль Stepdown
× 1
Шаговый двигатель OpenBuilds NEMA 17
× 1

Необходимые инструменты и машины

Лазерный резак (универсальный)
Набор насадок для вращающихся инструментов для Dremel

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

IDE Arduino
Microsoft Visual Studio 2015

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

Введение

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

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

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

Это из-за науки, которая стоит за визуальным питанием нашего мозга.

Шаг 1. Дизайн

Сначала я увидел множество профессиональных проектов, которые не удалось реализовать из-за их сложности.

Затем я решил попробовать создать свой собственный продукт, вдохновленный другими проектами, поэтому я использовал Google Sketch up 2017 pro. Каждая часть была разработана для сборки рядом друг с другом в определенном порядке, как показано на следующем рисунке.

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

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

Шаг 2. Эксплуатация и установка

В процессе работы я столкнулся с некоторыми препятствиями, о которых мы должны объявить.

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

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

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

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

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

3. напряжение

Плата Arduino может получать питание от разъема питания постоянного тока (7–12 В), USB-разъема (5 В) или от контакта VIN платы (7–12 В). Подача напряжения через контакты 5 В или 3,3 В в обход регулятора, и мы решили купить специальный USB-кабель, который поддерживает 5 В от ПК или любого источника питания.

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

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

Шаг 3. Изменения

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

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

Также было приятно использовать I2c, потому что он использует только два контакта, и вы можете подключить несколько устройств i2c к одним и тем же двум контактам. Так, например, у вас может быть до 8 рюкзаков с ЖК-дисплеями + ЖК-дисплеи на двух контактах! Плохая новость в том, что вам придется использовать «аппаратный» вывод i2c.

Шаг 4. Держатель или захват для паяльника

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

  servo.attach (9, 1000, 2000); servo.write (constrain (angle, 10, 160));  

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

Потому что не все сервоприводы могут вращаться на 180 градусов. Многие этого не делают.

Итак, мы написали тест, чтобы определить, где находятся механические ограничения. Используйте servo.write Microseconds вместо servo.write. Мне это нравится больше, потому что он позволяет вам использовать 1000–2000 в качестве базового диапазона. И многие сервомашинки будут поддерживать диапазон от 600 до 2400.

Итак, мы попробовали разные значения и посмотрим, откуда у вас появятся слухи, говорящие о том, что вы достигли предела. Тогда только оставайтесь в этих пределах, когда пишете. Вы можете установить эти ограничения при использовании servo.attach (pin, min, max)

Найдите истинный диапазон движения и убедитесь, что код не пытается протолкнуть его за крайние упоры, для этого полезна функция Arduino constrain ().

Шаг 5. Кодирование

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

  #include AccelStepper.h # include MultiStepper.h # include Servo.h # include Wire.h #include LiquidCrystal_I2C.h  

Код

  • Степперы X Y Z код
Степперы X Y Z код Arduino
 #include "AccelStepper.h" // AccelStepper SetupAccelStepper stepperX (1, ​​2, 3); // 1 =интерфейс Easy Driver // Контакт 2 UNO подключен к контакту STEP Easy Driver // Контакт 3 UNO подключен к контакту DIR Easy Driver AccelStepper stepperZ (1, 5, 6); // 1 =интерфейс Easy Driver // Вывод 5 UNO подключен к выводу STEP Easy Driver // Вывод 6 UNO подключен к выводу DIR Easy DriverAccelStepper stepperY (7, 8, 9); // 1 =Интерфейс Easy Driver // Вывод 5 UNO подключен к выводу STEP Easy Driver // Вывод 6 UNO подключен к выводу DIR Easy Driver // Переменные шагового хода long TravelX; // Используется для хранения значения X, введенного в Serial Monitorlong TravelZ; // Используется для хранения значения Z, введенного в Serial Monitorlong TravelY; // Используется для хранения значения Y, введенного в Serial Monitorint move_finished =1; // Используется для проверки завершения перемещенияvoid setup () {Serial.begin (9600); // Запуск последовательного монитора со скоростью 9600 бод // Распечатка инструкций на последовательном мониторе при запуске Serial.println («Введите расстояние перемещения через запятую:X, Z»); Serial.print ("Enter Move Values ​​Now:"); // Устанавливаем максимальную скорость и ускорение каждого шагового двигателя stepperX.setMaxSpeed ​​(500.0); // Устанавливаем максимальную скорость шага оси X X.setAcceleration (500.0); // Ускорение оси X stepperZ.setMaxSpeed ​​(250.0); // Устанавливаем максимальную скорость оси Z медленнее для вращения stepperZ.setAcceleration (250.0); // Ускорение оси Z stepperY.setMaxSpeed ​​(250.0); // Устанавливаем максимальную скорость оси Y медленнее для вращения stepperY.setAcceleration (250.0); // Ускорение оси Y} void loop () {while (Serial.available ()> 0) {// Проверяем, доступны ли значения в последовательном буфере move_finished =0; // Устанавливаем переменную для проверки хода степперов TravelX =Serial.parseInt (); // Поместите первое числовое значение из буфера в переменную TravelX Serial.print (TravelX); Serial.print («X Travel,»); TravelZ =Serial.parseInt (); // Помещаем второе числовое значение из буфера в переменную TravelZ Serial.print (TravelZ); Serial.print («Z Travel,»); TravelY =Serial.parseInt (); // Помещаем второе числовое значение из буфера в переменную TravelY Serial.print (TravelY); Serial.println («Путешествие Y»); stepperX.moveTo (TravelX); // Устанавливаем новое положение перемещения для X Stepper stepperZ.moveTo (TravelZ); // Устанавливаем новое положение перемещения для Z Stepper stepperY.moveTo (TravelY); // Устанавливаем новую позицию перемещения для Z Stepper delay (1000); // Подождите 1 секунду перед перемещением шаговых двигателей Serial.print ("Перемещение шаговых двигателей в положение ..."); } // Проверяем, достигли ли Степперы желаемой позиции if ((stepperX.distanceToGo ()! =0) || (stepperZ.distanceToGo ()! =0) || (stepperY.distanceToGo ()! =0)) {stepperX .бегать(); // Перемещаем шаговый двигатель X в положение stepperZ.run (); // Перемещаем шаговый двигатель Z в положение stepperY.run (); // Переместить шаговый двигатель y в положение} // Если перемещение завершено, отобразить сообщение на последовательном мониторе if ((move_finished ==0) &&(stepperX.distanceToGo () ==0) &&(stepperZ.distanceToGo () ==0) &&(stepperY.distanceToGo () ==0)) {Serial.println ("ВЫПОЛНЕНО!"); Serial.println (""); Serial.println («Введите значения следующего хода (0,0,0 для сброса):»); // Готовимся к новым значениям последовательного монитора move_finished =1; // Сбрасываем переменную перемещения}} 

Схема


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

  1. Makerarm:супер-крутая роботизированная рука для производителей
  2. Разработка элементов управления двигателями для роботизированных систем
  3. Контроллер мотора объединяет ядро ​​Arm Cortex-M0
  4. Эталонный дизайн упрощает управление двигателем промышленного робота
  5. Роботизированная рука:как это сделано?
  6. Робототехническое оружие в производстве и его преимущества
  7. Сервомотор для роботизированной руки:что произойдет?
  8. Роботизированные модули обеспечивают автоматизированное обслуживание деталей
  9. Рынок роботов-манипуляторов вырастет до 14,78 млрд долларов США к 2026 году
  10. Промышленный роботизированный манипулятор — производственный бум