Модернизация фрезера по алюминию 300х250х160

Тяжелые фрезерные станки по металлу.
argon86
Кандидат
Сообщения: 69
Зарегистрирован: 24 сен 2021, 09:54
Репутация: 7
Настоящее имя: Константин Викторович Шатунов
Откуда: Москва
Контактная информация:

Re: Модернизация фрезера по алюминию 300х250х160

Сообщение argon86 »

sinkacnc писал(а): 12 фев 2024, 15:53
argon86 писал(а): Система аспирации (пылесос) не помогает?
пока не сделал, да и я планировал фильтровать воздух в боксе, а не пылесосить под фрезой. Можно попробовать поставить экран, чтоб шпиндель не дул на место реза, может тогда меньше взвеси будет подниматься
Вытяжка из бокса не спасёт рельсы и винты... Так что отвод из зоны резания ИМХО нужен.
argon86
Кандидат
Сообщения: 69
Зарегистрирован: 24 сен 2021, 09:54
Репутация: 7
Настоящее имя: Константин Викторович Шатунов
Откуда: Москва
Контактная информация:

Re: Модернизация фрезера по алюминию 300х250х160

Сообщение argon86 »

Продолжаю потихоньку собирать станок. Прикрутил концевики, установил шпиндель и, конечно, провёл "стандартный" тест жёсткости станка с электронным безменом. Правда давил с силой всего 5 кг - больше было неудобно, да и мало ли что...
Результат следующий - при максимально опущенной вниз оси Z смещение в направлении оси X или Y при нагрузке 5 кг - 0,3...0,4мм.
В среднем положении шпинделя при той же нагрузке и в тех же направлениях - 0,2...0,3мм.
Я вроде читал, что у хорошего станка должно быть что-то около 4...8 соток при нагрузке 10 кг. Так ли это?
Что можно обрабатывать с моими параметрами жёсткости? На каких режимах? Думаю, если постараться, можно путём притирки поверхностей и дополнительными усиливающими элементами поднять жёсткость. Есть пара мест, где прилегание, мягко говоря, не идеальное. Кто что думает по данному поводу?
Вложения
1707933167522.jpg (523 просмотра) <a class='original' href='./download/file.php?id=210916&sid=b2a7127283514491c61db8c22cc3afda&mode=view' target=_blank>Загрузить оригинал (730.35 КБ)</a>
1707933167514.jpg (523 просмотра) <a class='original' href='./download/file.php?id=210917&sid=b2a7127283514491c61db8c22cc3afda&mode=view' target=_blank>Загрузить оригинал (420.17 КБ)</a>
1707933167517.jpg (523 просмотра) <a class='original' href='./download/file.php?id=210918&sid=b2a7127283514491c61db8c22cc3afda&mode=view' target=_blank>Загрузить оригинал (152.35 КБ)</a>
lkbyysq
Мастер
Сообщения: 1999
Зарегистрирован: 14 май 2016, 09:40
Репутация: 312
Настоящее имя: Станислав Ерофеев
Откуда: Санкт-Петербург

Re: Модернизация фрезера по алюминию 300х250х160

Сообщение lkbyysq »

argon86 писал(а): Как сделать защиту рельс и винтов от стружки.
Да не надо.
argon86
Кандидат
Сообщения: 69
Зарегистрирован: 24 сен 2021, 09:54
Репутация: 7
Настоящее имя: Константин Викторович Шатунов
Откуда: Москва
Контактная информация:

Re: Модернизация фрезера по алюминию 300х250х160

Сообщение argon86 »

lkbyysq писал(а): 14 фев 2024, 21:15
argon86 писал(а): Как сделать защиту рельс и винтов от стружки.
Да не надо.
Тоже вариант... Поначалу так и будет, а там посмотрим. Сейчас важнее разобраться с жёсткостью станка, а то 0,4 мм смещения что-то не вдохновляют.
Изучил, откуда они берутся. Судя по всему, виной ось Z. На оси X и Y смещение около 1 сотки. С другой стороны 1 сотка на плече 150 мм даёт соток 5, наверное. Но остальные 35 уже берутся из оси Z, так что попробую её допилить по максимуму.
argon86
Кандидат
Сообщения: 69
Зарегистрирован: 24 сен 2021, 09:54
Репутация: 7
Настоящее имя: Константин Викторович Шатунов
Откуда: Москва
Контактная информация:

