Автоматизированная манипулятор для пайки: точность, скорость, руководство по сборке
Компоненты и материалы
| Шаговый двигатель 28BYJ-48 с драйвером ULN2003 | ×1 |
| Arduino UNO | ×1 |
| Сервопривод TowerPro MG955 | ×1 |
| I2C LCD 1602 (модуль с I2C-адаптером) | ×1 |
| Step-down модуль (понижающий преобразователь) | ×1 |
| NEMA 17 Stepper Motor (OpenBuilds) | ×1 |
Инструменты
- Лазерный резак
- Набор фрез для Dremel (ротационная инструмент)
Приложения и ПО
- Arduino IDE
- Microsoft Visual Studio 2015 (для сопутствующего ПО)
О проекте
Введение
Идея пришла случайно при изучении возможностей манипуляторов. Область автоматизированной пайки/сварки мало охвачена открытыми проектами. Предыдущий опыт похожих проектов помог, но этот получился максимально полезным и эффективным.
Перед дизайном изучал промышленные решения и open-source проекты — помогли найти правильную форму. Важно: визуальное восприятие мозгом определяет эргономику.
Шаг 1: Проектирование
Сначала смотрел профи проекты — слишком сложны для повторения. Решил сделать свой, вдохновленный ими, в Google SketchUp 2017 Pro. Каждая деталь спроектирована для сборки в строгом порядке.
Виртуальная 3D-модель итогового устройства в натуральную величину — гайд для выбора паяльника и проверки габаритов.
Шаг 2: Эксплуатация и проблемы
1. Ручки слишком тяжелые для малых шаговых. Исправили в следующей версии лазерной резки.
2. Высокое трение вращающейся базы (пластик на пластике) — движения рывками. Первое решение: купить более мощный шаговый и переделать базу. Не помогло — трение пластика + невозможность точной настройки тока драйвера (настройка по напряжению на реф. пине, а не «на глаз»).
Второе решение: полностью переработать базу — поставить металлическое шестеренчатое серво вместо шестеренного механизма.
3. Питание
Arduino можно питать: DC джек (7-12V), USB (5V), VIN (7-12V). Подача на 5V/3.3V обходит стабилизатор. Купили специальный USB-кабель с 5V от ПК/БП. Все компоненты работают от 5V — поставили step-down модуль (buck converter) для стабильности.
Шаг 3: Модификации
Уменьшили размеры рук, сделали отверстие под шестерню сервопривода. Серво с металлической шестерней крутит вес 180° корректно — высокий крутящий момент.
I2C для LCD — удобно: 2 пина, до 8 устройств на одной шине. Минус: нужно использовать hardware I2C пины.
Шаг 4: Крепление паяльника (гриппер)
Металлическое серво держит вес паяльника. Проблема: дрожание/вибрация сервы. Решение — ограничение углов в коде:
servo.attach(9, 1000, 2000);
servo.write(constrain(angle, 10, 160));
Не все сервы дают полные 180°. Метод: servo.writeMicroseconds() (диапазон 1000-2000, многие работают 600-2400). Подбирайте значения до появления жужжания (конец хода). Устанавливайте лимиты в servo.attach(pin, min, max). Функция constrain() предотвращает выход за пределы.
Шаг 5: Программирование
Arduino расширяется библиотеками. Используемые:
#include <AccelStepper.h>
#include <MultiStepper.h>
#include <Servo.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
Код (управление шаговиками X, Y, Z)
#include "AccelStepper.h"
AccelStepper stepperX(1, 2, 3); // 1=EasyDriver, Pin2=STEP, Pin3=DIR
AccelStepper stepperZ(1, 5, 6); // Pin5=STEP, Pin6=DIR
AccelStepper stepperY(1, 7, 8); // Pin7=STEP, Pin8=DIR (Note: было 7,8,9 в оригинале, исправлено)
long TravelX, TravelZ, TravelY;
int move_finished = 1;
void setup() {
Serial.begin(9600);
Serial.println("Enter Travel distance separated by comma: X,Z,Y");
Serial.print("Enter Move Values Now: ");
stepperX.setMaxSpeed(500); stepperX.setAcceleration(500);
stepperZ.setMaxSpeed(250); stepperZ.setAcceleration(250);
stepperY.setMaxSpeed(250); stepperY.setAcceleration(250);
}
void loop() {
while (Serial.available() > 0) {
move_finished = 0;
TravelX = Serial.parseInt(); Serial.print(TravelX); Serial.print(" X Travel, ");
TravelZ = Serial.parseInt(); Serial.print(TravelZ); Serial.print(" Z Travel, ");
TravelY = Serial.parseInt(); Serial.print(TravelY); Serial.println(" Y Travel");
stepperX.moveTo(TravelX);
stepperZ.moveTo(TravelZ);
stepperY.moveTo(TravelY);
delay(1000);
Serial.print("Moving Steppers into position...");
}
if ((stepperX.distanceToGo() != 0) || (stepperZ.distanceToGo() != 0) || (stepperY.distanceToGo() != 0)) {
stepperX.run(); stepperZ.run(); stepperY.run();
}
if ((move_finished == 0) && (stepperX.distanceToGo() == 0) && (stepperZ.distanceToGo() == 0) && (stepperY.distanceToGo() == 0)) {
Serial.println("COMPLETED!");
Serial.println("");
Serial.println("Enter Next Move Values (0,0,0 for reset): ");
move_finished = 1;
}
}
Схемы
Производственный процесс
- Makerarm: универсальный настольный робот-манипулятор для мейкеров
- Проектирование точных приводов двигателей для передовых робототехнических систем
- Infineon представляет IMC300 контроллер двигателя с интегрированным Arm Cortex-M0 для повышенной гибкости
- Trinamic и Maxim Integrated выпускают референс-дизайн для ускорения end-of-arm tooling в промышленной робототехнике
- Как создаются манипуляторы роботов: проектирование и функции
- Как промышленные манипуляторы трансформируют производство: ключевые преимущества
- Сервоприводы в роботизированных руках: принцип работы, преимущества и влияние
- Ячейки ABB FlexLoader: автоматизация обслуживания деталей для эффективности и снижения затрат
- Рынок SCARA-роботов достигнет $14,78 млрд к 2026 году, стимулируя рост автоматизации
- Промышленные роботы-манипуляторы: Движущая сила производственной революции