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

Превращаем DIY SCARA-робота в точный лазерный гравер на Arduino

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

Обзор проекта

SCARA-робот имеет 4 степени свободы, привод — 4 шаговых двигателя NEMA 17, управление — Arduino. В оригинале использовал Arduino UNO + CNC Shield, теперь — Arduino MEGA + RAMPS, так как будем прошивать прошивку Marlin для 3D-принтеров.

Превращаем DIY SCARA-робота в точный лазерный гравер на Arduino

Механически: заменяю захват на лазерный модуль (5.5 Вт — достаточно для гравировки).

Крутая фишка: большой ход по Z — можно гравировать высокие объекты.

Превращаем DIY SCARA-робота в точный лазерный гравер на Arduino

Рабочая зона впечатляет для такого габарита: перед роботом и по бокам. Можно охватить почти 360° вокруг — благодаря поддержке SCARA и лазера в открытой прошивке Marlin.

Превращаем DIY SCARA-робота в точный лазерный гравер на Arduino

G-код генерирую в Inkscape с плагином Inkscape-Lasertools: контуры, заполнение, настройка луча, скоростей, PWM-управление лазером.

Превращаем DIY SCARA-робота в точный лазерный гравер на Arduino

Теперь по шагам: конструкция SCARA, установка и настройка Marlin, подготовка чертежей и G-кода. Поехали.

Конструкция и 3D-модель

Быстрый взгляд на 3D-модель, если не видели оригинальный урок.

Превращаем DIY SCARA-робота в точный лазерный гравер на Arduino

Робот спроектирован для 3D-печати. Суставы — NEMA 17 + ремни GT2 + печатаемые шкивы. 4 DOF, но для гравировки нужно 3: два поворота для XY и линейный ход Z. 4-й сустав (поворот эффектора) не используется, но лазер закреплен на нем так, что луч проходит через центр вращения — поворот не смещает точку попадания.

Превращаем DIY SCARA-робота в точный лазерный гравер на Arduino
Превращаем DIY SCARA-робота в точный лазерный гравер на Arduino

Модель на Thangs:

Скачать сборку с Thangs.

Спасибо Thangs за поддержку.

STL для печати:

Спонсор


Разрабатывал в 3DEXPERIENCE SOLIDWORKS for Makers — спонсор видео. SOLIDWORKS наконец доступен мейкерам за $99/год, а для моих зрителей — со скидкой 20% по ссылке ниже.

Превращаем DIY SCARA-робота в точный лазерный гравер на Arduino

В комплекте: облачный SOLIDWORKS, браузерные 3D Creator и 3D Sculptor.

Превращаем DIY SCARA-робота в точный лазерный гравер на Arduino

Перейдите по ссылке, создайте бесплатный 3DEXPERIENCE ID и получите скидку. Спасибо SOLIDWORKS за поддержку образовательного контента.

Проверить SOLIDWORKS for makers

20% off SOLIDWORKS for makers


Установка лазерного модуля

Снимаю захват (4 болта).

Превращаем DIY SCARA-робота в точный лазерный гравер на Arduino

Провода от сервы захвата пойдут на лазер.

Превращаем DIY SCARA-робота в точный лазерный гравер на Arduino

Мой лазер — 12V, PWM, два провода: GND (черный) и VCC (белый). Паяю к ним мамы для разъема эффектора. Вставляю разъем, вывожу провод через отверстие держателя, креплю лазер двумя болтами M3. К роботу — четырьмя болтами M4.

Превращаем DIY SCARA-робота в точный лазерный гравер на Arduino

Вместо Arduino UNO — Arduino MEGA + RAMPS.

Превращаем DIY SCARA-робота в точный лазерный гравер на Arduino

Ставлю перемычки на драйверах для максимального микрошага (A4988 — 1/16, DRV8825 — 1/32). Подключаю все провода — они были промаркированы.

Схема подключения SCARA лазерного гравера

Превращаем DIY SCARA-робота в точный лазерный гравер на Arduino

Драйверы над моторами, концевые выключатели (NC, 2 провода) на пины S и – каждого конца. Лазер на pin D9 (PWM, как вентилятор в 3D-принтере). Питание — 12V, мин. 3А.

Компоненты:

