Re: Модернизация фрезера по алюминию 300х250х160
Добавлено: 12 фев 2024, 17:21
Вытяжка из бокса не спасёт рельсы и винты... Так что отвод из зоны резания ИМХО нужен.
Статьи, обзоры, цены на станки и комплектующие.
https://www.cnc-club.ru/forum/
Вытяжка из бокса не спасёт рельсы и винты... Так что отвод из зоны резания ИМХО нужен.
Тоже вариант... Поначалу так и будет, а там посмотрим. Сейчас важнее разобраться с жёсткостью станка, а то 0,4 мм смещения что-то не вдохновляют.
Код: Выделить всё
loadrt [KINS]KINEMATICS66748367
#autoconverted [EMCMOT]EMCMOT base_period_nsec=[EMCMOT]BASE_PERIOD servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[KINS]JOINTS kins=trivkinstp=tp
loadrt [EMCMOT]EMCMOT base_period_nsec=[EMCMOT]BASE_PERIOD servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[KINS]JOINTS
loadrt hal_pi_gpio dir=15581159 exclude=0
loadrt stepgen step_type=0,0,0
loadusr -W hal_input -KRAL :0
addf hal_pi_gpio.read base-thread
addf stepgen.make-pulses base-thread
addf hal_pi_gpio.write 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
net SPINDLE spindle.0.on <= hal_pi_gpio.pin-16-out
net xstep => hal_pi_gpio.pin-07-out
net xdir => hal_pi_gpio.pin-22-out
net ystep => hal_pi_gpio.pin-12-out
net ydir => hal_pi_gpio.pin-26-out
net zstep => hal_pi_gpio.pin-15-out
net zdir => hal_pi_gpio.pin-27-out
setp stepgen.0.position-scale [JOINT_0]SCALE
setp stepgen.0.steplen 1
setp stepgen.0.stepspace 0
setp stepgen.0.dirhold 65000
setp stepgen.0.dirsetup 65000
setp stepgen.0.maxaccel [JOINT_0]STEPGEN_MAXACCEL
net xpos-cmd joint.0.motor-pos-cmd => stepgen.0.position-cmd
net xpos-fb stepgen.0.position-fb => joint.0.motor-pos-fb
net xstep <= stepgen.0.step
net xdir <= stepgen.0.dir
net xenable joint.0.amp-enable-out => stepgen.0.enable
setp stepgen.1.position-scale [JOINT_1]SCALE
setp stepgen.1.steplen 1
setp stepgen.1.stepspace 0
setp stepgen.1.dirhold 65000
setp stepgen.1.dirsetup 65000
setp stepgen.1.maxaccel [JOINT_1]STEPGEN_MAXACCEL
net ypos-cmd joint.1.motor-pos-cmd => stepgen.1.position-cmd
net ypos-fb stepgen.1.position-fb => joint.1.motor-pos-fb
net ystep <= stepgen.1.step
net ydir <= stepgen.1.dir
net yenable joint.1.amp-enable-out => stepgen.1.enable
setp stepgen.2.position-scale [JOINT_2]SCALE
setp stepgen.2.steplen 1
setp stepgen.2.stepspace 0
setp stepgen.2.dirhold 65000
setp stepgen.2.dirsetup 65000
setp stepgen.2.maxaccel [JOINT_0]STEPGEN_MAXACCEL
net zpos-cmd joint.2.motor-pos-cmd => stepgen.2.position-cmd
net zpos-fb stepgen.2.position-fb => joint.2.motor-pos-fb
net zstep <= stepgen.2.step
net zdir <= stepgen.2.dir
net zenable joint.2.amp-enable-out => stepgen.2.enable
net estop-out <= iocontrol.0.user-enable-out
net estop-out => iocontrol.0.emc-enable-in
loadusr -W hal_manualtoolchange
net tool-change iocontrol.0.tool-change => hal_manualtoolchange.change
net tool-changed iocontrol.0.tool-changed <= hal_manualtoolchange.changed
net tool-number iocontrol.0.tool-prep-number => hal_manualtoolchange.number
net tool-prepare-loopback iocontrol.0.tool-prepare => iocontrol.0.tool-prepared
net home-x <= hal_pi_gpio.pin-29-in
net home-x => joint.0.home-sw-in
net home-y <= hal_pi_gpio.pin-31-in
net home-y => joint.1.home-sw-in
net home-z <= hal_pi_gpio.pin-35-in
net home-z => joint.2.home-sw-in
net home-x => joint.0.neg-lim-sw-in
net home-y => joint.1.neg-lim-sw-in
net home-z => joint.2.pos-lim-sw-in
чтото дофига для такого станка. Надо у себя "на картонном" замерить
я так и оставил... единственной что все таки хочу сделать это листы закрывающие нижний ШВП и рельсы. туда весь срач идет
В этой конструкции стол неподвижен, а рельсы вынесены вверх, так что со "срачем" должно быть чуток получше... но это не точно. Пока же продолжаю потихоньку собирать электронику. Пока на "демоборде" (то бишь на фанерке...)
Код: Выделить всё
# Generated by stepconf 1.1 at Sun Feb 18 18:52:50 2024
# If you make changes to this file, they will be
# overwritten when you run stepconf again
loadrt [KINS]KINEMATICS
loadrt [EMCMOT]EMCMOT base_period_nsec=[EMCMOT]BASE_PERIOD servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[KINS]JOINTS
loadrt hal_pi_gpio dir=15581159 exclude=0
loadrt stepgen step_type=0,0,0
loadrt not count=2
addf hal_pi_gpio.read base-thread
addf stepgen.make-pulses base-thread
addf hal_pi_gpio.write 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 not.0 servo-thread
addf not.1 servo-thread
net SPINDLE spindle.0.on <= hal_pi_gpio.pin-16-out
net ydir => not.0.in
net y-not-dir not.0.out => hal_pi_gpio.pin-26-out
net zdir => not.1.in
net z-not-dir not.1.out => hal_pi_gpio.pin-05-out
net xstep => hal_pi_gpio.pin-07-out
net xdir => hal_pi_gpio.pin-22-out
net ystep => hal_pi_gpio.pin-12-out
#net ydir => hal_pi_gpio.pin-26-out
net zstep => hal_pi_gpio.pin-19-out
#net zdir => hal_pi_gpio.pin-05-out
net xenable => hal_pi_gpio.pin-03-out
net min-home-x <= hal_pi_gpio.pin-29-in
net min-home-y <= hal_pi_gpio.pin-31-in
#net max-home-u <= hal_pi_gpio.pin-35-in
net all-limit <= hal_pi_gpio.pin-36-in
setp stepgen.0.position-scale [JOINT_0]SCALE
setp stepgen.0.steplen 1
setp stepgen.0.stepspace 0
setp stepgen.0.dirhold 70000
setp stepgen.0.dirsetup 70000
setp stepgen.0.maxaccel [JOINT_0]STEPGEN_MAXACCEL
net xpos-cmd joint.0.motor-pos-cmd => stepgen.0.position-cmd
net xpos-fb stepgen.0.position-fb => joint.0.motor-pos-fb
net xstep <= stepgen.0.step
net xdir <= stepgen.0.dir
net xenable joint.0.amp-enable-out => stepgen.0.enable
net min-home-x => joint.0.home-sw-in
net all-limit => joint.0.neg-lim-sw-in
net all-limit => joint.0.pos-lim-sw-in
setp stepgen.1.position-scale [JOINT_1]SCALE
setp stepgen.1.steplen 1
setp stepgen.1.stepspace 0
setp stepgen.1.dirhold 70000
setp stepgen.1.dirsetup 70000
setp stepgen.1.maxaccel [JOINT_1]STEPGEN_MAXACCEL
net ypos-cmd joint.1.motor-pos-cmd => stepgen.1.position-cmd
net ypos-fb stepgen.1.position-fb => joint.1.motor-pos-fb
net ystep <= stepgen.1.step
net ydir <= stepgen.1.dir
net yenable joint.1.amp-enable-out => stepgen.1.enable
net min-home-y => joint.1.home-sw-in
net all-limit => joint.1.neg-lim-sw-in
net all-limit => joint.1.pos-lim-sw-in
setp stepgen.2.position-scale [JOINT_2]SCALE
setp stepgen.2.steplen 1
setp stepgen.2.stepspace 0
setp stepgen.2.dirhold 70000
setp stepgen.2.dirsetup 70000
setp stepgen.2.maxaccel [JOINT_2]STEPGEN_MAXACCEL
net zpos-cmd joint.2.motor-pos-cmd => stepgen.2.position-cmd
net zpos-fb stepgen.2.position-fb => joint.2.motor-pos-fb
net zstep <= stepgen.2.step
net zdir <= stepgen.2.dir
net zenable joint.2.amp-enable-out => stepgen.2.enable
net home-z <= hal_pi_gpio.pin-35-in
net home-z => joint.2.home-sw-in
net all-limit => joint.2.neg-lim-sw-in
net all-limit => joint.2.pos-lim-sw-in
net estop-out <= iocontrol.0.user-enable-out
net estop-out => iocontrol.0.emc-enable-in
net tool-change <= iocontrol.0.tool-change
net tool-changed => iocontrol.0.tool-changed
net tool-number <= iocontrol.0.tool-prep-number
net tool-prepare-loopback iocontrol.0.tool-prepare => iocontrol.0.tool-prepared
Код: Выделить всё
# Generated by stepconf 1.1 at Sun Feb 25 16:53:00 2024
# If you make changes to this file, they will be
# overwritten when you run stepconf again
[EMC]
MACHINE = argon_stepconf
DEBUG = 0
VERSION = 1.1
[DISPLAY]
DISPLAY = qtvcp qtdragon
PREFERENCE_FILE_PATH = WORKINGFOLDER/qtdragon.pref
EDITOR = gedit
POSITION_OFFSET = RELATIVE
POSITION_FEEDBACK = ACTUAL
ARCDIVISION = 64
GRIDS = 10mm 20mm 50mm 100mm 1in 2in 5in 10in
MAX_FEED_OVERRIDE = 1.2
MIN_SPINDLE_OVERRIDE = 0.5
MAX_SPINDLE_OVERRIDE = 1.2
DEFAULT_LINEAR_VELOCITY = 1.50
MIN_LINEAR_VELOCITY = 0
MAX_LINEAR_VELOCITY = 3.00
CYCLE_TIME = 0.100
INTRO_GRAPHIC = linuxcnc.gif
INTRO_TIME = 5
PROGRAM_PREFIX = /home/argon/linuxcnc/nc_files
INCREMENTS = 5mm 1mm .5mm .1mm .05mm .01mm .005mm
[KINS]
JOINTS = 3
KINEMATICS = trivkins coordinates=XYZ
[FILTER]
PROGRAM_EXTENSION = .png,.gif,.jpg Greyscale Depth Image
PROGRAM_EXTENSION = .py Python Script
PROGRAM_EXTENSION = .nc,.tap G-Code File
png = image-to-gcode
gif = image-to-gcode
jpg = image-to-gcode
py = python
[TASK]
TASK = milltask
CYCLE_TIME = 0.010
[RS274NGC]
PARAMETER_FILE = linuxcnc.var
[EMCMOT]
EMCMOT = motmod
COMM_TIMEOUT = 1.0
BASE_PERIOD = 90000
SERVO_PERIOD = 800000
[HAL]
HALFILE = argon_stepconf.hal
HALFILE = custom.hal
POSTGUI_HALFILE = postgui_call_list.hal
[TRAJ]
COORDINATES = X Y Z
LINEAR_UNITS = mm
ANGULAR_UNITS = degree
DEFAULT_LINEAR_VELOCITY = 2.50
MAX_LINEAR_VELOCITY = 25.00
[EMCIO]
EMCIO = io
CYCLE_TIME = 0.100
TOOL_TABLE = tool.tbl
#*** AXIS_X *******************************
[AXIS_X]
MAX_VELOCITY = 3.0
MAX_ACCELERATION = 750.0
MIN_LIMIT = -0.001
MAX_LIMIT = 280.0
[JOINT_0]
TYPE = LINEAR
HOME = 0.0
MIN_LIMIT = -0.001
MAX_LIMIT = 280.0
MAX_VELOCITY = 3.0
MAX_ACCELERATION = 750.0
STEPGEN_MAXACCEL = 937.5
SCALE = 1600.0
FERROR = 1
MIN_FERROR = .25
HOME_OFFSET = 0.000000
HOME_SEARCH_VEL = -1.500000
HOME_LATCH_VEL = -0.5
HOME_IGNORE_LIMITS = YES
#******************************************
#*** AXIS_Y *******************************
[AXIS_Y]
MAX_VELOCITY = 3.0
MAX_ACCELERATION = 750.0
MIN_LIMIT = -0.001
MAX_LIMIT = 230.0
[JOINT_1]
TYPE = LINEAR
HOME = 0.0
MIN_LIMIT = -0.001
MAX_LIMIT = 230.0
MAX_VELOCITY = 3.0
MAX_ACCELERATION = 750.0
STEPGEN_MAXACCEL = 937.5
SCALE = 640.0
FERROR = 1
MIN_FERROR = .25
HOME_OFFSET = 0.000000
HOME_SEARCH_VEL = -1.500000
HOME_LATCH_VEL = -0.5
HOME_IGNORE_LIMITS = YES
#******************************************
#*** AXIS_Z *******************************
[AXIS_Z]
MAX_VELOCITY = 3.0
MAX_ACCELERATION = 750.0
MIN_LIMIT = -95.0
MAX_LIMIT = 0.001
[JOINT_2]
TYPE = LINEAR
HOME = 0.0
MIN_LIMIT = -95.0
MAX_LIMIT = 0.001
MAX_VELOCITY = 3.0
MAX_ACCELERATION = 750.0
STEPGEN_MAXACCEL = 937.5
SCALE = 2000.0
FERROR = 1
MIN_FERROR = .25
HOME_OFFSET = 0.0
HOME_SEARCH_VEL = 1.500000
HOME_LATCH_VEL = 0.5
HOME_IGNORE_LIMITS = YES
#******************************************
Фреза твердосплавная концевая диаметром 2 мм, рабочая длина 17 мм. Подача 180 мм/мин (максимальная при текущих ограничениях скорости). Для шпинделя установил 400 Гц на частотнике, что означает 24000 оборотов/мин., если ничего не путаю. Планирую медленно повышать подачу до 300 мм/мин или около того (до скольки позволит raspberry pi).
На 1D - 2 мм за проход.
Ну, как я понял, смысл следующий. В linuxcnc есть "базовый" цикл и "сервоцикл". Шаги для GPIO, как и для LPT в обычном компьютере, генерируются с сервоцикле, но также там крутится ещё куча всего. Если сделать цикл слишком маленьким, то он не успеет всё отработать и заглючит/пропустит/неправильно отработает. Если ставить цикл слишком большим, то ты уменьшаешь скорость генерации шагов (генерируется один шаг в один сервоцикл для каждого драйвера максимум). Другими словами - слишком быстро, заглючит, слишком медленно - нельзя поставить высокую скорость. Точнее можно, но генерировать шаги он опять же не будет правильно, но уже по причине того, что за единицу времени просто недостаточно сервоциклов для генерации нужного количества шагов.
Код: Выделить всё
net s-en spindle.0.on arisc.gpio.PC4-out
Код: Выделить всё
net max-home-z <= arisc.gpio.PA10-in
net x-en joint.0.amp-enable-out arisc.pwm.0.enable arisc.gpio.PA12-out
Код: Выделить всё
# axis 1 setup
# PD14:STEP, PA21:DIR, PA12:EN
setp arisc.pwm.1.pos-scale [JOINT_1]SCALE
setp arisc.pwm.1.dc-cmd 0.5 # 50%
setp arisc.pwm.1.dc-max-t 5000
setp arisc.pwm.1.dir-hold 50000
setp arisc.pwm.1.dir-setup 50000
setp arisc.pwm.1.pwm-port 3 # PD
setp arisc.pwm.1.pwm-pin 14
setp arisc.pwm.1.dir-port 0 # PA
setp arisc.pwm.1.dir-pin 21
setp arisc.pwm.1.dir-invert 1
net y-pos-cmd joint.1.motor-pos-cmd arisc.pwm.1.pos-cmd
net y-pos-fb joint.1.motor-pos-fb arisc.pwm.1.pos-fb
net y-en joint.1.amp-enable-out arisc.pwm.1.enable
Код: Выделить всё
# load RT components
loadrt [KINS]KINEMATICS
loadrt [EMCMOT]EMCMOT base_period_nsec=[EMCMOT]BASE_PERIOD servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[KINS]JOINTS
loadrt arisc pwm="p,p,p" out="PA12,PC4" in="PA7,PA8,PA10"
# add RT functions to the servo thread
addf arisc.gpio.read servo-thread
addf arisc.pwm.read servo-thread
addf motion-command-handler servo-thread
addf motion-controller servo-thread
addf arisc.gpio.write servo-thread
addf arisc.pwm.write servo-thread
# Homes
net min-home-x <= arisc.gpio.PA7-in
net min-home-y <= arisc.gpio.PA8-in
net max-home-z <= arisc.gpio.PA10-in
net min-home-x => joint.0.home-sw-in
net min-home-y => joint.1.home-sw-in
net max-home-z => joint.2.home-sw-in
# spindle setup
net s-en spindle.0.on arisc.gpio.PC4-out
# axis 0 setup
# PA6:STEP, PA2:DIR, PA12:EN
setp arisc.pwm.0.pos-scale [JOINT_0]SCALE
setp arisc.pwm.0.dc-cmd 0.5 # 50%
setp arisc.pwm.0.dc-max-t 5000
setp arisc.pwm.0.dir-hold 50000
setp arisc.pwm.0.dir-setup 50000
setp arisc.pwm.0.pwm-port 0 # PA
setp arisc.pwm.0.pwm-pin 6
setp arisc.pwm.0.dir-port 0 # PA
setp arisc.pwm.0.dir-pin 2
net x-pos-cmd joint.0.motor-pos-cmd arisc.pwm.0.pos-cmd
net x-pos-fb joint.0.motor-pos-fb arisc.pwm.0.pos-fb
net x-en joint.0.amp-enable-out arisc.pwm.0.enable arisc.gpio.PA12-out
# axis 1 setup
# PD14:STEP, PA21:DIR, PA12:EN
setp arisc.pwm.1.pos-scale [JOINT_1]SCALE
setp arisc.pwm.1.dc-cmd 0.5 # 50%
setp arisc.pwm.1.dc-max-t 5000
setp arisc.pwm.1.dir-hold 50000
setp arisc.pwm.1.dir-setup 50000
setp arisc.pwm.1.pwm-port 3 # PD
setp arisc.pwm.1.pwm-pin 14
setp arisc.pwm.1.dir-port 0 # PA
setp arisc.pwm.1.dir-pin 21
setp arisc.pwm.1.dir-invert 1
net y-pos-cmd joint.1.motor-pos-cmd arisc.pwm.1.pos-cmd
net y-pos-fb joint.1.motor-pos-fb arisc.pwm.1.pos-fb
net y-en joint.1.amp-enable-out arisc.pwm.1.enable
# axis 2 setup
# PA11:STEP, PC0:DIR, PA12:EN
setp arisc.pwm.2.pos-scale [JOINT_2]SCALE
setp arisc.pwm.2.dc-cmd 0.5 # 50%
setp arisc.pwm.2.dc-max-t 5000
setp arisc.pwm.2.dir-hold 50000
setp arisc.pwm.2.dir-setup 50000
setp arisc.pwm.2.pwm-port 2 # PC
setp arisc.pwm.2.pwm-pin 0
setp arisc.pwm.2.dir-port 0 # PA
setp arisc.pwm.2.dir-pin 11
setp arisc.pwm.2.dir-invert 1
net z-pos-cmd joint.2.motor-pos-cmd arisc.pwm.2.pos-cmd
net z-pos-fb joint.2.motor-pos-fb arisc.pwm.2.pos-fb
net z-en joint.2.amp-enable-out arisc.pwm.2.enable
# other IO setup
net estop iocontrol.0.user-enable-out iocontrol.0.emc-enable-in
Код: Выделить всё
[EMC]
MACHINE = 3A_test
DEBUG = 0
VERSION = 1.1
[DISPLAY]
DISPLAY = axis
EDITOR = gedit
POSITION_OFFSET = RELATIVE
POSITION_FEEDBACK = ACTUAL
ARCDIVISION = 64
GRIDS = 10mm 20mm 50mm 100mm 1in 2in 5in 10in
MAX_FEED_OVERRIDE = 2.0
MIN_SPINDLE_OVERRIDE = 0.5
MAX_SPINDLE_OVERRIDE = 2.0
DEFAULT_LINEAR_VELOCITY = 5.00
MIN_LINEAR_VELOCITY = 0
MAX_LINEAR_VELOCITY = 25.0
INTRO_GRAPHIC = linuxcnc.gif
INTRO_TIME = 2
PROGRAM_PREFIX = /home/dima/linuxcnc/nc_files
INCREMENTS = 5mm 1mm .5mm .1mm .05mm .01mm .005mm
[KINS]
JOINTS = 3
KINEMATICS = trivkins coordinates=XYZ
[FILTER]
PROGRAM_EXTENSION = .png,.gif,.jpg Greyscale Depth Image
PROGRAM_EXTENSION = .py Python Script
PROGRAM_EXTENSION = .nc,.tap G-Code File
png = image-to-gcode
gif = image-to-gcode
jpg = image-to-gcode
py = python
[TASK]
TASK = milltask
CYCLE_TIME = 0.010
[RS274NGC]
PARAMETER_FILE = config.var
[EMCMOT]
EMCMOT = motmod
COMM_TIMEOUT = 1.0
BASE_PERIOD = 200000
SERVO_PERIOD = 1000000
[HAL]
HALFILE = config.hal
[TRAJ]
COORDINATES = X Y Z
LINEAR_UNITS = mm
ANGULAR_UNITS = degree
DEFAULT_LINEAR_VELOCITY = 5.0
MAX_LINEAR_VELOCITY = 25.00
[EMCIO]
EMCIO = io
CYCLE_TIME = 0.100
TOOL_TABLE = tool.tbl
[AXIS_X]
MAX_VELOCITY = 15.0
MAX_ACCELERATION = 200.0
MIN_LIMIT = -0.001
MAX_LIMIT = 280.0
[JOINT_0]
TYPE = LINEAR
HOME = 0.0
MIN_LIMIT = -0.001
MAX_LIMIT = 280.0
MAX_VELOCITY = 15.0
MAX_ACCELERATION = 200.0
SCALE = 1600.0
FERROR = 1
MIN_FERROR = 0.25
HOME_OFFSET = 0.0
HOME_SEARCH_VEL = -2.5
HOME_LATCH_VEL = -0.5
HOME_IGNORE_LIMITS = YES
[AXIS_Y]
MAX_VELOCITY = 6.0
MAX_ACCELERATION = 200.0
MIN_LIMIT = -0.001
MAX_LIMIT = 230.0
[JOINT_1]
TYPE = LINEAR
HOME = 0.0
MIN_LIMIT = -0.001
MAX_LIMIT = 230.0
MAX_VELOCITY = 6.0
MAX_ACCELERATION = 200.0
SCALE = 640.0
FERROR = 1
MIN_FERROR = 0.25
HOME_OFFSET = 0.0
HOME_SEARCH_VEL = -2.5
HOME_LATCH_VEL = -0.5
HOME_IGNORE_LIMITS = YES
[AXIS_Z]
MAX_VELOCITY = 8.0
MAX_ACCELERATION = 200.0
MIN_LIMIT = -95.0
MAX_LIMIT = 0.001
[JOINT_2]
TYPE = LINEAR
HOME = 0.0
MIN_LIMIT = -95.0
MAX_LIMIT = 0.001
MAX_VELOCITY = 8.0
MAX_ACCELERATION = 200.0
SCALE = 1000.0
FERROR = 1
MIN_FERROR = 0.25
HOME_OFFSET = 0.0
HOME_SEARCH_VEL = 2.5
HOME_LATCH_VEL = 0.5
HOME_IGNORE_LIMITS = YES