Идеи, алгоритмы и вопросы выжигания лазером

Обсуждение софта, программ, постпроцессоров...

Модератор: life

George164
Станкостроитель
Станкостроитель
Сообщения: 1892
Зарегистрирован: 23 окт 2011, 00:21
Откуда: Москва-Люберцы

Идеи, алгоритмы и вопросы выжигания лазером

Сообщение George164 »

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

Сделал черновой вариант программы подготовки файла для выжигания с карты. Со змейкой и без.
Собственно это тот же .bmp 8-битный файл, но без палитры в начале и с другим расположением строк-столбцов.
Т.е. картинка 30х40 см (3000х4000р) с пикселем 0.1мм тянет на 12 мегабайт. Для карты нормально.
Информирую на всякий случай вдруг кто захочет попробовать выжигать с карты.
Изображение.

Получил UNO и стал грузить в неё GRBL 0.9. Опять пришлось менять Установку параметров. С родными номерами она просто не работает. Поменял по привычке. Можно и без них через $команду (загрузка фото не работает https://yadi.sk/i/W2VspH9dkoTX6)
Похоже, что GRBL controller после 3.6.1 перестали поддерживать. Что еще развивается и поддерживается?
Проверил UNO на карту памяти. Ставится в GRBL если заблокировать лимиты по Y и Z. Есть еще две ноги свободные, можно и джойстик или пару кнопок поставить. Но памяти уже впритык. Поэтому и не развивают.
PS По настройкам. Чтобы и сам опять не забыл. Они там перемудрили и не состыковали.
В GRBL Setting идет сквозная нумерация параметров, хоть номер и не высвечивается. В хелпе в окошке номер=параметр с разрывами. Чтобы номера совпадали редактируем три файла ардуины report.c и setting.с и settings.h
В settings.h меняем
#define AXIS_N_SETTINGS 3
#define AXIS_SETTINGS_START_VAL 19 // NOTE: Reserving settings values >= 100 for axis settings. Up to 255.
#define AXIS_SETTINGS_INCREMENT 3 // Must be greater than the number of axis settings
В settings.c в обработке параметров делаем нумерацию подряд как в примере:
case 7: settings.status_report_mask = int_value; break;
case 8: settings.junction_deviation = value; break;
case 9: settings.arc_tolerance = value; break;
case 10:
if (int_value) { settings.flags |= BITFLAG_REPORT_INCHES; }
else { settings.flags &= ~BITFLAG_REPORT_INCHES; }
break;
Раньше после номера 6 шел 10. И так везде где пропуски в номерах. В разных версиях набор параметров разный, поэтому универсального файла не сделать.
В report.c делаем примерно то же самое в одном или в двух местах в зависимости от версии.
примерно так.
printPgmString(PSTR("\r\n$7=")); print_uint8_base10(settings.status_report_mask);
printPgmString(PSTR(" (status report mask:")); print_uint8_base2(settings.status_report_mask);
printPgmString(PSTR(")\r\n$8=")); printFloat_SettingValue(settings.junction_deviation);
printPgmString(PSTR(" (junction deviation, mm)\r\n$9=")); printFloat_SettingValue(settings.arc_tolerance);
printPgmString(PSTR(" (arc tolerance, mm)\r\n$10=")); print_uint8_base10(bit_istrue(settings.flags,BITFLAG_REPORT_INCHES));
printPgmString(PSTR(" (report inches, bool)\r\n$11="));
По всем кускам, где скачет нумерация. Можно редактировать не вникая в содержимое. Просто, чтобы номера шли подряд Потом старший свободный номер идет в setting.h

_________________
Мечта станкостроителя: приезжаешь в Сочи, а там на пляже станки, станки. станки...
George164
Станкостроитель
Станкостроитель
Сообщения: 1892
Зарегистрирован: 23 окт 2011, 00:21
Откуда: Москва-Люберцы

Re: Идеи, алгоритмы и вопросы выжигания лазером

Сообщение George164 »

Вопрос по настройке лазера.
Хорошо бы кто-нибудь опытный кратко написал как фокусировать лазер и как примерно установить ток в зависимости от мощности. Измерить мощность лазера дома нереально. Значит надо как-то выставить косвенно по току БП или резке чего-то, что есть у всех. Я выставил пока 1 ампер на 12 вольт для 2х-ватного (по рекламе) лазера (Николай-Трудоголик писал у него 1.2 ампера). Сколько это мощности непонятно. Хороший тест, наверно, это разрезание тетрадного листа (у всех есть) на заданной скорости. Если лист бумаги установить наклонно, то еще и фокусировку можно оценить. Не режет, потом режет, потом опять не режет. И выбираешь среднюю высоту или крутишь линзу.
Мечта станкостроителя: приезжаешь в Сочи, а там на пляже станки, станки. станки...
George164
Станкостроитель
Станкостроитель
Сообщения: 1892
Зарегистрирован: 23 окт 2011, 00:21
Откуда: Москва-Люберцы

Re: Идеи, алгоритмы и вопросы выжигания лазером

Сообщение George164 »

Похоже тема лазера пока мало кого интересует поэтому чисто информационно.
Изображение
Успел запустить на Уно до разборки станка, так как пришли колеса. На новом станке уже сразу буду с дисплеем и на РАМПС. Алгоритм, который я озвучивал ранее работает. В программе два цикла. Кому интересно выложу. Но подгонка скоростей, мощности лазера, фокусировки это отдельная работа, которую никто не отменял. И на нее уйдет уйма времени. Я этого не делал. Плюс дым, а канал в стенке для дымоудаления не просверлен. Опробовал на трех скоростях. Результат так себе, хотя и картинка так себе сделана под выжигалку Тима с шагом 0.5. То, что линейная шкала оттенков не годится видно сразу.
PS Самый верхний фрагмент это оригинал.
Мечта станкостроителя: приезжаешь в Сочи, а там на пляже станки, станки. станки...
onin
Наблюдающий
Сообщения: 8
Зарегистрирован: 22 ноя 2011, 23:40
Откуда: Болгария
Контактная информация:

Re: Идеи, алгоритмы и вопросы выжигания лазером

Сообщение onin »

Здравствуйте! По теме выжигание лазером есть много инфо и наверное смотрели http://picengrave.com/. Там много по конструкции, линзы, фокусировки и т.д. От себе добавлю, что мощность лазерного диода очень чувствительна к изменение температуры охлаждения. Мощность при ниской температуре заметно више при одинаковые значения тока. Воздушное охлаждение по сути недоразумение, но удобно. Можно использовать элементы Пельтье, например. Дым засоряет линзу и мощность падает а линза портится.
Удачи!
George164
Станкостроитель
Станкостроитель
Сообщения: 1892
Зарегистрирован: 23 окт 2011, 00:21
Откуда: Москва-Люберцы

Re: Идеи, алгоритмы и вопросы выжигания лазером

Сообщение George164 »

onin писал(а): и наверное смотрели

Конечно, нет. :) Но сейчас посмотрел.
Если умные люди выжигают по диагонали, наверно, в этом есть смысл.
1. Не идут вдоль волокон.
2. Не образуется вертикальных и горизонтальных полос, которые больше бросаются в глаза, чем диагональные.
3. Работают обе оси равномерно.
4. Меньше влияет несовпадение размеров точки прожига с размерами пикселя: шагов по Y.
Может и еще какие.
Если движение лазера равномерное, то как у них получаются оттенки? GRBL вроде стандартный.
Мечта станкостроителя: приезжаешь в Сочи, а там на пляже станки, станки. станки...
onin
Наблюдающий
Сообщения: 8
Зарегистрирован: 22 ноя 2011, 23:40
Откуда: Болгария
Контактная информация:

Re: Идеи, алгоритмы и вопросы выжигания лазером

Сообщение onin »

"Если движение лазера равномерное, то как у них получаются оттенки?" Это заложено в G-code файла.
Есть два способа: Через изменение тока от импульса к импульсу с 256 значении через аналоговый драйвер диода; ШИМ, или используя при одинаковой мощностю задержка на каждый пиксель ( при TTL сигнал) пропорционално на этих 256 значении градации серого - VFR - Variable Feed Rate.

Есть демо версия програмы, которую можете опробовать с ARDUINO UNO
George164
Станкостроитель
Станкостроитель
Сообщения: 1892
Зарегистрирован: 23 окт 2011, 00:21
Откуда: Москва-Люберцы

Re: Идеи, алгоритмы и вопросы выжигания лазером

Сообщение George164 »

onin писал(а):ШИМ, или используя при одинаковой мощностью задержка на каждый пиксель
А как он реализован? Добавлен в GRBL или внешней схемой. Решений много, а что у вас?
Мечта станкостроителя: приезжаешь в Сочи, а там на пляже станки, станки. станки...
NikRoman
Станкостроитель
Станкостроитель
Сообщения: 381
Зарегистрирован: 26 фев 2012, 10:41
Имя: Роман
Откуда: Печора
Контактная информация:

