BeamPilot — лазер жжет!
Сразу оговорюсь — проект делался полгода назад, с тех пор детали реализации сильно забылись. Такие вещи надо описывать сразу, пока энтузиазм не пропал и крепчающий склероз не скрыл мелочи. Но так получилось — какие-то мои прошлогодние статьи читателям не особо понравились, и я почти полгода ничего не писал, хотя проектов за это время было — Пушкин со своей Болдинской осенью нервно курит в сторонке.
Вообще лазерных резаков и граверов у меня, как у дурака махорки. Давным-давно был куплен для нужд нашей маленькой фирмы резак с 40-ваттным углекислотным лазером, в то время от стоил в районе 300 евро. Фирма уже давно закрыта, а лазер так и прижился у меня. Вещь полезнейшая — им резали из оргстекла заготовки и корпуса для разных устройств, паяльные трафареты из полиамидной пленки. У лазера специфичные не стандартные команды, поэтому нужно специальное программное обеспечение. Родное не понравилось, а вот «K40 Whisperer» оказалось тем, чем нужно, использовалось постоянно без каких-либо проблем.

Полупроводниковые лазеры в то время углекислотному были не конкуренты от слова совсем, хотя с углекислотным лазером проблем много. Если постоянно пользуешься — нормально, а если выкатываешь время от времени и без гравицапы — нужно обдув зоны реза подключить компрессору, сам лазер требует водяного охлаждения, ну и вытяжку надо подключать — сплошная морока. Калибровка луча, учитывая, что он инфракрасный, тоже занятие не для слабонервных.
С тех пор полупроводниковые лазеры сильно подешевели, фокусируются они лучше и, в итоге, при меньшей общей мощности плотность мощности вполне сравнима.
Кроме того, Banggood время от времени продает восстановленные граверы или пользовательский возврат меньше, чем за 100 евро. Так у меня оказались 10-ваттный Sculpfun S9 и 3-ваттный Sculpfun iCube, о последнем речь и пойдет.

Он бы вроде как и не нужен, и единственная причина, по которой он был куплен — его размеры. Программное обеспечение таких лазеров мне категорически не понравилось, а тащить из мастерской в комнату достаточно большой Sculpfun S9 — неудобно. iCube оказалось самое то — можно поставить на табуретку рядом со столом и спокойно разбираться с программным обеспечением. Кроме того, у него закрытый корпус и вытяжка через фильтры — вонь уже не такая невыносимая, кое-что потестировать можно и в жилой комнате.
Обдув зоны реза у него сделан небольшим вентилятором, тем же, что и охлаждает лазер.
Когда лазер режет или гравирует материал, в зоне работы образуется дым, копоть и мелкие частицы. Они оседают на материале и линзе лазера, ухудшая качество работы. Обдув — это сопло, которое направляет тонкую струю воздуха прямо в точку работы лазера и сдувает весь этот мусор. Родной обдув с этой задачей не справляется совсем. Пришлось брать OpenScad в руки и проектировать специальную насадку, которая была напечатана из фотополимерной смолы. Модель параметрическая: при желании можно изменить диаметры, количество вентиляционных рёбер и другие размеры под свои нужды.

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