Re: Модернизация фрезера по алюминию 300х250х160

Сообщение argon86 »

Промерил все поверхности оси Z, которые вызывали сомнения:
1. Между креплением шпинделя и промежуточной пластиной - 0,09 мм.
2. Между промежуточной пластиной и эталонной плоскостью (угольник станочный 2 класс точности) зазор 0,1 мм.
Часик притирки и все неровности исчезли...
Также притёр необработанную поверхность оси Z, примыкающую к кареткам оси Y, к столу, который у меня теперь заместо жертвенного - всё, что нужно сделать ровным и плоским, притираю к нему. Заодно и он сам потихоньку выравнивается... вроде бы как.
Результаты говорят сами за себя - после всех операций, а также затяжки стопорной гайки на оси X, которая, как оказалось, разболталась, смещение вала шпинделя в направлении осей X и Y уменьшилось с 0,4 мм при нагрузке 5 кг до 0,05 мм при нагрузке 10 кг. Вот это уже совсем другое дело. Что-то подобное я и хотел получить изначально.
Вложения
1708113845835.jpg (411 просмотров) <a class='original' href='./download/file.php?id=210939&sid=b2a7127283514491c61db8c22cc3afda&mode=view' target=_blank>Загрузить оригинал (682.73 КБ)</a>
1708113845838.jpg (411 просмотров) <a class='original' href='./download/file.php?id=210940&sid=b2a7127283514491c61db8c22cc3afda&mode=view' target=_blank>Загрузить оригинал (712.79 КБ)</a>
1708113845842.jpg (411 просмотров) <a class='original' href='./download/file.php?id=210941&sid=b2a7127283514491c61db8c22cc3afda&mode=view' target=_blank>Загрузить оригинал (490.26 КБ)</a>
argon86
Кандидат
Сообщения: 69
Зарегистрирован: 24 сен 2021, 09:54
Репутация: 7
Настоящее имя: Константин Викторович Шатунов
Откуда: Москва
Контактная информация:

Re: Модернизация фрезера по алюминию 300х250х160

Сообщение argon86 »

Поправив механику, приступил к электронике...
В качестве основного компьютера собираюсь использовать плату raspberry pi 4B купленную в своё время именно с этой целью.
Залил туда последний образ linuxcnc с официального сайта linuxcnc (2.9.2). Образ встал на малинку нормально, правда в процессе умер мой китайский картридер...
Нашёл в сети готовый .hal файл для использования GPIO пинов вместо LPT порта. Немного его поправил для того, чтобы он соответствовал моей плате развязки. В настоящее время он выглядит так:

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

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
В "бою" файл ещё не пробовал. Нужно собрать электронику хотя бы в черновом виде.
Изначально планировал использовать IDE кабель, благо его разъёмы подходят к Raspberry Pi. К сожалению оказалось, что жилы IDE делали из стали/железа/какой-то дряни, которая совершенно не хочет паяться ни при каких условиях. Убил на попытку целый день, так ничего и не добившись. В результате "родилась" конструкция на основе разъёма 40-pin от IDE, куда вставлены оголённые провода от кабеля LPT, зажаты механически (хотя надёжнее было бы запаять, да) и сверху всё это безобразие залито поксиполом, чтобы не развалилось прям сразу. Все контакты, кроме, может быть, одного, прозваниваются, так что пока сойдёт, а ближе к окончанию работ переделаю. Нужно ещё щиток придумать как и где располагать, куда в нём что крепить... В общем с электроникой ещё придётся повозиться, но в целом до запуска станка осталось недолго.
Также на скорую руку соорудил модель кабель-канала для 3D печати. Посмотрю как он будет в работе.
Вложения
1708267202756.jpg (379 просмотров) <a class='original' href='./download/file.php?id=210987&sid=b2a7127283514491c61db8c22cc3afda&mode=view' target=_blank>Загрузить оригинал (554.8 КБ)</a>
1708267202758.jpg (379 просмотров) <a class='original' href='./download/file.php?id=210988&sid=b2a7127283514491c61db8c22cc3afda&mode=view' target=_blank>Загрузить оригинал (2.03 МБ)</a>
sinkacnc
Мастер
Сообщения: 249
Зарегистрирован: 11 июл 2023, 10:35
Репутация: 22
Настоящее имя: Alexey
Контактная информация:

