emc2 и со2 лазер

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.
gendos
Мастер
Сообщения: 1114
Зарегистрирован: 06 июл 2011, 15:26
Репутация: 79
Настоящее имя: Геннадий
Откуда: Ростов-на-дону
Контактная информация:

Re: emc2 и со2 лазер

Сообщение gendos »

На компе без лазера работает.Выигрыш по времени на этом файле почти в 2 раза.
Отличный результат.Завтра проверю на лазере.
Потом по возможности сравню с версией 2.7 (при движении по кривой или с изменением направления)
gendos
Мастер
Сообщения: 1114
Зарегистрирован: 06 июл 2011, 15:26
Репутация: 79
Настоящее имя: Геннадий
Откуда: Ростов-на-дону
Контактная информация:

Re: emc2 и со2 лазер

Сообщение gendos »

Проверил работу на лазере .
Все отлично работает.Движение стало очень красивым.
Захотелось сравнить скорость работы EMC2 c DSP контролером с китайских лазеров .
Но нет в наличии DSP контролера. Сейчас создам тему выложу тестовый файл может кто не пожалеет времени на
испытания.
gendos
Мастер
Сообщения: 1114
Зарегистрирован: 06 июл 2011, 15:26
Репутация: 79
Настоящее имя: Геннадий
Откуда: Ростов-на-дону
Контактная информация:

Re: emc2 и со2 лазер

Сообщение gendos »

Вылез небольшой недостаток в работе.
Если нажать стоп .Во время работы лазер не тушится, пока не нажать снова пуск и не дождаться конца программы.
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: emc2 и со2 лазер

Сообщение nkp »

это преодолимо...
попробуем подправить...
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: emc2 и со2 лазер

Сообщение Serg »

В HAL намутить соотв. логику, чтоб по E-STOP отключал лазер.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: emc2 и со2 лазер

Сообщение nkp »

может так:

Код: Выделить всё

loadrt core_xy_kins
loadrt [EMCMOT]EMCMOT base_period_nsec=[EMCMOT]BASE_PERIOD servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[TRAJ]AXES
loadrt probe_parport
loadrt hal_parport cfg="0x378 out  "
setp   parport.0.reset-time 3500
loadrt stepgen step_type=0,0,0
loadrt abs count=1
loadrt pwmgen output_type=1
loadrt scale names=scale.spindle

addf parport.0.read base-thread
addf stepgen.make-pulses base-thread
addf pwmgen.make-pulses base-thread
addf parport.0.write base-thread
addf parport.0.reset base-thread

addf stepgen.capture-position servo-thread
addf motion-command-handler servo-thread
addf motion-controller servo-thread
addf stepgen.update-freq servo-thread
addf scale.spindle servo-thread
addf pwmgen.update servo-thread
addf abs.0 servo-thread

#==================================================
loadrt  wcomp
loadrt  integ
loadrt  toggle
loadrt  edge
loadrt  or2 
loadrt  mux2

addf    mux2.0 servo-thread 
addf    or2.0 servo-thread 
addf    wcomp.0 servo-thread
addf    integ.0 servo-thread
addf    toggle.0 servo-thread
addf    edge.0 servo-thread

setp    mux2.0.in0 0.02  #длина стежка 
setp    mux2.0.in1 1.7   #расстояние между стежками
setp    wcomp.0.max 1.5

net  current-vel integ.0.in
net  res         integ.0.reset   wcomp.0.over  edge.0.in 
net  ss          integ.0.out     wcomp.0.in
net  e_out       edge.0.out      toggle.0.in
setp edge.0.out-width-ns 50

loadrt and2 count=2
addf and2.0 servo-thread
addf and2.1 servo-thread

