Страница 1 из 3

Программа для лазерных граверов на grbl

Добавлено: 03 мар 2017, 08:43
ASPtr
Решил поделиться с уважаемой публикой своей небольшой программкой для генерации G-кода. Возможно, будет кому-то полезна.
Писалось это исключительно "под себя" и под свои нужды, соответственно проверена в работе только на выжигателе с grbl-контролером.
Выглядит примерно так:
laser.jpg (63620 просмотров) <a class='original' href='./download/file.php?id=104861&mode=view' target=_blank>Загрузить оригинал (82.41 КБ)</a>
Интерфейс в стиле "аля микшерский пульт", чем больше крутилок на квадратный сантиметр, тем лучше ))

Предназначена, в основном, для выжигания черно-белых рисунков типа логотипов и фотографий точками. Полутоновый режим тоже есть, но особо не тестировался.
Вот пример визуализации кода для выжигания сплошными линиями (включение на черном), движение "змейкой", белые поля по краям пропускаются:
screen.jpg (63620 просмотров) <a class='original' href='./download/file.php?id=104862&mode=view' target=_blank>Загрузить оригинал (238.27 КБ)</a>
Есть четыре режима:
1. Выжигание сплошными линиями (включение на черном)
2. Выжигание точками. Чтобы работала задержка в точке с включенным лазером, в grbl нужно отключить "laser mode" - $32=0
3. Выжигание с оттенками с помощью изменения мощности.
4. Выжигание с оттенками с помощью изменения скорости.
В каждом режиме есть дополнительные опции. В двух последних доступны профили, что-то типа эквалайзера.
Настройки сохраняются в файлике setting.ini в каталоге с программой. Если "что-то пошло не так", файлик можно снести и должны загрузится настройки по-умолчанию (по идее).
Основным и скорее всего, единственным )) достоинством данной программы является её размер в 100k, ну и то, что она вроде работает.
Недостатков же значительно больше:
1) Отсутствует графический редактор, от слова "совсем". Так исторически сложилось, что исходник всегда готовил в стороннем редакторе. Так и проще, и возможностей гораздо больше.
Впрочем в первых двух режимах есть примитивная постеризация, типа всё что темнее 128, то черное, что сетлее, то белое.
2) Работает только с растровыми рисунками формата "bmp" 24bit.
3) Написано это все на древнючем VB6 (гусары молчать), и поэтому в зависимости от древности вашей ОС и списка установленных программ может ругаться на отсутствие компонента MSCOMCTL.OCX или COMDLG32.OCX или обоих сразу. Почитать про них можно здесь:
http://set-os.ru/mscomctl-ocx-windows/
http://microsin.net/adminstuff/windows/ ... valid.html
Файлики и батник для регистрации в системе приложу в конце. (запускать от имени администратора, для 32 и 64 разрядных систем - разные)
4) Развивать программку не планирую. Исправить критичные баги постараюсь (если кого заинтересует).
Исходники выложить можно, но неудобно - автор "не настоящий сварщик" и последний раз программировал примерно тогда, когда VB6 и вышел ))

Изобразил тут картинку с пояснениями. Хотя, надеюсь, и так должно быть всё понятно.
help.jpg (63620 просмотров) <a class='original' href='./download/file.php?id=104864&mode=view' target=_blank>Загрузить оригинал (165.86 КБ)</a>
Сама программа:
LaserDot.rar
(25.4 КБ) 7713 скачиваний
Компоненты:
components.rar
(453.59 КБ) 5692 скачивания
Актуальная версия в посте #19

Re: Программа для лазерных граверов на grbl

Добавлено: 03 мар 2017, 09:21
selenur
Вчера дописал функцию в своей программе, которая позволяет любой рисунок имеющий 1,4,8,32 бит на пиксель преобразовывать в рисунок с 24 битами, если нужно могу поделиться, правда написано на C#.

Re: Программа для лазерных граверов на grbl

Добавлено: 03 мар 2017, 09:27
selenur
ASPtr писал(а):Впрочем в первых двух режимах есть примитивная постеризация, типа всё что темнее 128, то черное, что сетлее, то белое.
Тут тебе стоит применить поле с выбором что относить к черному, а что к белому, вот как тут:
смотреть по времени с 1:04...
https://www.youtube.com/watch?v=lx1xR12CNKA