Механика — в оригинальной статье.

Собрал, аккуратно уложил провода, закрыл электронику.

Превращаем DIY SCARA-робота в точный лазерный гравер на Arduino

Финал сборки

Нужно изменить срабатывание концевого выключателя второго плеча. Робот работает как правосторонний — парковка второго плеча в 0° (в линии с первым), вращение влево. Приклеил маленький кусочек на плечо, чтобы выключатель срабатывал в нужной позиции.

Превращаем DIY SCARA-робота в точный лазерный гравер на Arduino

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

Превращаем DIY SCARA-робота в точный лазерный гравер на Arduino
Превращаем DIY SCARA-робота в точный лазерный гравер на Arduino

Механика готова. Осталось прошить Arduino.

См. также: DIY манипулятор Arduino с управлением со смартфона

Прошивка Marlin для лазерной гравировки на SCARA

Использую Marlin — популярную открытую прошивку для 3D-принтеров с поддержкой лазера и SCARA. Скачать с официального сайта или GitHub.

Превращаем DIY SCARA-робота в точный лазерный гравер на Arduino

Прошиваю через PlatformIO IDE (на базе VS Code), а не Arduino IDE — Marlin велик и сложен, Arduino IDE может выдавать ошибки компиляции.

Превращаем DIY SCARA-робота в точный лазерный гравер на Arduino

Ставлю VS Code, расширение PlatformIO. Открываю папку Marlin через «Open Project».

Превращаем DIY SCARA-робота в точный лазерный гравер на Arduino
Превращаем DIY SCARA-робота в точный лазерный гравер на Arduino

Главные файлы конфигурации — Configuration.h и Configuration_adv.h.

Превращаем DIY SCARA-робота в точный лазерный гравер на Arduino

Сначала лучше взять готовые конфиги для SCARA из репозитория конфигураций Marlin на GitHub: папка Examples → SCARA, копирую два файла в свою папку Marlin.

См. также: Как настроить GRBL и управлять станком с ЧПУ на Arduino

Настройка прошивки Marlin

Открываю Configuration.h с загруженными конфигами SCARA. Выбираю тип робота.

/** * MORGAN_SCARA — параллельный SCARA (QHARLEY, 2012-2013) */ //#define MORGAN_SCARA /** * MP_SCARA — последовательный SCARA (Tyler Williams) */ #define MP_SCARA #if EITHER(MORGAN_SCARA, MP_SCARA) #define SCARA_SEGMENTS_PER_SECOND 100 #define SCARA_LINKAGE_1 228.15 // Длина плеча 1 (мм) #define SCARA_LINKAGE_2 136.2  // Длина плеча 2 (мм) #define SCARA_OFFSET_X 300 // Смещение базы по X (мм) #define SCARA_OFFSET_Y 150 // Смещение базы по Y (мм)

MP_SCARA — наш случай (последовательный). Реализует обратную кинематику для G-кода декартовой системы. Обратная кинематика вычисляет углы плеч для заданных X,Y — тригонометрия, зависящая только от длин плеч.

Превращаем DIY SCARA-робота в точный лазерный гравер на Arduino

Задаю длины: 228 мм и 136.5 мм. Задаю нулевую точку стола (SCARA_OFFSET_X/Y) — расстояние от базы (первого сустава) до нуля стола.

Нужны MANUAL_X_HOME_POS и MANUAL_Y_HOME_POS — координаты эффектора (лазера) в парковке относительно нуля стола. Получаю их в SOLIDWORKS: рисую два отрезка-плеча, выставляю нуль стола, читаю координаты.

Превращаем DIY SCARA-робота в точный лазерный гравер на Arduino

Концевые выключатели — по одному на ось, в минимуме.

#define USE_XMIN_PLUG #define USE_YMIN_PLUG #define USE_ZMIN_PLUG

Направление парковки — MIN (-1).

#define X_HOME_DIR -1 #define Y_HOME_DIR -1 #define Z_HOME_DIR -1

Проверяю, что все *_MIN_ENDSTOP_INVERTING = false.

Корректирую DEFAULT_AXIS_STEPS_PER_UNIT — шаги на единицу (градус для осей вращения, мм для Z).