net spindle-cmd <=     motion.spindle-speed-out  scale.spindle.in
net current-vel <=     motion.current-vel        scale.spindle.gain
net spindle-cmd-out <= scale.spindle.out         pwmgen.0.value
###########################################################################
net program_is_running    halui.program.is-running   and2.1.in0           #
net laser_on              motion.digital-out-01      and2.1.in1           #
net and2_1_out          and2.1.out    and2.0.in0                          #
#net spindle-on <= motion.digital-out-01 =>    and2.0.in0                 #
###########################################################################
net enbl          and2.0.out              pwmgen.0.enable
net s_out         toggle.0.out            or2.0.in1 
net or_out        or2.0.out               and2.0.in1
net digital_out   motion.digital-out-00   or2.0.in0

net s_out   mux2.0.sel
net l_step  wcomp.0.max  mux2.0.out
#-----------------------------------------------------------
net spindle-pwm <= pwmgen.0.pwm

setp pwmgen.0.pwm-freq 10000
setp pwmgen.0.scale    100000
setp pwmgen.0.offset   0.034

setp pwmgen.0.dither-pwm true
net spindle-cw <= motion.spindle-forward
#net probe-in => motion.probe-input

net estop-out => parport.0.pin-01-out
setp         parport.0.pin-02-out-invert 1
net xstep => parport.0.pin-02-out
setp parport.0.pin-02-out-reset 1
setp parport.0.pin-03-out-invert 1
net xdir => parport.0.pin-03-out
setp parport.0.pin-04-out-invert 1
net ystep => parport.0.pin-04-out
setp parport.0.pin-04-out-reset 1
setp parport.0.pin-05-out-invert 1
net ydir => parport.0.pin-05-out
setp parport.0.pin-06-out-invert 1
net zstep => parport.0.pin-06-out
setp parport.0.pin-06-out-reset 1
setp parport.0.pin-07-out-invert 1
net zdir => parport.0.pin-07-out
setp parport.0.pin-14-out-invert 1
net spindle-cw => parport.0.pin-14-out
setp parport.0.pin-16-out-invert 1
net spindle-pwm => parport.0.pin-16-out


setp parport.0.pin-17-out-invert 1
#net xenable => parport.0.pin-17-out

net probe parport.0.pin-10-in-not => motion.probe-input
net probe-in <= parport.0.pin-10-in
net all-limit <= parport.0.pin-11-in-not
net home-z <= parport.0.pin-12-in-not

setp stepgen.1.position-scale [AXIS_0]SCALE
setp stepgen.1.steplen 1
setp stepgen.1.stepspace 0
setp stepgen.1.dirhold 10200
setp stepgen.1.dirsetup 10200
setp stepgen.1.maxaccel [AXIS_0]STEPGEN_MAXACCEL
net xpos-cmd axis.0.motor-pos-cmd => stepgen.1.position-cmd
net xpos-fb stepgen.1.position-fb => axis.0.motor-pos-fb
net xstep <= stepgen.1.step
net xdir <= stepgen.1.dir
net xenable axis.0.amp-enable-out => stepgen.1.enable
net all-limit => axis.1.neg-lim-sw-in
net all-limit => axis.1.pos-lim-sw-in

setp stepgen.0.position-scale [AXIS_1]SCALE
setp stepgen.0.steplen 1
setp stepgen.0.stepspace 0
setp stepgen.0.dirhold 10200
setp stepgen.0.dirsetup 10200
setp stepgen.0.maxaccel [AXIS_1]STEPGEN_MAXACCEL
net ypos-cmd axis.1.motor-pos-cmd => stepgen.0.position-cmd
net ypos-fb stepgen.0.position-fb => axis.1.motor-pos-fb
net ystep <= stepgen.0.step
net ydir <= stepgen.0.dir
net yenable axis.1.amp-enable-out => stepgen.0.enable

net all-limit => axis.0.neg-lim-sw-in
net all-limit => axis.0.pos-lim-sw-in

setp stepgen.2.position-scale [AXIS_2]SCALE
setp stepgen.2.steplen 1
setp stepgen.2.stepspace 0
setp stepgen.2.dirhold 10200
setp stepgen.2.dirsetup 10200
setp stepgen.2.maxaccel [AXIS_2]STEPGEN_MAXACCEL
net zpos-cmd axis.2.motor-pos-cmd => stepgen.2.position-cmd
net zpos-fb stepgen.2.position-fb => axis.2.motor-pos-fb
net zstep <= stepgen.2.step
net zdir <= stepgen.2.dir
net zenable axis.2.amp-enable-out => stepgen.2.enable
net home-z => axis.2.home-sw-in
net all-limit => axis.2.neg-lim-sw-in
net all-limit => axis.2.pos-lim-sw-in