:-)

Re: Программа для лазерных граверов на grbl

Добавлено: 03 мар 2017, 10:48
ASPtr
selenur писал(а):позволяет любой рисунок имеющий 1,4,8,32 бит на пиксель преобразовывать в рисунок с 24 битами
selenur писал(а):стоит применить поле с выбором что относить к черному, а что к белому
Это понятно )) И спасибо большое за предложение, но я всё-таки останусь при мнении, что это проще и лучше делать в графическом редакторе. Это просто утилитка типа "нажми на кнопку - получишь результат". До Вашего мега-комбайна дотянутся не когда не выйдет, да и не планировалось никогда.

Re: Программа для лазерных граверов на grbl

Добавлено: 18 апр 2017, 09:20
mrKrivedko
надо будет попробовать программу ) напишу как ощущения

Re: Программа для лазерных граверов на grbl

Добавлено: 10 май 2017, 15:17
dagarho
У меня почему - то при открытии большинства изображений происходит ошибка Run-time error 9: Subscript out of range

Re: Программа для лазерных граверов на grbl

Добавлено: 17 май 2017, 10:24
ASPtr
dagarho писал(а):У меня почему - то при открытии большинства изображений происходит ошибка Run-time error 9: Subscript out of range
Рисунок точно BMP 24 бит?
Приложите файлик на котором возникает ошибка. Попробую воспроизвести.

Re: Программа для лазерных граверов на grbl

Добавлено: 20 май 2017, 15:53
dagarho
ASPtr писал(а):Рисунок точно BMP 24 бит?
Точно, пробовал несколько с разным размером и DPI. Очень жаль, программа удобная.

Re: Программа для лазерных граверов на grbl

Добавлено: 20 май 2017, 15:58
Rom327
dagarho писал(а):
ASPtr писал(а):Рисунок точно BMP 24 бит?
Точно, пробовал несколько с разным размером и DPI. Очень жаль, программа удобная.
А где такие картинки можно взять? :)

Re: Программа для лазерных граверов на grbl

Добавлено: 20 май 2017, 16:20
dagarho
Rom327 писал(а):А где такие картинки можно взять?
https://maryrossbuchholz.com/collections/46026

Re: Программа для лазерных граверов на grbl

Добавлено: 22 май 2017, 09:53
ASPtr
Проблема имеет место быть! ((
Насколько я понял проблемные файлы имеют не совсем корректный заголовок (а может и корректный, но другого стандарта, тьма их). Что можно сделать...
1. Можно пересохранить файл через фотошоп (я на него ориентировался, у меня CS3). Файл --> Сохранить как --> BMP и как на картинке
shop.jpg (63060 просмотров) <a class='original' href='./download/file.php?id=112210&mode=view' target=_blank>Загрузить оригинал (27.61 КБ)</a>
После этого Ваш файлик открылся. Способ, в принципе, универсальный.

2. Или вот, на скорую руку сваял "костыль" к программе. Вроде работает. Но по-хорошему надо бы проверить остальной функционал (немного запутался в исходниках).
horse.jpg (63060 просмотров) <a class='original' href='./download/file.php?id=112211&mode=view' target=_blank>Загрузить оригинал (119.56 КБ)</a>
dagarho писал(а):Очень жаль, программа удобная.
Спасибо, приятно слышать. ))
Собственно, сама программа:
LaserDot.rar
(25.65 КБ) 1912 скачиваний

Re: Программа для лазерных граверов на grbl