#define DEFAULT_AXIS_STEPS_PER_UNIT { 177.7777777, 142.2222222, 400, 93 }

Расчет: NEMA 17 — 200 шагов/оборот. При 1/16 шага — 3200 шагов/оборот. 1-й сустав: редукция 20:1 → 64000 шагов/оборот. /360 = 177.777 шаг/градус. 2-й: 16:1 → 142.222. Z: винт 8 мм шаг → 3200/8 = 400 шаг/мм. 4-е значение — экструдер, не используется.

Превращаем DIY SCARA-робота в точный лазерный гравер на Arduino

Направление моторов — по подключению проводов. Если наоборот — либо перекинуть провода, либо INVERT_X_DIR = true.

#define INVERT_X_DIR false #define INVERT_Y_DIR false #define INVERT_Z_DIR false

Есть баги в SCARA-режиме Marlin (мало интереса — мало поддержки). Мои правки: в scara.cpp строка 75 — MORGAN_SCARA → MP_SCARA; в motion.cpp закомментировал строки 1716-1717; в Configuration.h закомментировал VALIDATE_HOMING_ENDSTOPS; в Configuration_adv.h раскомментировал QUICK_HOME.

Даже с правками парковка работала не идеально — опишу обходной путь ниже.

Загружаю прошивку кнопкой Upload (слева внизу). Мой вариант Marlin с правками можно скачать ниже, либо сделать всё самому по инструкции.

ПО управления — Repetier-Host

Прошивка загружена. Нужен софт для отправки G-кода. Выбираю Repetier-Host — популярный бесплатный софт для 3D-печати.

Превращаем DIY SCARA-робота в точный лазерный гравер на Arduino

Выбираю COM-порт, Baud Rate из прошивки. Во вкладке Printer Shape — X/Y max и область печати. Подключаюсь. Во вкладке Manual Control пробую двигать.

Превращаем DIY SCARA-робота в точный лазерный гравер на Arduino

При нажатии стрелок X/Y робот может вести себя странно — сразу включается обратная кинематика, двигаются оба плеча.

Сначала — парковка (Home). Руками подводим суставы к концевым выключателям.

Превращаем DIY SCARA-робота в точный лазерный гравер на Arduino

Жму Home: 2-й плечо едет к своему выключателю, 1-й — в противоположную сторону. Когда 2-й сработает, 1-й поедет к своему. Потом Z.

После парковки робот может глючить при любых командах. Лекарство: отключить и снова подключить в софте.

Теперь ручное управление и гравировка работают. Баг Marlin в SCARA-режиме.

Команда G00 X0 Y0 ведет лазер в нуль (заданный в Configuration.h).

Превращаем DIY SCARA-робота в точный лазерный гравер на Arduino

Включаю лазер: M106 S10 (PWM 0-255 = 0-100%). S10 — видно, но не жжет, можно сфокусировать.

Превращаем DIY SCARA-робота в точный лазерный гравер на Arduino

Фокус: кручу линзу лазера, дистанция ~5 см, ищу минимальную точку.

Лазерная гравировка на SCARA-роботе

Калибровка: гравирую простой квадрат.

Превращаем DIY SCARA-робота в точный лазерный гравер на Arduino

Первый раз квадрат кривой — ошибся в MANUAL_X_HOME_POS. Исправил — квадрат стал правильным.

Гравю логотип.

Превращаем DIY SCARA-робота в точный лазерный гравер на Arduino

ОБЯЗАТЕЛЬНО очки для лазера — УФ вреден для глаз. Респиратор и вентиляция — пары опасны.

Логотип получился хорошо, но не идеально квадратный.

Превращаем DIY SCARA-робота в точный лазерный гравер на Arduino

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

Превращаем DIY SCARA-робота в точный лазерный гравер на Arduino

После десятков тестов скорректировал длины: 228 → 228.15 мм (1-е плечо), 136.5 → 136.2 мм (2-е). Квадрат стал точным. Точность всё равно зависит от позиции — при вытянутых плечах хуже.

Генерация G-кода для лазерной гравировки

Подготовка чертежей в Inkscape (векторный редактор).

Размер страницы = рабочая область. Пример — логотип Arduino.

Превращаем DIY SCARA-робота в точный лазерный гравер на Arduino