net estop-out <= iocontrol.0.user-enable-out
net estop-out => iocontrol.0.emc-enable-in

net tool-number <= iocontrol.0.tool-prep-number
net tool-change-loopback iocontrol.0.tool-change => iocontrol.0.tool-changed
net tool-prepare-loopback iocontrol.0.tool-prepare => iocontrol.0.tool-prepared
привязались через AND к пину halui.program.is-running(который True только когда программа (G-код) запущена
по идее ,и авост и паузу должно отрабатывать...

Код: Выделить всё

###########################################################################
net program_is_running    halui.program.is-running   and2.1.in0           #
net laser_on              motion.digital-out-01      and2.1.in1           #
net and2_1_out          and2.1.out    and2.0.in0                          #
#net spindle-on <= motion.digital-out-01 =>    and2.0.in0                 #
###########################################################################
gendos
Мастер
Сообщения: 1114
Зарегистрирован: 06 июл 2011, 15:26
Репутация: 79
Настоящее имя: Геннадий
Откуда: Ростов-на-дону
Контактная информация:

Re: emc2 и со2 лазер

Сообщение gendos »

[highlight=][/highlight]
Понял .Спасибо.
Завтра попробую.
LexaK
Опытный
Сообщения: 113
Зарегистрирован: 30 ноя 2013, 15:38
Репутация: 63
Настоящее имя: Алексей
Откуда: Новороссийск
Контактная информация:

Re: emc2 и со2 лазер

Сообщение LexaK »

Я попробовал вот эту штуку из поста 52:
Есть вот такая конфигурация:
вроде как она поддерживает гравировку растровых изображений.
https://github.com/jv4779/2x_laser
Результат очень понравился:http://www.youtube.com/watch?v=VTU2Eyr6MuY.
Скорость обработки на видео 6000 мм/мин, гравировка в обоих направлениях. Размер напечатанной картинки 70мм*50мм, DPI 200 = шаг по вертикали 0,127мм. Размер g-cod'а 161 кБ (!)
Единственное, пришлось пришлось исправить авторскую ошибку в файлах laserraster.comp и raster_engrave.py, из-за которой raster_engrave.py некорректно создавал g-code в метрической системе, а laserraster.comp некорректно обрабатывал дюймовый g-code на метрическом станке.
Что не понравилось:
– скрипт не имеет никакого пользовательского интерфейса и все параметры нужно править в теле скрипта. Впрочем, это не сложно, так как они все расположены в начале.
– скрипт не понимает UTF-8, соответственно русские символы в пути к файлу не поддерживаются. Поэтому прошу Nick'а помочь побороть эту беду.
В аттаче исправленные файлы.
Вложения
LaserEngraver.zip
(9.5 КБ) 512 скачиваний
Последний раз редактировалось LexaK 26 авг 2014, 20:49, всего редактировалось 2 раза.
gendos
Мастер
Сообщения: 1114
Зарегистрирован: 06 июл 2011, 15:26
Репутация: 79
Настоящее имя: Геннадий
Откуда: Ростов-на-дону
Контактная информация:

Re: emc2 и со2 лазер

Сообщение gendos »

Судя по видео размер поля гравировки зависит от изображения , а когда я пробовал гравировать на китайском гравере там поле задавалось по максимальным габаритам.
Я правильно все понял ?
LexaK
Опытный
Сообщения: 113
Зарегистрирован: 30 ноя 2013, 15:38
Репутация: 63
Настоящее имя: Алексей
Откуда: Новороссийск
Контактная информация:

Re: emc2 и со2 лазер

Сообщение LexaK »

Да, УП формируется с учетом рисунка. Над белыми полями, расположенными по краям, головка не ездит. Но, к сожалению, над белыми полями, расположенными в середине изображения, головка движется с рабочей скоростью (G1), а не с холостой (G0).
Кроме того, скрипт формирует поля для разгона, чтобы головка проходила по полю гравировки с постоянной скоростью.
gendos
Мастер
Сообщения: 1114
Зарегистрирован: 06 июл 2011, 15:26
Репутация: 79
Настоящее имя: Геннадий
Откуда: Ростов-на-дону
Контактная информация:

Re: emc2 и со2 лазер

Сообщение gendos »

LexaK писал(а):Да, УП формируется с учетом рисунка. Над белыми полями, расположенными по краям, головка не ездит. Но, к сожалению, над белыми полями, расположенными в середине изображения, головка движется с рабочей скоростью (G1), а не с холостой (G0).
Кроме того, скрипт формирует поля для разгона, чтобы головка проходила по полю гравировки с постоянной скоростью.
Ну это уже большой выигрыш по времени.
А скорость G1 можно в настройках увеличить до G0.
Кто подскажет DSP контоллеры тоже гравируют растром по максимальным габаритам или только рисунок ?
LexaK
Опытный
Сообщения: 113
Зарегистрирован: 30 ноя 2013, 15:38
Репутация: 63
Настоящее имя: Алексей
Откуда: Новороссийск
Контактная информация:

Re: emc2 и со2 лазер

Сообщение LexaK »

А скорость G1 можно в настройках увеличить до G0.
Пробовал G1 увеличивать до 15000. Только на дереве рисунок получается слишком бледным. Может, для пластиков такой режим сойдет.
LexaK
Опытный
Сообщения: 113
Зарегистрирован: 30 ноя 2013, 15:38
Репутация: 63
Настоящее имя: Алексей
Откуда: Новороссийск
Контактная информация:

Re: emc2 и со2 лазер

Сообщение LexaK »

Nick, а реально ли этот скрипт встроить в Gcodetools? Ибо очень неудобно растр обсчитывать в одном месте, а обрезку к нему - в другом, рискуя при этом не попасть. Затем их объединять.
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: emc2 и со2 лазер

Сообщение Nick »

Надо разобраться... В принципе реально... только надо понять как определить что надо гравировать, а что резать.

Как задается картинка скрипту - через коммандную строку? Как задаются границы обработки?
LexaK
Опытный
Сообщения: 113
Зарегистрирован: 30 ноя 2013, 15:38
Репутация: 63
Настоящее имя: Алексей
Откуда: Новороссийск
Контактная информация:

Re: emc2 и со2 лазер

Сообщение LexaK »

Как задается картинка скрипту - через коммандную строку?
Можно через командную строку. Если скрипт запускается без параметров, открывается стандартное окно открытия файла. Вывод УП на стандартный вывод (каламбур получился). Выглядит это так:
– из EMC2 открыть raster_engrave.py,
– результате работы скрипта еще раз появляется окно открытия файла - указать картинку в формате *.png', '*.gif', '*.jpg', '*.tif', '*.bmp'
УП передается непосредственно в EMC2. Затем можно сделать Файл-Сохранить_код_как и сохранить готовую УП для дальнейшего использования.
Как задаются границы обработки?
Границами обработки служат границы самой картинки. Вычисляются как (Кол-во_пикселей/DPI). Можно задать размеры обработки принудительно - скрипт сам отмасштабирует картинку.
только надо понять как определить что надо гравировать, а что резать.
Делать две УП - одну для гравировки, другую для резки. Выбираем векторы, тыкаем path-to-gcode. Выбираем растр, тыкаем reaster-to-gcode.

Вот параметры, которые задаются в теле скрипта:

Код: Выделить всё

SPEED = 6000                      //скорость обработки в ед/мин
ACCEL = 6000                     //ускорение оси. Вместе с параметром SPEED служат для расчета полей разгона.
laser_power = 100               //мощность лазера. Пин задается в 2x_Laser.hal стандартными средствами
laser_on_time = 1               //длительность точки в мс. Если параметр слишком мал – точка выходит бледной, если слишком велик - смазанной
air_assist = True                 //включение воздуха. Пин задается в 2x_Laser.hal стандартными средствами
bidirectional_raster = True  //направление гравировки: в одном направлении / в обоих. Для режима "в обоих" поле разгона прилепливается с двух сторон картинки.
is_metric = True                 //метрическая / дюймовая систепма 
origin_x = 0                        //начальная точка нуля в абсолютных координатах (сдвиг X/Y)
origin_y = 0
# center, <top|middle|bottom><left|center|right>
origin_loc = 'topleft'             //положение нуля на растре
# for mirroring
mirror_x = False                  //зеркалить
mirror_y = False
# output raster Falsesize
keep_aspect_ratio = True    //постоянное соотношение сторон
raster_w = -1                      //ширина напечатанного растра в единицах. Если == -1 то ширина высчитывается как (Кол-во_пикселей/DPI)
raster_h = -1                       //высота напечатанного растра в единицах. Если == -1 то ширина высчитывается как (Кол-во_пикселей/DPI)
# raster dpi
XDPI = 200                          //DPI напечатанной картинки.
YDPI = 200
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: emc2 и со2 лазер

Сообщение Nick »

Так... уже лучше...
надо дописать - скрипт который рассчиает все эти параметры, все это потом запихиваем в коммандрную строку, где выводим нашу картинку в png -- а это можно сделать из консоли - inkscape умеет экпортировать заданные объекты в растр из консоли...

Осталось только написать :)
gendos
Мастер
Сообщения: 1114
Зарегистрирован: 06 июл 2011, 15:26
Репутация: 79
Настоящее имя: Геннадий
Откуда: Ростов-на-дону
Контактная информация:

Re: emc2 и со2 лазер

Сообщение gendos »

Сделал еще один вариант механики лазерного гравера по кожаным деталям обуви (более жесткий) управление EMC2 кинематика CoreXY + LinuxCNC.
Большое спасибо форуму и всем кто помогал мне в этом нелегком для меня деле.
Работа лазера меня устраивает. Вот видео работы.На видео не видно -
линии выжигаются пунктиром точки круг диаметром 0.8мм
http://youtu.be/fh969oTLSWE
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: emc2 и со2 лазер

Сообщение Nick »

:good:!

А зачем CoreXY? Чтобы уменьшить вес каретки?
Как управляешь лазером? M3 M5?
gendos
Мастер
Сообщения: 1114
Зарегистрирован: 06 июл 2011, 15:26
Репутация: 79
Настоящее имя: Геннадий
Откуда: Ростов-на-дону
Контактная информация:

Re: emc2 и со2 лазер

Сообщение gendos »

Nick писал(а)::good:!

А зачем CoreXY? Чтобы уменьшить вес каретки?
Как управляешь лазером? M3 M5?
CoreXY чтоб уменьшить вес каретки , я не уверен что я много выиграл , но так как уже разобрался с этой кинематикой решил делать на ней .
Лазером управляю вкл m62p1 , выкл m63p1 СПАСИБО nkp
На мой взгляд я уже выжал из нее все по максимуму. Выше 30 м/мин уже не справляется комп при BASE_PERIOD = 25000
Теперь фотел бы сделать Laser Galvo на EMC2 ,
http://www.youtube.com/watch?v=gK14SaaYMoc
только не хотелось бы изобретать велосипед , и использовать как можно больше готовых узлов,но пока не собрал необходимой информации. Знакомый был в Турции видел у турка самоделку Laser Galvo , на которой
он в промышленных масштабах гравирует лазером по коже для обуви , значит комплектующие на нее существуют.
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: emc2 и со2 лазер

Сообщение Nick »

Так на форуме проскакивали предложения диодов лазерных... я даже уравал один. мощность правдо слабенькая...
Или тебя интересует именно голова поворотная?
В этом случае можно поробовать дергать зеркала линейным движком от винчестерных головок. Скорость будет адовая :).
Но у него не большой угол работы - иначе фокус будет теряться.
Ответить

Вернуться в «LinuxCNC»