Добавлено: 26 июл 2017, 11:47
ASPtr
Смотрю, народ качает потихоньку...
Правда молчком, то ли всё нравится, то ли удаляют сразу. ))
В общем, немного допилил "юзабилити", по результатам эксплуатации, и добавил одну настройку.
- запоминаются пути открытия и сохранения файлов (по отдельности)
- возможность "быстрого сохранения" (при отмеченном крыжике "сохранять в файл по умолчанию"). т.е. при нажатии кнопки, без лишних, тупых вопросов сохраняет в определённый файл. По умолчанию test.nc на рабочем столе текущего пользователя. При необходимости - правится "ручками" в ini файле.
Полезно при настройке выжигателя, тестировании различных режимов.
- в режим "включение на черном" добавлена настройка "Возврат по G0".
Поясню... Для себя оптимальным режимом выбрал "включение на черном" - по сравнению с выжиганием точками потеря качества практически не заметна, а время экономится. Движение на рабочей подаче (G1), чтоб станок не дергался от точки к точке, жалко мне его )). Выжигание в одну сторону (не змейкой). Со змейкой всё равно появляется небольшая "лесенка" на вертикальных границах (люфты станка, растяжимость ремня...) небольшая, порядка одной, двух десяток, но тем не менее... (я немного перфекционист, да). Так вот, раньше возврат на начало строки был также по G1, теперь есть возможность делать это намного быстрее. Если есть желание могу выложить видео.

Собственно вот:
LaserDot.rar
(26.51 КБ) 1289 скачиваний

Re: Программа для лазерных граверов на grbl

Добавлено: 07 окт 2017, 00:31
sg495
Здравствуйте. А как с Вами связаться, обсудить программу?

Re: Программа для лазерных граверов на grbl

Добавлено: 08 окт 2017, 07:20
ASPtr
sg495 писал(а):Здравствуйте. А как с Вами связаться, обсудить программу?
А что Вам мешает сделать это здесь?
Спрашивайте.

Re: Программа для лазерных граверов на grbl

Добавлено: 08 окт 2017, 23:55
sg495
ОК.
Тогда если позволите пока ряд вопросов по первому варианту формирования кода: "включение на черном"

1. Можно ли сделать отображение размера загружаемой картинки (слева внизу) в мм, а не в пикселях?
2. Почему размер гравируемого изображения после формирования G-кода отличается от исходного в растровой картинке?
3. Какое разрешение растровой картинки должно быть для правильной работы Вашей программы?
4. На что влияет и как правильно выбрать "размер точки" в блоке общих настроек в случае выбора формирования кода пунктом "включение на черном"?
5. Можно ли изменять количество линий, расстояний между ними (разрешение гравировки что ли?), которыми гравируется изображение?
6. В сформированном коде (в режиме M3/M5) после строк начального блока идет указание скорости рабочего перемещения и потом три строки (см. ниже) перед основным кодом прожигания.
G90 G0 Z0
M05
G0 X0 Y0
G1 F3000
M3 S0 ---строка 1
S1000 ---строка 2
M5 ---строка 3
G0 X2.65 Y0.05
M3
...
...
Как я понимаю, таким образом задается мощность лазера для всех последующих вызовов М3 ? Но почему начинается с M3 S0 ?
И самое главное, в момент определения S1000 (строка 2) происходит прожиг точки в нулевой позиции!
Не правильнее бы было сформировывать в каждой точке включения команду M3 S1000 ?
7. Можно ли добавить возможность обработки других форматов картинок (JPG, TIF, PNG....)?

Re: Программа для лазерных граверов на grbl

Добавлено: 09 окт 2017, 09:40
ASPtr
1. Можно. На днях сделаю.

2-5. Возможно Вы не до конца поняли логику программы. "Размер точки" одна из ключевых настроек. Именно она определяет размер "пикселя" выжигаемого на дереве, и расстояние между строками, и соответственно, размер получившегося рисунка (размер точки x (ширину/высоту) в пикселях). Допустим размер рисунка 200x300 пикселей, размер точки 0.2мм - на дереве получим картинку 40x60 мм (5 линий на мм). Разрешение исходной картинки вообще не имеет никакого значения. Я его даже не парсю.

6. Честно говоря, не помню почему выводится именно такая связка M3 S0 ... S1000, может лень было писать лишнюю проверку ))
sg495 писал(а):Как я понимаю, таким образом задается мощность лазера для всех последующих вызовов М3 ?
Именно так. Команда "S" модальна (запоминается последнее значение). Поэтому нет смысла писать каждый раз M3 S1000. Размер файла опять же сокращается.
sg495 писал(а):И самое главное, в момент определения S1000 (строка 2) происходит прожиг точки в нулевой позиции!
По идее, не должно. Там же M5 идет без задержки. У меня на grbl лазер не включается.
Если это действительно так - постараюсь исправить.