Прежде чем говорить о программах, стоит понять, как такого рода лазерный гравер «думает».
Почти любой современный настольный гравер управляется с помощью специального командного языка — G-кода (углекислотного K40 это не касается). Это очень старый стандарт, ещё 50-х годов прошлого века для числового программного управления металлорежущими станками. Команды в нём выглядят примерно так: «переместись в точку X=50, Y=30, двигайся со скоростью 300 мм в минуту, включи лазер на мощности 70%». Тысячи таких строчек, следующих одна за другой, и описывают любую гравюру или рисунок.
Внутри станка стоит небольшой контроллер — в случае большинства любительских граверов это контроллер на базе старого доброго GRBL. Он получает G-код по USB-кабелю, wifi или bluetooth и превращает его в движения моторов и импульсы лазера.
Таким образом, вся «творческая» работа происходит на компьютере: нужно взять рисунок и превратить его в G-код, а потом этот G-код отправить на станок. Именно здесь и возникают все сложности.
Прежде чем браться за собственный инструмент, разумно изучить, что уже есть. Программ для управления лазерными граверами немного, и основных игроков можно пересчитать по пальцам одной руки.
LaserGRBL — самый популярный бесплатный вариант с открытым исходным кодом. Программа простая, запускается быстро, хорошо работает с GRBL-контроллерами. Умеет гравировать растровые изображения и отправлять готовый G-код на станок. Главный минус — она работает только на Windows и фактически не умеет работать с векторными файлами: если нужно вырезать контур из SVG, придётся искать другой инструмент.
LightBurn — признанный стандарт среди любителей и небольших производств. Это полноценная среда: здесь можно не только отправлять задания на станок, но и редактировать векторные рисунки прямо внутри программы, работать со слоями (отдельные настройки мощности для гравировки, резки и разметки), подключать камеру для точного позиционирования заготовки. Поддерживает Windows, macOS и Linux. Минус один, но существенный — это платная программа. Лицензия стоит около 60–100 (мои граверы дешевле 100) долларов в зависимости от типа контроллера; первый год обновления включены, дальше — за доплату. Есть тридцатидневный пробный период.
Inkscape с плагинами — свободный редактор векторной графики, который при установке дополнений умеет генерировать G-код. Формально бесплатно и кроссплатформенно, но это скорее «костыль», чем полноценное решение: плагины нестабильны, настройки разбросаны по разным местам, а сама программа не предназначена для управления станком — только для подготовки файлов.
T2Laser — ещё один платный вариант, ориентированный на фотогравировку. Работает только на Windows, есть ограниченная пробная версия.
Таким образом, если вы на Windows и готовы потратить деньги — LightBurn закрывает большинство задач. Если денег нет или жаба толстая — LaserGRBL справится с простыми заданиями. А если вы на Linux и хотите что-то среднее: не слишком перегруженное, но достаточно функциональное — выбор резко сужается.
Мой BeamPilot — это не попытка создать «убийцу LightBurn». Это набор компактных инструментов, каждый из которых делает одно дело и делает его достаточно хорошо. Код открытый, лицензия MIT — берите, используйте, меняйте под себя. Я сделал, у меня прекрасно работает. Я, если когда и жадничаю — то от чистого сердца. Короче, берите на Github, если надо.

Проект включает несколько самостоятельных инструментов, каждый из которых решает свою задачу. Они созданы для Linux, но логика работы универсальна. Питон он и в Африке питон, никто не запрещает запустить и на Windows, но я этого не делал по религиозным причинам.
BeamPilot — пульт управления станком, для векторных картинок.
Это главная программа с графическим интерфейсом. По смыслу она похожа на пульт управления: показывает, что сейчас делает станок, позволяет загрузить файл с G-кодом и запустить выполнение.

Ключевая особенность — визуализация в реальном времени. На экране отображается «карта» задания: прерывистая линии — пути, по которым лазер движется вхолостую, красная точка — где идёт гравировка или резка. Можно приближать и отдалять карту, следить за текущим положением головки.
Помимо этого, программа умеет «на лету» редактировать G-код перед запуском: масштабировать рисунок, менять скорость и мощность, оптимизировать порядок линий, чтобы лазер меньше гонял вхолостую между элементами рисунка. Последнее особенно полезно: хорошая оптимизация маршрута способна сократить время работы на 30–50%.
Есть и ручное управление — можно двигать головку лазера кнопками, как джойстиком, задавать шаг перемещения, отправлять произвольные команды.
Со стороны программа выглядит, как усеченный bCNC, и я бы его и использовал, но буфер у bCNC мал, и он не может загрузить большие файлы для лазерной резки. В самом начале экспериментов пробовал его использовать, но выжглось только чуть больше половины картинки.