Re: Модернизация фрезера по алюминию 300х250х160

Сообщение sinkacnc »

argon86 писал(а): илегание,
argon86 писал(а): смещение в направлении оси X или Y при нагрузке 5 кг - 0,3...0,4мм.
чтото дофига для такого станка. Надо у себя "на картонном" замерить
Дочитал - починили - все ок:)
argon86 писал(а): Поначалу так и будет, а там посмотрим.
я так и оставил... единственной что все таки хочу сделать это листы закрывающие нижний ШВП и рельсы. туда весь срач идет
argon86
Кандидат
Сообщения: 69
Зарегистрирован: 24 сен 2021, 09:54
Репутация: 7
Настоящее имя: Константин Викторович Шатунов
Откуда: Москва
Контактная информация:

Re: Модернизация фрезера по алюминию 300х250х160

Сообщение argon86 »

sinkacnc писал(а): argon86 писал(а): ↑
Поначалу так и будет, а там посмотрим.

я так и оставил... единственной что все таки хочу сделать это листы закрывающие нижний ШВП и рельсы. туда весь срач идет
В этой конструкции стол неподвижен, а рельсы вынесены вверх, так что со "срачем" должно быть чуток получше... но это не точно. Пока же продолжаю потихоньку собирать электронику. Пока на "демоборде" (то бишь на фанерке...)
sinkacnc
Мастер
Сообщения: 249
Зарегистрирован: 11 июл 2023, 10:35
Репутация: 22
Настоящее имя: Alexey
Контактная информация:

Re: Модернизация фрезера по алюминию 300х250х160

Сообщение sinkacnc »

argon86 писал(а): так что со "срачем" должно быть чуток получше
рельсы не так страшно, для них есть ещё дополнительные муфты чтоб стружку соскребать, главное чтоб швп не торчали
argon86
Кандидат
Сообщения: 69
Зарегистрирован: 24 сен 2021, 09:54
Репутация: 7
Настоящее имя: Константин Викторович Шатунов
Откуда: Москва
Контактная информация:

Re: Модернизация фрезера по алюминию 300х250х160

Сообщение argon86 »

Итак... Оно поехало!!!
Всего три дня, пока все праздновали, я разгадывал шарады и решал головоломки из мира электроники и программирования... Но результат на лицо - станок перемещается. Оси крутятся. Концевики мигают и хомятся.
Какие сложности встретились...
Во-первых. Плата коммутации. По совершенно непонятной мне причине разработчики вынесли на внешние разъёмы ИНВЕРТИРОВАННЫЕ выходы, изящно обозвав их в документации "схемой с общим плюсом" (и перепутав плюс с минусом на схеме). Всего два дня с осциллографом, мультиметром и паяльником позволили победить данный нюанс.
Ситуацию никак не облегчало то, что к выходам платы (сигналы с концевиков) пришлось припаять пару резисторов для того, чтобы опустить напряжение с 5 до 3.3 В, чтобы пины GPIO raspberry pi 4B, которые нетолерантны к 5 вольтам, не погорели. Мне всё время казалось, что это я что-то не то "напаял", а не разработчики платы...
Далее raspberry pi... С ней всё тоже не так хорошо, как хотелось бы. GPIO пины хоть и позволяют работать в качестве замены LPT порта, но драйвер не полностью повторяет весь функционал LPT. В частности, нельзя инвертировать значение пина! А раз так, то "простой" способ инвертировать сигналы обратно, просто дописав одну строчку в hal файле, не прокатил. По итогу пришлось подпаиваться к гребёнке выводов на плате коммутации, а не использовать штатные разъёмы с винтовым креплением.
Тем не менее, это не избавило от необходимости что-то делать с направлением движения осей, которые всё-таки нужно было инвертировать. Конечно, можно просто поменять провода питания двигателей местами, но я нашёл и другой способ - использовал функцию NOT в hal файле для сигналов DIR.
Пробовал сделать то же самое с STEP сигналами, но не получилось - не хватало производительности, так что потом попробую всё-таки переставить провода, так как функция NOT уменьшает и так невысокую производительность малинки.
Если кому интересно, последние hal и ini файлы:

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