7. А вот этого, скорее всего, не будет. Почему - объяснил в первом посте.

Re: Программа для лазерных граверов на grbl

Добавлено: 10 окт 2017, 00:44
sg495
Действительно, что-то никак не могу с логикой программы разобраться...
Если Вас не затруднит, более подробно пожалуйста проясните "формулу" расчета
Например, надо мне сделать, скажем, полностью залитый объект размером 10х10мм.
И надо сделать в двух вариантах:
- с "разрешением" (или как правильно назвать этот параметр применительно к гравировке?) 5 линий на миллиметр (т.е. 50 линий на объект)
- с "разрешением" 10 линий на мм (т.е. 100 линий на объект)
Причем за "линию", как я понимаю, мы принимаем некую константу по ширине, выжигаемую лазером при минимальном размере точки фокуса (кстати, а если чуть расфокус, но мощности достаточно для прожига, тогда как?....)

Какой в этих случаях должен быть "размер точки", устанавливаемый в Вашей программе, и какого размера исходная картинка?
Что-то запутался я.....

Re: Программа для лазерных граверов на grbl

Добавлено: 10 окт 2017, 08:49
ASPtr
sg495 писал(а):Действительно, что-то никак не могу с логикой программы разобраться...
Ну вот смотрите... Настройка аналогичная "размеру точки" (или пикселя) есть во всех подобных программах, просто где-то она задается как число линий на мм. Это вещи взаимно обратные и отвечают, по сути, за одну сущность - за то с какой плотностью станок будет выжигать растровый рисунок (аналог dpi в принтерах).
1/"размер точки"="количество линий на мм"
1/"количество линий на мм"="размер точки"
Как сопротивление и проводимость в электротехнике.
sg495 писал(а):Например, надо мне сделать, скажем, полностью залитый объект размером 10х10мм.
И надо сделать в двух вариантах:
- с "разрешением" (или как правильно назвать этот параметр применительно к гравировке?) 5 линий на миллиметр (т.е. 50 линий на объект)
"размер точки"=1/(5 линий на миллиметр)=0.2мм В Ваши 10мм влезет 10/0.2=50 точек. Аналогично по вертикали. Итого, Вам нужно подготовить исходное изображение размером 50х50 пикселей. В программе, естественно, указываете размер точки "0.2"
sg495 писал(а):- с "разрешением" 10 линий на мм (т.е. 100 линий на объект)
"размер точки"=1/10=0.1мм 10/0.1=100 точек. Исходное изображение размером 100х100 пикселей . размер точки "0.1"

Re: Программа для лазерных граверов на grbl

Добавлено: 10 окт 2017, 09:29
ASPtr
Версия показывающая также размер в миллиметрах, при данном размере точки.
LaserDot.rar
(27.18 КБ) 1939 скачиваний

Re: Программа для лазерных граверов на grbl

Добавлено: 10 окт 2017, 16:53
sg495
Ага, значит здесь надо как бы "от обратного" исходить: вначале нужно определиться с количеством линий (точек), которыми я хочу гравировать, а уже потом под это количество подгонять размер (и именно в пикселях) исходной картинки?
Просто это некая (для меня, конечно!) новая "логика", если сравнивать с, например, с печатью, скажем, градиентных полос каким-нибудь сольвентным принтером Обычно ведь делается как:
в редакторе рисуется картинка в нужном размере -> делается заливка картой градента -> выводится на печать -> оценивается результат -> корректируется параметры градиента
А здесь алгоритм, видимо, иной:
принимается некое стартовое количество линий -> делается расчет нужного размера картинки -> рисуется картинка в нужных пиксельных размерах -> гравируется -> оценивается результат -> и всё с начала....
А как оценить, какое количество линий (точек) будет правильно выбрать в каждом конкретном случае? Или только методом проб и ошибок? Опять же по аналогии с печатью: например понятно, что 600 dpi даст "фотографический" результат (если печатаем обложку книги), а 25dpi - страшную пикселизацию (но вполне допустимую для 6-и метрового баннера на крыше). Или здесь как-то по другому?