Импортирую картинку → Trace Bitmap → вектор. Плагин Inkscape-Lasertools (с GitHub, файлы в папку extensions Inkscape).

Extensions → Lasertools → настройки. Лазер на pin D9 → команда M106. Выбираю: только контуры или с заполнением. Задаю скорости перемещения, заполнения, контуров. PWM для заполнения: M106 S128 (50%). Можно вместо PWM увеличить скорость заполнения. Настройки подбираются экспериментально.

Превращаем DIY SCARA-робота в точный лазерный гравер на Arduino

Preferences: Remove tiny infill paths. Bounding Box: Generate G-Code for bounding box preview — полезно, показывает область гравировки для позиционирования заготовки.

Генерирую G-код, загружаю в Repetier-Host. Галочка «Show Travel Moves» — превью траекторий.

Превращаем DIY SCARA-робота в точный лазерный гравер на Arduino

Жму Print — робот гравирует. Замечательно смотреть.

Превращаем DIY SCARA-робота в точный лазерный гравер на Arduino

Регулируемый Z — гравирую высокие объекты. Пример: деревянная коробка для фрез — лого спереди, надпись «Forstner bits» сзади.

Превращаем DIY SCARA-робота в точный лазерный гравер на Arduino

Пример: силуэт Бэтмена — только контуры и с заполнением.

Превращаем DIY SCARA-робота в точный лазерный гравер на Arduino

С заполнением дольше, но выглядит лучше.

Крупный рисунок 600×450 мм.

Превращаем DIY SCARA-робота в точный лазерный гравер на Arduino

Ставлю робота на заготовку — он охватывает перед и бока. Выравниваю вручную.

Превращаем DIY SCARA-робота в точный лазерный гравер на Arduino

В Marlin: нуль в левом нижнем углу заготовки, 300 мм по X и 150 мм по Y от робота. Меняю MANUAL_X/Y_HOME_POS соответственно.

Прошиваю, паркую, посылаю лазер в нуль, включаю лазер (M106 S10) — довожу ориентацию заготовки. Прямыми движениями G01 проверяю и поправляю позицию.

В Inkscape делаю шаблон этой компоновки — вижу зону досягаемости, обрезаю рисунок под неё.

Превращаем DIY SCARA-робота в точный лазерный гравер на Arduino

Картинку → Trace Bitmap → вектор. Масштабирую, позиционирую, стираю зоны, где робот и где не доходит.

Превращаем DIY SCARA-робота в точный лазерный гравер на Arduino
Превращаем DIY SCARA-робота в точный лазерный гравер на Arduino

Генерирую G-код, запускаю. 4 часа гравировки.

Превращаем DIY SCARA-робота в точный лазерный гравер на Arduino

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

Превращаем DIY SCARA-робота в точный лазерный гравер на Arduino

Метод требует настройки, но работает отлично. Результат нравится.

Итоги

Несмотря на проблемы с прошивкой, нашел обходные пути. Гравировка далеко от идеала.

Превращаем DIY SCARA-робота в точный лазерный гравер на Arduino

Робот нежесткий, есть люфты — нет плавных точных движений. Но знания применимы к любому SCARA — можно сделать лучше.

Надеюсь, урок понравился. Вопросы — в комментариях. Смотрите коллекцию проектов на Arduino.

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

  1. Ретро-часы на индикаторах Numitron с Arduino: просто, надёжно, экономно
  2. Робот-ускользатор на сервоприводе: сборка на Arduino и HC-SR04
  3. Управление Roomba Create 2 через Arduino и Android: пошаговое руководство
  4. Сборка вольтметра на Arduino с дисплеем Nokia 5110 — Пошаговое руководство
  5. MobBob: Самостоятельная сборка Arduino-робота под управлением Android-смартфона
  6. Сборка точного измерительного колеса на Arduino Nano и вращательном энкодере
  7. Точный монитор качества воздуха на датчике Sharp GP2Y1010AU0F
  8. 1D Pong на Arduino и ленте WS2812: пошаговое руководство
  9. DIY манипулятор, управляемый жестами руки: пошаговая сборка на Arduino
  10. Управление манипулятором LittleArm через Android-приложение по Bluetooth