# 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
INI

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

# 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
#******************************************
Такой вопрос - у кого-то получалось увеличить скорость двигателя выше 300 мм/мин на raspberry pi 4B (при микрошаге 1/8 и шаге винта 4мм)? Если получилось, то не поделитесь ли HAL и INI файлами?
гражданинъ
Мастер
Сообщения: 1232
Зарегистрирован: 07 фев 2020, 21:00
Репутация: 160
Настоящее имя: Дмитрий
Контактная информация:

Re: Модернизация фрезера по алюминию 300х250х160

Сообщение гражданинъ »

А в чём "изюм" применения малины ,если используется только разъём LPT 17 каналов ? Я бодался с "апельсинкой" для использования 21го канала и ещё в запасе там сколько то осталось ! Использовал двунаправленные конвертеры 3-5 вольт ,8 каналов по 80 рублей . И частота там просто чумовая !
Вложения
MPG_.hal
(4.35 КБ) 10 скачиваний
MPG_.ini
(2.94 КБ) 12 скачиваний
Гражданином Непала может быть любой гражданин,зачатый НЕпалкой и НЕпальцем.
argon86
Кандидат
Сообщения: 69
Зарегистрирован: 24 сен 2021, 09:54
Репутация: 7
Настоящее имя: Константин Викторович Шатунов
Откуда: Москва
Контактная информация:

Re: Модернизация фрезера по алюминию 300х250х160

Сообщение argon86 »

Первая стружка :hehehe:
[youtube]https://youtu.be/qeG8Hz688cM?feature=shared[/youtube]

Без монтажа.
sinkacnc
Мастер
Сообщения: 249
Зарегистрирован: 11 июл 2023, 10:35
Репутация: 22
Настоящее имя: Alexey
Контактная информация:

Re: Модернизация фрезера по алюминию 300х250х160

Сообщение sinkacnc »

Что за фреза и параметры?
argon86
Кандидат
Сообщения: 69
Зарегистрирован: 24 сен 2021, 09:54
Репутация: 7
Настоящее имя: Константин Викторович Шатунов
Откуда: Москва
Контактная информация:

Re: Модернизация фрезера по алюминию 300х250х160

Сообщение argon86 »

sinkacnc писал(а): 28 фев 2024, 10:43 Что за фреза и параметры?
Фреза твердосплавная концевая диаметром 2 мм, рабочая длина 17 мм. Подача 180 мм/мин (максимальная при текущих ограничениях скорости). Для шпинделя установил 400 Гц на частотнике, что означает 24000 оборотов/мин., если ничего не путаю. Планирую медленно повышать подачу до 300 мм/мин или около того (до скольки позволит raspberry pi).
sinkacnc
Мастер
Сообщения: 249
Зарегистрирован: 11 июл 2023, 10:35
Репутация: 22
Настоящее имя: Alexey
Контактная информация:

Re: Модернизация фрезера по алюминию 300х250х160

Сообщение sinkacnc »

argon86 писал(а): 2 мм, рабочая длина 17 мм
сразу на все 17 погружаешь?:) для дерева, если я правильно помню, максимум 2D т.е 4мм. Скорость можно до 1000 поднимать на таких оборотах:) но я бы понизил, чтоб дерево не палить. А что за ограничение такое?
argon86
Кандидат
Сообщения: 69
Зарегистрирован: 24 сен 2021, 09:54
Репутация: 7
Настоящее имя: Константин Викторович Шатунов
Откуда: Москва
Контактная информация:

Re: Модернизация фрезера по алюминию 300х250х160

Сообщение argon86 »