SVG to G-code — конвертер векторной графики.
Если вы хотите вырезать или гравировать контурный рисунок — логотип, орнамент, текст, — то исходный файл, скорее всего, будет в формате SVG. Это векторный формат: вместо точек-пикселей в нём хранятся математические описания кривых и форм. Именно такой формат удобен для лазерной резки, потому что лазер и движется по кривым, а не по точкам.

Проблема в том, что SVG — это формат для экрана, а G-код — для станка. Между ними нужен переводчик.
SVG to G-code как раз им и является. Программа читает SVG-файл, разбирает все его линии, кривые и трансформации, а потом генерирует G-код, который заставит лазер пройти точно по тем же путям. При этом можно задать скорость движения, мощность лазера, масштаб и степень оптимизации маршрута.

imGlaser — гравировка фотографий и растровых изображений
Контурная резка — это одно. Но что если хочется выгравировать фотографию или полутоновый рисунок? Здесь задача куда сложнее.
Лазер — бинарный инструмент: он либо включён, либо выключен. Чтобы передать оттенки серого, используется хитрость: лазер очень быстро включается и выключается, проходя горизонтальными строчками по материалу — почти как печатающая головка принтера. Тёмные места обжигаются сильнее (лазер дольше включён), светлые — слабее. В общем, несколько упрощенное описания, для управления лазером используется ШИМ, но это то же самое — быстро-быстро включил-выключил.

imGlaser берёт обычную фотографию в форматах JPG, PNG или BMP, позволяет подправить яркость и контраст, а затем переводит её в G-код для построчной гравировки. Есть и режим калибровки: программа гравирует специальную тестовую сетку с разными комбинациями мощности и скорости, чтобы можно было выбрать оптимальные параметры для конкретного материала.

Управление станком также интегрировано: можно двигать головку, следить за выполнением, останавливать и возобновлять работу.
Почему у этой программы свое управление станком, а не используется другая программа из пакета? Главная причина — при растровой гравировке нужна очень высокая скорость управления, если поток кодов прерывается — головка тормозится, что при этом получится с прожигом — одному Богу известно. Но его это, я так думаю, не интересует. Поэтому надо использовать особенность GRBL контроллера — у него есть небольшой буфер команд, его нужно заполнять заранее, но следить, чтобы не переполнился. GRBL информации о заполнении буфера не предоставляет, так что все ручками и на свой страх и риск.
Вспомогательные скрипты
Помимо основных программ, в проекте есть несколько небольших утилит командной строки для пакетной обработки G-кода:
fix_power — добавляет правильные команды включения и выключения лазера вокруг холостых перемещений (бывает нужно, когда G-код сгенерирован другой программой с ошибками);
adj_power — масштабирует мощность лазера во всём файле;
adj_speed — масштабирует скорости перемещения;
scale_gcode — масштабирует размер задания под нужные габариты;
optimize_gcode — оптимизирует порядок обхода путей, уменьшая холостые перемещения.
Эти утилиты удобны для автоматизации: их можно встроить в любой рабочий процесс или объединять в цепочки.
Ну вроде как и все на этом, постарался изложение излишне не усложнять, кому хочется сложностей — идет на Github за исходниками. Меня спрашивать о деталях практически бесполезно — прошло уже полгода, возраст и склероз дают о себе знать.
| +32 |
2399
77
|
| +122 |
3508
109
|
| +77 |
3898
74
|
Использую LaserGRBL для изготовления печатных плат в растровом режиме, но она поддерживает и векторную графику, видимо это более новая версия.
Купил маленький ACMER S1 специально для того, чтобы засвечивать платы, и никак не получается: дорожки и площадки «слимаются» при малых зазорах… Купил лазер 405 нм 0,5 Вт с фокусировкой (ну так, гайка болтается, подматывал ФУМ-ленту) — не сильно лучше. Вероятно, жёсткости ему не хватает, да и боковое пятно засветки велико.
Хоть краску, хоть тот же фоторезист сначала нанесите на всю заготовку, а лишнее сожгите тем же лазером. Так если и будет погрешность фокуса, то она гарантирует что две соседних дорожки не сольются.