Задача
Управление лазерной резкой при помощи EMC2 выполняется достаточно просто. Также мы можем гравировать контуры без особых усилий - эта та же резка но на более большой скорости, или с более маленькой мощностью. Но если мы хотим не разрезать, а гравировать растровый рисунок возникает проблема, как управлять мощностью лазера на большой скорости?К сожалению, методы с управлением через M62/M63, через скорость шпинделя или включение/выключение вспомогательных устройств не работает, т.к. перед переключением этих режимов станок останавливается до 0. И скорость обработки падает.
Как управлять лазером, возьмем простой вариант - пин шим, который задает мощность лазера в текущий момент.
Вот пример гравировки:
https://www.youtube.com/watch?v=dT5m0YdxhjM
Варианты решения
Одним из вариантов называли добавление координаты z, с оочень большим ускорением и не большим перемещением, выход этой координаты подаем на pwm с необходимым коэффициентом.Плюсы: просто, не нужно ничего дополнительного писать.
Минусы: может притормаживать на резких изменениях интенсивности, длинный Gкод. Никак не отследить скорость перемещения на краях рисунка.
Второй вариант, можно написать компонент, который бы контролировал мощность лазера. Но основной проблемой такого компонента является чтение громадной картинки в реальном времени. Как вариант можно попробовать реализовать такой компонент через streamer, читаем из файла строку, одно значение на шаг, потом вешаем компонент на, base-thread который отслеживает перемещение по оси x и выставляет необходимое значение.
Плюсы: точно не будет остановок. Gкод будет коротким - просто n строчек для прохода змейкой по картинке. Есть возможность отслеживать текущую скорость и в соответствии с ней выставлять необходимую мощность.
Минусы: нужно писать компонент и специальным образом готовить файл (нужно написать спец препроцессор для графических файлов).
На linuxcnc была коротенькая тема по гравировке, но ничего дельного они там не решили, писали, что кто-то сделал, вроде по первому пути, но решения я не увидел. (Вот эта тема http://www.linuxcnc.org/component/optio ... g,english/ )
У кого есть какие-нибудь соображения ?