sinkacnc писал(а): 28 фев 2024, 17:30 сразу на все 17 погружаешь?:)
На 1D - 2 мм за проход.
sinkacnc писал(а): 28 фев 2024, 17:30 А что за ограничение такое?
Ну, как я понял, смысл следующий. В linuxcnc есть "базовый" цикл и "сервоцикл". Шаги для GPIO, как и для LPT в обычном компьютере, генерируются с сервоцикле, но также там крутится ещё куча всего. Если сделать цикл слишком маленьким, то он не успеет всё отработать и заглючит/пропустит/неправильно отработает. Если ставить цикл слишком большим, то ты уменьшаешь скорость генерации шагов (генерируется один шаг в один сервоцикл для каждого драйвера максимум). Другими словами - слишком быстро, заглючит, слишком медленно - нельзя поставить высокую скорость. Точнее можно, но генерировать шаги он опять же не будет правильно, но уже по причине того, что за единицу времени просто недостаточно сервоциклов для генерации нужного количества шагов.
Если кто-то понимает лучше - пусть меня поправит...
argon86
Кандидат
Сообщения: 69
Зарегистрирован: 24 сен 2021, 09:54
Репутация: 7
Настоящее имя: Константин Викторович Шатунов
Откуда: Москва
Контактная информация:

Re: Модернизация фрезера по алюминию 300х250х160

Сообщение argon86 »

В общем, так...
Работа станка на малинке мне не понравилась. И ладно там скорость, для моих нужд её бы хватило, наверное, но, главное, точность! Запускал программу для движения туда-обратно и через 10 проходов часовой индикатор показывал смещение на 10 соток в плюс. В следующий раз ещё на десять, и ещё... В общем какая-то ерунда с генерацией шагов. Можно было углубиться в разоборки с Raspberry pi, но я решил для начала приобрести OPi и установить на него allwincnc софт MX_master'а, тем более что со мной связался один известный "ГражданинЪ" и совершенно бескорыстно предложил свою помощь с готовым arisk дистрибутивом. За что ему большое спасибо.
По быстрому сваял раму для охлаждения OPi PC на 3D принтере. И долго разбирался с тем, как всё это настроить. Драйвера arisk в дистрибутиве уже стояли, так что тут делать ничего не пришлось, но нужно было написать Hal файл. Хоть я и прочитал всю тему про OPi, но сделать это оказалось не так просто - вначале пришлось побеждать забытый пароль пользователя, потом боросться с hal и ini. И, вроде бы, всё же выложено перед глазами, но всё равно с первого раза сделал неправильно. Смысл в том, что Arisc драйвер MX_mastera заменяет не только parport, но и stepgen! И если "втупую" писать что-то типа:

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

net	s-en	spindle.0.on	arisc.gpio.PC4-out
то это будет работать! Но вот только с осями так не получится, так как они должны получать обратную связь от arisс драйвера, по которой узнают своё положение. MX_master решил это, введя pwm функции, через которые оси (linuxcnc) "общается" с драйвером arisc. Так что для сигналов Enable, сигналов с датчиков, шпинделя можно писать:

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

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
В общем, теперь работа станка выглядит приблизительно так:
[youtube]https://youtu.be/AF0zctqb0vQ?si=T9umRF3DDhBbz7T2[/youtube]

Кому интересно, готовые Hal и INI файлы (крайний вариант, но явно не последний):

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

# 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
INI:

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

[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
Вложения
Обзавожусь инструментом... (41 просмотр) <a class='original' href='./download/file.php?id=211223&sid=b2a7127283514491c61db8c22cc3afda&mode=view' target=_blank>Загрузить оригинал (376.46 КБ)</a>
Обзавожусь инструментом...
Компьютер с напечатанной рамой для кулеров (41 просмотр) <a class='original' href='./download/file.php?id=211224&sid=b2a7127283514491c61db8c22cc3afda&mode=view' target=_blank>Загрузить оригинал (694.06 КБ)</a>
Компьютер с напечатанной рамой для кулеров
Он же... (41 просмотр) <a class='original' href='./download/file.php?id=211225&sid=b2a7127283514491c61db8c22cc3afda&mode=view' target=_blank>Загрузить оригинал (598.65 КБ)</a>
Он же...
Ответить

Вернуться в «Фрезерные станки по металлам»