Re: Идеи, алгоритмы и вопросы выжигания лазером

Сообщение NikRoman »

George164 писал(а):Если движение лазера равномерное, то как у них получаются оттенки? GRBL вроде стандартный.
4 способа достичь оттенков за счёт gcode:
1)Стандартный GRBL управляет скважностью TTL 11 вывода Arduino командами Gcode "S". ("S0" выкл. от "S100" до "S1000" равномерно меняется мощность)(ну почти как у Вас)
2)F-меняем скорость перемещения.(дропопал,паук)
3)G4P[время в секундах]-задержка (чем дольше жгём точку, тем темнее)
4)m3,m5-в(ы)ключение лазера(ну тут оттенки только дизерингом достичь(алгоритмы Флойд-Штейнберг,Джарвис,Штукки)

Но потом всплывает задержка обработки GCode и Вам приходится бороться с этим.
George164
Станкостроитель
Станкостроитель
Сообщения: 1892
Зарегистрирован: 23 окт 2011, 00:21
Откуда: Москва-Люберцы

Re: Идеи, алгоритмы и вопросы выжигания лазером

Сообщение George164 »

Роман, у них на видео движение равномерное. Поэтому только ШИМ или аналоговая регулировка лазера. Поэтому и спрашиваю как реализовано. А обработка кроме G- кодов еще и S-кода еще больше будет тормозить GRBL. Хотя если отключать лазер между командами, а внутри запрещать прерывания, задержки не играют роли. При непрерывном свечении по дуге у меня получались точки. Но это скорее из-за обмена с компом в середине дуги с мелким шагом.
Скорость у них вроде от 1500 до 1800 мм/мин. (В описании теста так написано). Быстро.
Посмотрю скоро за 11 вывод. Переделать на 9 несложно. 11 в УНО у меня занят картой памяти.
PS Выложили бы свою сову после контраста. Как тест будет.
Мечта станкостроителя: приезжаешь в Сочи, а там на пляже станки, станки. станки...
NikRoman
Станкостроитель
Станкостроитель
Сообщения: 381
Зарегистрирован: 26 фев 2012, 10:41
Имя: Роман
Откуда: Печора
Контактная информация:

Re: Идеи, алгоритмы и вопросы выжигания лазером

Сообщение NikRoman »

я думал что обмен не на прерывании.
Не подскажите чем скомпилировать grbl?

Есть ещё вариант повесить 12 вольт лазера на драйвер ШД как одну из обмоток. Тогда ШИМ драйвера будет регулировать мощность лазера в зависимости от положения оси. можно получить до 16 градаций или спалить лазер :focus:
George164
Станкостроитель
Станкостроитель
Сообщения: 1892
Зарегистрирован: 23 окт 2011, 00:21
Откуда: Москва-Люберцы

Re: Идеи, алгоритмы и вопросы выжигания лазером

Сообщение George164 »

NikRoman писал(а):я думал что обмен не на прерывании.
Я не знаю как там, но прерывания на ком порт у Авэрок есть.
NikRoman писал(а):Не подскажите чем скомпилировать grbl?
А Какой? Для компа GRBL controller сам не знаю, хотя исходники вроде выложены. Но развернуть среду Си++ это целая проблема. Судя по тому, что никто не исправляет там баги это сложно.
А для ардуины ардуиной.
Мечта станкостроителя: приезжаешь в Сочи, а там на пляже станки, станки. станки...
George164
Станкостроитель
Станкостроитель
Сообщения: 1892
Зарегистрирован: 23 окт 2011, 00:21
Откуда: Москва-Люберцы

Re: Идеи, алгоритмы и вопросы выжигания лазером

Сообщение George164 »

Попалась на глаза прошлогодняя фанерка из под выжигалки Тима. Сравнил с лазерной. У тимовской поверхность гладкая, у лазерной выжигает ямку до полумиллиметра, если до черного. Понятно почему. Похоже надо добавить мощности лазера и увеличить скорость. Вот только поможет ли.
Мечта станкостроителя: приезжаешь в Сочи, а там на пляже станки, станки. станки...
George164
Станкостроитель
Станкостроитель
Сообщения: 1892
Зарегистрирован: 23 окт 2011, 00:21
Откуда: Москва-Люберцы

Re: Идеи, алгоритмы и вопросы выжигания лазером

Сообщение George164 »

Жизнь потихоньку налаживается. Проблема дымоудаления решена следующим образом. В стене просверлено отверстие 120мм. В него вставлен шланг РО с канальным вентилятором на вытяжку. Другой конец шланга вставлен в купол над станком и в него вставлен второй накладной вентилятор. Два вентилятора вроде обеспечивают тягу.Судя по всему нужна еще задвижка у стены на мороз иначе там просто холодно. Типа джетовской на шланг 100мм. Под лазером сбоку установлен вентилятор от видео карты и запитан через разъем драйвера лазера.
Попытался встроить тестовую табличку на 16-64 поля в программу ардуины. Таблички хорошие, но толку от них нет. Все-равно, скорости надо подбирать по фрагменту картинки и набить руку на коррекции уровней в фотошопе.
Изображение
Собачка хороша, но при увеличении пикселей в 10 раз картинка размывается. Шаг 0.1 мелковат. В общем, все те же проблемы, что и при любой выжигалке.
Мечта станкостроителя: приезжаешь в Сочи, а там на пляже станки, станки. станки...
George164
Станкостроитель
Станкостроитель
Сообщения: 1892
Зарегистрирован: 23 окт 2011, 00:21
Откуда: Москва-Люберцы

Re: Идеи, алгоритмы и вопросы выжигания лазером

Сообщение George164 »

Увеличил шаг до 0.2 мм. Получилось намного лучше, но картинка показалась слишком мягкой, размытой. По примеру струйного принтера сделал тест вертикальных отрезков по 5мм в 1 пиксель на прямом и обратном ходе. Обнаружил люфт примерно 0.05-0.1 мм. Резкости при таком люфте не получишь. Может шкивы у меня чуть меньше по диаметру, чем положено. Для фанерного прототипа это, наверно, нормально, но эту функцию подстройки люфта надо оставить. При смене направления движения делать компенсацию люфта. Величину компенсации задавать в .h файле настроек.
PS Прожег тесты на люфт обратного хода. Шаг ремня 2.032. Микрошаг 16. Шаг прожига 0.2032. При обратном ходе делалось смещение в начале сроки от -12 до +12 микрошагов с шагом 4, а в конце строки оно компенсировалось обратным движением.
Изображение
Справа +12 микрошагов, слева -12 микрошагов для каждой строки обратного хода. Совершенно очевидно, что 0 не является центром. Т.е. смещение в минус от 2 до 4 микрошагов. Причины могут быть разные. Переделаю станок опять проверю.
Мечта станкостроителя: приезжаешь в Сочи, а там на пляже станки, станки. станки...
George164
Станкостроитель
Станкостроитель
Сообщения: 1892
Зарегистрирован: 23 окт 2011, 00:21
Откуда: Москва-Люберцы

Re: Идеи, алгоритмы и вопросы выжигания лазером

Сообщение George164 »

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

Бинарный двухбайтовый пиксельный формат команд.

1 байт
7 бит - есть движение по Х -1, нет=0
6 бит - есть движение по Y -1, нет=0
5 бит - направление по Х
4 бит - направление по Y
3,2 - скорость перемещения, холостой ход, штатное, ускоренное и замедленное.
хорошо бы чтобы скорости подбирались по прожигу и шиму.
1,0 - резерв (например, точечный прожиг или в движении.)

2 байт
8 бит - 256 градаций яркости. 2 младших бита можно также задействовать для резерва. Для выжигания в принципе достаточно 5 битов - 32 градаций.

Таким образом не нужна информация о размере картинки, до 1024 оттенков, команды легко сформировать из пиксельной картинки по любому алгоритму, вектора - через .тар файл.
Мечта станкостроителя: приезжаешь в Сочи, а там на пляже станки, станки. станки...
NikRoman
Станкостроитель
Станкостроитель
Сообщения: 381
Зарегистрирован: 26 фев 2012, 10:41
Имя: Роман
Откуда: Печора
Контактная информация:

Re: Идеи, алгоритмы и вопросы выжигания лазером

Сообщение NikRoman »

George164, то есть при выжигании в одну сторону (не змейкой) каждая чётная строка будет белой (0b10100000 0x00) чтобы вернуть каретку на холостом ходу? это удвоит объём данных, хотя в принципе памяти хватает.
George164
Станкостроитель
Станкостроитель
Сообщения: 1892
Зарегистрирован: 23 окт 2011, 00:21
Откуда: Москва-Люберцы

Re: Идеи, алгоритмы и вопросы выжигания лазером

Сообщение George164 »

А что смущает? Возвращаться будет со скоростью холостого хода. Берем картинку 40х30см с шагом 0.2 и считаем объем. А карточки вокруг минимум 1 ГБ. Я и выложил, потому что не вижу препятствий. А плюсов полно.
Например, сдвигаемся с 0 прожига, а потом стоим с включением. Каждая команда независимо выполняется с длительностью установленной скорости. Можно дважды и трижды жечь в одну точку. А такой финт как прожигание не по сетке, а сотами? Ставим 1 и каждая нечетная строка будет смещаться на полпикселя. А при микрошаге 16 поиграть с нарастаниями и спадами черного?
Мечта станкостроителя: приезжаешь в Сочи, а там на пляже станки, станки. станки...
NikRoman
Станкостроитель
Станкостроитель
Сообщения: 381
Зарегистрирован: 26 фев 2012, 10:41
Имя: Роман
Откуда: Печора
Контактная информация:

Re: Идеи, алгоритмы и вопросы выжигания лазером

Сообщение NikRoman »

George164, я уже делал сотами. На моих скоростях станок дёргает как не знаю что. А на заготовке не заметно разницы.
George164
Станкостроитель
Станкостроитель
Сообщения: 1892
Зарегистрирован: 23 окт 2011, 00:21
Откуда: Москва-Люберцы

Re: Идеи, алгоритмы и вопросы выжигания лазером

Сообщение George164 »

Предновогодняя запарка кончилась. Хоть что-то успел.
Это инвертор для лазера. Теперь что бы я ни делал лазер всегда выключен. Только очень короткое слабое вспыхивание при загрузке программы в Ардуино. Смонтирован на плате драйвера. Так как на драйвере Z нет ШИМ, драйвер X переставлен на место Z, а инвертор установлен вместо драйвера Х. На сигнал Step установлен светодиод для индикации работы лазера.
Изображение

Успел сделать только три варианта тестовой картинки на 3 скоростях. Явно видны полосы. Шаг 0.2мм. 64 оттенка. Реснички не очень четко.
Изображение
Хотел Сову, но теперь только после Нового года.
На фото видно, что Тимовский выжигатель дает коричневый цвет, а лазер черный.

Выжигание проводилось с карты памяти по двухбайтовому коду на одной скорости.
В коде
1. Байт
7-бит - всегда 1
6-5 - алгоритм перемещения(диагональ, построчный, точечный...
4 - Есть движение по Х
5- Есть движение по Y
3 - направление по Х
2 - направление по Y
1 - резерв (возможно холостой пробег)
2 Байт
7- всегда 0
6 - скорость или алгоритм прожига точки
5-1 - яркость 64 оттенка

Две программы под Виндами.
Подготовка кода файла.
Запуск выжигания, выбор файла, скорость и т.д. пока по USB интерфейсу.
Надо вьюер делать. А то правый глаз стал левым.
Мечта станкостроителя: приезжаешь в Сочи, а там на пляже станки, станки. станки...
George164
Станкостроитель
Станкостроитель
Сообщения: 1892
Зарегистрирован: 23 окт 2011, 00:21
Откуда: Москва-Люберцы

Re: Идеи, алгоритмы и вопросы выжигания лазером

Сообщение George164 »

Последнее в этом году. Сделал вьюер для расчета размеров и примерного времени выполнения.
Изображение
Всех с Наступающим. Отдыхаем.
Мечта станкостроителя: приезжаешь в Сочи, а там на пляже станки, станки. станки...
NikRoman
Станкостроитель
Станкостроитель
Сообщения: 381
Зарегистрирован: 26 фев 2012, 10:41
Имя: Роман
Откуда: Печора
Контактная информация:

Re: Идеи, алгоритмы и вопросы выжигания лазером

Сообщение NikRoman »

George164, отлично получается. А я флешку прикручиваю. Спаял свою первую печатную плату для неё.
Изображение
Нанотехнологии, учитывая огромный диаметр жала моего паяльника.
Помучился с FAT, но разобрался.
Распиновка после подключения флешки тоже изменилась. Не получается совместимость с GRBL. Если они будут добавлять работу с флешки, то полюбому изменят пины под стандартную схему подключения SD.
Лазер сейчас висит на 3 ноге Nano. Там он не вспыхивает при перепрошивке и ресете.
Тоже с компа в ручном режиме выставляется начальная точка и запускается работа с флешки (или как раньше с компа).
Медленно ползу(
Изображение

Думаю что такой контроллер должен работать без компьютера. Для этого нужен джойстик и экран. По идее можно обойтись 5 кнопками и 2 строчным дисплеем.

Странно что используя 2 байта Вам пришлось снизить количество оттенков. На глаз конечно не заметно будет, но по моему слишком много выходит доп. информации на один пиксель.
George164
Станкостроитель
Станкостроитель
Сообщения: 1892
Зарегистрирован: 23 окт 2011, 00:21
Откуда: Москва-Люберцы

Re: Идеи, алгоритмы и вопросы выжигания лазером

Сообщение George164 »

NikRoman писал(а):А я флешку прикручиваю.
Флешка менее удобна, если это действительно флэшка, а не карта памяти. Тем более есть 4х строчный дисплей с крутилкой и разъемом карты памяти на мегу2560.
Весь софт для дисплея можно взять из Марлина.
NikRoman писал(а):Лазер сейчас висит на 3 ноге Nano. Там он не вспыхивает при перепрошивке и ресете.
Вот это я не понимаю. При любой операции сброса или загрузки программы нога уходит в 3-е состояние и лазер обязан загореться.
NikRoman писал(а):Думаю что такой контроллер должен работать без компьютера.
Как вариант да, но это менее удобно. У меня пара-тройка старых ноутбуков, один из которых я поставил рядом со станком. С него настройка и запуск станка. А потом его можно выключить. На нем и отлаживаю. А файлы готовлю на другом компе.
NikRoman писал(а):Странно что используя 2 байта Вам пришлось снизить количество оттенков. На глаз конечно не заметно будет, но по моему слишком много выходит доп. информации на один пиксель.
А в байт уложиться не получается никак, поэтому два. В заголовке файла только размеры для упрощения расчета времени и размеров. И увеличивать его не хочется. Паузы на чтения с карты намного больше чем обработка управляющего байта. Сейчас есть резерв, но опыт подсказывает, что потом его не хватит еще.
256 оттенков для фанеры это перебор. Реально 32. 64 с запасом. Очень хочется рассчитывать максимальную скорость для светлых строк и прожигать на ней увеличивая ШИМ. Или замедляться на темных местах. Плюс скорость холостого прогона. Уже набирается 4 скорости. Потом решу надо ли это. Но это единственный способ уменьшить время прожига.
Вот как выглядят картинки с числом оттенков от 2 до 256. Т.е. даже на мониторе разницы между 256 и 32 практически не видно. А у фанеры динамический диапазон вообще никакой.
Изображение
Мечта станкостроителя: приезжаешь в Сочи, а там на пляже станки, станки. станки...
George164
Станкостроитель
Станкостроитель
Сообщения: 1892
Зарегистрирован: 23 окт 2011, 00:21
Откуда: Москва-Люберцы

Re: Идеи, алгоритмы и вопросы выжигания лазером

Сообщение George164 »

Ну, отгуляли, пора работать.
Немного переосмыслил управляющие команды.
Так как есть разделение на данные и параметры, то байты могут следовать и обрабатываться независимо. Т.е. если идут подряд данные, то это означает, что действуют все параметры из последней команды. Если идут подряд команды, то это означает, что байт данных для ее выполнения не нужен.
Примеры.
1. Передвижение по строке.
Все командные байты одинаковы. Зачем их повторять.
2. Холостой прогон.
Скорости вообще не привязаны к файлу, а привязаны только к станку. Скорость может быть одна. Если их несколько, то смысл второй скорости не нормируется.
Т.е для возврата к начальной точке или подвода лазера к начальной точке прожига вектора, байт данных не нужен. Достаточно только команд с холостыми перемещениями.
3. Управление станком из программы по USB.
Для перемещения лазера нужны: параметр яркости, кнопки перемещения и/или кнопки расстояния. Если в управляющей программе внешнего компьютера задавать отдельно яркость и стрелки перемещения, то появляется легкая возможность рисовать прямоугольники и диагонали, например, как реперные точки вокруг картинки.
Управляющих программ может быть несколько как по авторам, так и по назначению.
4. Команда FF - признак конца-паузы прожига. По ней ничего не происходит кроме остановки прожига и выключения лазера. Файл прожига не закрывается и указатели файла сохраняются, моторы не отключаются. По концу файла моторы могут отключаться (командой) для свободного ручного перемещения лазера.
Теперь по какой-то дополнительной команде от компьютера или нажатию внешней кнопки можно продолжить работу со следующего байта. Т.е. можно большой файл разбить на куски по 10-15 часов работы и делать паузы на ночь без потери качества и не волнуясь за безопасность.
Собственно достаточно 4 битов: Команда, нет движения по Х, нет движения по Y, холостой пробег. Это бессмысленная комбинация и ее можно использовать для останова без потери битов в команде. Все резервы командного байта, кроме оставшихся 4 битов, исчерпаны. Их нулевые значения можно считать резервом.

Командный байт.
7 бит = "1" - признак команды-параметров
6 бит - "0"-ждет яркость,"1" холостой пробег. Перемещение начинается без прожига и считывания следующего байта из файла.
5 бит - "0" - есть движение по Х, "1" - нет движения по Х
4 бит - "0" - есть движение по Y, "1" - нет движения по Y
3-2 биты - тип прожига: 00-строка, 01-диагональ, 10-точка, 11-юзер, например, для экспериментов с прожигом
1 бит - Направление по Х
0 бит - Направление по Y

Байт данных.
7 бит = "0" признак байта яркости-скорости
6 бит - "0" стандартная скорость, "1" - юзер
5-0 биты - 64 градации яркости в стандарте или зависит от значения битов юзер.

Яркость 63 - белый цвет (минимальный прожиг, ШИМ=0)
Яркость 0 - черный цвет (максимальный прожиг, ШИМ=255)
Т.е. ШИМ получаем не умножением на 4, а получается сдвигом влево на 2 разряда.
В точечном формате прожига яркость понимается как длительность прожига в точке, а бит скорости для перемещения между точками.

Сделал подготовку файла по строкам и по диагонали. Если у Совы размер картинки 571 килобайт, то с управляющими командами весь файл получается на 1-2 килобайта больше. Собственно там добавляются только команды разворотов.

Алгоритм прожигания точек(примерно)
1. Построчно или по диагоналям.
После считывания байта команды устанавливаются параметры. Движение только при холостом прогоне с выключенным лазером.
После считывания байта яркости начинается прожиг одного пикселя одновременно с движением, определяемым текущими параметрами. Движение возможно в 8 направлениях.
2. Точечно
После считывания байта яркости начинается прожиг без движения лазера. Возможен неоднократный прожиг точки.
После считывания байта команды начинается движение лазера без прожига в 8-ми направлениях. Скорость та же, что и при прожиге(6 бит байта яркости), если не задан холостой прогон.
3. Векторный
Пока не реализован. Предполагается, что будет совпадать по интерпретации команд и пиксельной логике прожига с построчно-диагональным, только рассчитываться не по картинке, а по Г-кодам Арткама 9. Толщину линий можно привязать к глубине по Z.
Мечта станкостроителя: приезжаешь в Сочи, а там на пляже станки, станки. станки...
George164
Станкостроитель
Станкостроитель
Сообщения: 1892
Зарегистрирован: 23 окт 2011, 00:21
Откуда: Москва-Люберцы

Re: Идеи, алгоритмы и вопросы выжигания лазером

Сообщение George164 »

Сделал два теста: построчно и диагональю. Долго не мог сообразить почему на диагоналях лазер движется быстрее. Но справился. Честно говоря, разницы я не вижу. Диагональ немного темнее, потому что скорость уменьшил на глазок. Шаг 0.1мм.
Изображение
Завтра сова пойдет в полный размер. Чего я так и не пойму так это почему у меня выжигает черно-серым, а не коричневым.
Мечта станкостроителя: приезжаешь в Сочи, а там на пляже станки, станки. станки...
Planet
Станкостроитель
Станкостроитель
Сообщения: 1179
Зарегистрирован: 25 мар 2013, 13:09
Имя: Baha
Откуда: Moscow-Taraz

Re: Идеи, алгоритмы и вопросы выжигания лазером

Сообщение Planet »

George164 писал(а):Долго не мог сообразить почему на диагоналях лазер движется быстрее.
Почему?
George164 писал(а):Чего я так и не пойму так это почему у меня выжигает черно-серым, а не коричневым.
По диагонали похож на коричневый, темно коричневый.
Окно откройся - onclick="return !window.open(this.href)"
George164
Станкостроитель
Станкостроитель
Сообщения: 1892
Зарегистрирован: 23 окт 2011, 00:21
Откуда: Москва-Люберцы

Re: Идеи, алгоритмы и вопросы выжигания лазером

Сообщение George164 »

Planet писал(а):Почему?
:)
Напутал. Жгу только на полном шаге, поэтому слева картинка с шагом 0.2032 мм, а по диагонали шаг уменьшается до 0.143мм, что скорее всего вполне достаточно. Линии видны на средней яркости под лупой. Когда перейду на GT2 шаги будут 0.2 и 0.142.

В стандартную комплектацию Уно и Шилда надо добавить кнопку. Останов, подтверждение, запуск...

В систему команд хочется:
1. Код FF - полный останов печати и выход на общение с ПС программой
2. Коды F0 - FE - доступны для заполнения. Их же можно также подавать с ПС в онлайн до начала прожига. Что сразу приходит в голову:
F0 - останов в конце строки (при первом движении по Y без движения по Х) до нажатия кнопки
Равноценно нажатию кнопки при смене строки. Опрос кнопки или ПС только там.
F. - звуковой сигнал (выдача 1 на ножку реле или пищалки на 3-5 секунд)
F. - рисует реперные крестики по нижнему краю, например, на 1 см вне или по своему багету.
F. - рисует реперные точки по верхнему краю
F1 - возврат к начальной точке
....
FE - резерв на многобайтовые команды.
Мечта станкостроителя: приезжаешь в Сочи, а там на пляже станки, станки. станки...
Planet
Станкостроитель
Станкостроитель
Сообщения: 1179
Зарегистрирован: 25 мар 2013, 13:09
Имя: Baha
Откуда: Moscow-Taraz

Re: Идеи, алгоритмы и вопросы выжигания лазером

Сообщение Planet »

George164 писал(а):Напутал.
Я думаю ты никак не напутал, по физике, по диагонали движение должно быть быстрее.
Окно откройся - onclick="return !window.open(this.href)"
George164
Станкостроитель
Станкостроитель
Сообщения: 1892
Зарегистрирован: 23 окт 2011, 00:21
Откуда: Москва-Люберцы

Re: Идеи, алгоритмы и вопросы выжигания лазером

Сообщение George164 »

Planet писал(а):Я думаю ты никак не напутал,
И это тоже, но в данном случае напутал с шагом. Отложилось, что был минимальный шаг 0.1мм. Но это было, когда я при микрошаге 16 ставил на пиксель 8 степов. Потом от этой идеи отказался, и минимум шага стал 0.2, а размер 0.1 остался в голове. У луча 0.1 выдерживается только при слабом прожиге (?). Потом расползается под 0.5 и больше. Сомневаюсь, что есть способы уменьшить пятно или толщину черного на фанере.
Мечта станкостроителя: приезжаешь в Сочи, а там на пляже станки, станки. станки...
George164
Станкостроитель
Станкостроитель
Сообщения: 1892
Зарегистрирован: 23 окт 2011, 00:21
Откуда: Москва-Люберцы

Re: Идеи, алгоритмы и вопросы выжигания лазером

Сообщение George164 »

Горячие пирожки в прямом эфире
Изображение Изображение
Диагональ, пиксель 0.2, время 2 часа 10 минут, размер 12х18см. 900х660 пикселей примерно(оригинал)
Светлая получилась, запустил на 25% помедленнее.
PS Только у меня в последнее время проблемы с загрузкой на cncfiles?
И как снимать видео работающего лазера? Всегда учили, что луч лазера прожигает матрицу фотоаппарата.

Напечатал. Не полегчало. Четкость идеальная, темные места стали темнее, а полутонов как не было так и нет. Наверно, слишком большой контраст дал. Будем учиться.
Мечта станкостроителя: приезжаешь в Сочи, а там на пляже станки, станки. станки...
George164
Станкостроитель
Станкостроитель
Сообщения: 1892
Зарегистрирован: 23 окт 2011, 00:21
Откуда: Москва-Люберцы

Re: Идеи, алгоритмы и вопросы выжигания лазером

Сообщение George164 »

Пустые хлопоты. На моей картинке совы просто нет таких деталей как на образце. Как я ни пытался получить черным верхний левый угол ничего не получается.
Изображение
Мечта станкостроителя: приезжаешь в Сочи, а там на пляже станки, станки. станки...
Ответить