3D принтер. Прошивка Marlin, оптимизация.

Обсуждение технологии печати на 3D принтерах. Самостоятельное изготовление и приобретение. RepRap и его последователи.

Re: 3D принтер. Прошивка Marlin, оптимизация.

Сообщение Kudesnik » 01 сен 2015, 22:23

unigenum писал(а):Значит DEFAULT_RETRACT_ACCELERATION действует, только когда движения по другим осям нет?


DEFAULT_RETRACT_ACCELERATION действует, только когда нет движения по X, Y, Z.
Специально еще в gcode глянул. И увидел там подтверждение этому.

Ниже кусок gcode, когда происходит ретракт.
gcode приготовил kisslicer, у него ретракт называется destring
Код: Выделить всё
...
G1 X137.97 Y109.2 E15.2743
;
; 'Destring/Wipe/Jump Path', 0.0 [feed mm/s], 10.0 [head mm/s]
G1 X137.97 Y109.2 E15.2743 F12000
G1 E14.8743 F900
G1 X137.97 Y109.2 E14.8743 F600
;
G1 X136.92 Y107.31 E14.8743 F12000
...

То есть, перед ретрактом, экструдер останавливается на последней координате и останавливает подачу пластика.
Далее, происходит лишь одно движение - обратная подача, а значит ускорение берется из DEFAULT_RETRACT_ACCELERATION
После, обратная подача останавливается.
И уже после ретракта, происходит перемещение экструдера...


unigenum писал(а):Это получается, что ускорение по всем одновременно движущимся осям будет ограничиваться ускорением одной оси?
Т.е. идет печать, движутся одновременно 3 оси Е Х У со значениями MAX_ACCELERATION {1500,1500,Z,800}, то ускорение у всех 3 осей будет ограничено минимальным из ряда 800?

Не всегда!!!
Если MAX_ACCELERATION {1500,1500,1500,800} - X, Y, Z, E
То текущее ускорение станет равным 800, только тогда когда текущее ускорение умноженное на коэффициент превысит 800.
А коэффициент (как я уже описывал ранее) зависит от количества шагов текущей оси относительно максимального количества шагов.
То есть, ускорение ограничится значение 800, только тогда, когда перемещения по осям X,Y,Z будут минимальны, а по оси E перемещение будет значительное.
Если же, хоть по одной из осей X,Y или Z перемещение будет значительно больше, чем по оси E, то ограничение 800 не наступит, так как текущее ускорение с учетом коэффициента для оси E (а коэффициент будет относительно небольшой) не превысит 800.
Смотреть, не значит видеть!!!
Аватара пользователя
Kudesnik
 
Сообщения: 24
Зарегистрирован: 23 янв 2014, 14:17

Re: 3D принтер. Прошивка Marlin, оптимизация.

Сообщение unigenum » 02 сен 2015, 12:58

Спасибо еще раз за очень познавательные разъяснения логики марлина.

А по JERKам можете разъяснить?
DEFAULT_XYJERK
DEFAULT_ZJERK
DEFAULT_EJERK
самые загадочные параметры
я так и не смог однозначно и конкретно выявить их влияние на практике в диапазоне от 1 до 20
вроде на что-то влияют, где-то проявляются, а где-то уже нет.
находил в инете типа подробные разъяснения с графиками и формулами, но все на ин.языках. естесственно гуглопереводчиком не осилить научные термины и словообороты.
unigenum
 
Сообщения: 705
Зарегистрирован: 29 окт 2012, 13:55
Откуда: СПб

Re: 3D принтер. Прошивка Marlin, оптимизация.

Сообщение setar » 02 сен 2015, 20:04

это рывки, они на прохождение углов влияют.
это скорость с которой дергаем систему для резкого изменения состояния.
если рывок слаб то получаем большой вынос головы после поворота на 90 град и как следствие повышенный "звон"
если рывок чрезмерно сильный то получаем бугор перед углом при повороте
Аватара пользователя
setar
Site Admin
 
Сообщения: 10989
Зарегистрирован: 04 окт 2004, 12:58
Откуда: St.Petersburg
Skype: taranenko.sergey
ФИО: Сергей Тараненко

Re: 3D принтер. Прошивка Marlin, оптимизация.

Сообщение unigenum » 02 сен 2015, 23:17

Возможно это рывки, минимальная стартовая скорость, как я понял из комментария в прошивке. Т.е. двигатель начинает раскручиваться не с нуля, а сразу со скорости jerk, а далее уже действует ускорение, повышающее скорость до максимальной.
Тогда тут есть интересный момент: в марлине изначально по дефолту установлен Ejerk=5мм/сек. Но это 300мм/мин выдавливания прутка и 150-200мм/сек скороти движения сопла при печати. 99% принтеров печатают на скоростях до 100мм/сек, а то и вовсе в районе 50. Получается у тех, кто не заморачивается с jerkом, оставляя его дефолтным 5мм/сек, ускорение начинает действовать после развития "запредельных" скоростей печати, т.е. по сути ускорение не действует.

Печатал квадратик 30х30х5мм. г-код один и тот же. менял только xyjerk 1,5,10,15,20. ejerk 0.1,0.5,1,2,5.
все 10 квадратов абсолютно одинаковы с одинаковыми углами. во всяком случае своим глазом я различий не увидел.
есть небольшой наплыв сразу после поворота. этот наплыв не сместился, не увеличился, не уменьшился в различимых человеческим глазом пределах. может диапазон брать шире?
ну и даже если jerk влияет на углы, то это одно из последствий. а на что еще влияет jerk? а Ejerk как отражается на печати?
Вот и хочется узнать суть, логику действия jerk в коде. Чтобы прогнозировать, а не отлавливать последствия, бугры на углах и прочие неожиданные приколы, которые могут проявиться не в каждой модели.
Последний раз редактировалось unigenum 02 сен 2015, 23:21, всего редактировалось 1 раз.
unigenum
 
Сообщения: 705
Зарегистрирован: 29 окт 2012, 13:55
Откуда: СПб

Re: 3D принтер. Прошивка Marlin, оптимизация.

Сообщение setar » 02 сен 2015, 23:23

jerk попробуйте 5-20-50

Добавлено спустя 5 минут 16 секунд:
еще пример для понимания:
допустим у меня подшипники скольжения и если их страгивать потихоньку то вообще не стронется - уйдет в срыв шагов,
это же характерно для многозаходных винтов, трапецивидных винтов.
Все подвижные системы с большим трением покоя нужно сдвигать рывком.
Если значения этого параметра не чувствуются то это говорит лишь о весьма хорошей кинематике.
Например принтер с каретками на подшипниках качения вообще не реагирует на изменение jerk
Аватара пользователя
setar
Site Admin
 
Сообщения: 10989
Зарегистрирован: 04 окт 2004, 12:58
Откуда: St.Petersburg
Skype: taranenko.sergey
ФИО: Сергей Тараненко

Re: 3D принтер. Прошивка Marlin, оптимизация.

Сообщение unigenum » 02 сен 2015, 23:31

setar писал(а):jerk попробуйте 5-20-50

XYjerk?
a Ejerk начто может влиять?
ну Zjerk хоть и не так важен, но вдруг :)

Добавлено спустя 6 минут 39 секунд:
setar писал(а):Например принтер с каретками на подшипниках качения вообще не реагирует на изменение jerk

а вот это как раз в точности мой случай :)
и от наплыва после поворота никак не избавиться? в принципе он и так не заметен, если специально не искать...

ну и теоритически, покрутив Ejerk, можно уменьшить вероятность пропуска шагов и "недолива" на экструдере. только вот как и в какую сторону крутить...
unigenum
 
Сообщения: 705
Зарегистрирован: 29 окт 2012, 13:55
Откуда: СПб

Re: 3D принтер. Прошивка Marlin, оптимизация.

Сообщение setar » 03 сен 2015, 00:50

unigenum писал(а):a Ejerk начто может влиять?

вообще не влияет (или я не заметил)
и от наплыва после поворота никак не избавиться? в принципе он и так не заметен, если специально не искать...

ну и теоритически, покрутив Ejerk, можно уменьшить вероятность пропуска шагов и "недолива" на экструдере. только вот как и в какую сторону крутить...

первая волна "звона" как раз убирается с помощью увеличения jerk, но для этого еще ремни нужны широкие и жесткие (белый пластик со стальным кордом)
Аватара пользователя
setar
Site Admin
 
Сообщения: 10989
Зарегистрирован: 04 окт 2004, 12:58
Откуда: St.Petersburg
Skype: taranenko.sergey
ФИО: Сергей Тараненко

Re: 3D принтер. Прошивка Marlin, оптимизация.

Сообщение Kudesnik » 03 сен 2015, 09:32

EJERK это МАКСИМАЛЬНАЯ скорость которую можно развить мгновенно без применения ускорения.

В логике мерлина, применяется почти по аналогии с ускорением.
Для соответствующих осей, разница между текущей скоростью и предыдущей сравнивается с EJERK-ами.
Сначала с EJERK_XY, если разница превышает, то ограничиваем EJERK_XY.
Далее сравниваем по аналогии с EJERK_Z и потом с EJERK_E, если и здесь где-то привесило, то ограничиваем соответствующим EJERK-ом.

!!! Если это начало движения (предыдущая скорость была 0), то значения всех EJERK-ов делятся пополам !!!

Далее, насколько я понял код, берется рассчитанная скорость (ограниченная EJERK) и максимально допустимая скорость с учетом рассчитанного ускорения (предыдущих сообщениях) - и выбирается минимальная скорость из этих двух скоростей.

В общем чтобы понять эти EJERK-и, нужно свой g-code набросать, с несколькими перемещениями через паузы (или без них).
Каждое перемещение для своей оси.
Для каждой оси свое расстояние.
И засечь время перемещения по каждой оси.

Например:
DEFAULT_XYJERK 20
то есть мгновенная скорость не должна превышать 20 мм/сек
!!! НО, в начале движения берется половина EJERK, то есть первое движение будет 10мм/с
вот и делаем одно перемещение по оси X на 10мм
после делаем паузу (ось X хоть и меняется на Y, но для осей X и Y рассчитывается одна средняя скорость), чтобы для следующего перемещения начальная (предыдущая) скорость была нулевая.
и делаем одно перемещение по оси Y на 10мм
пауза
после, можно сделать одно перемещение назад по осям X и Y одновременно на 10мм - вернуться в начальную точку

каждое отдельное начальное перемещение на 10мм, при DEFAULT_XYJERK 20, должно занимать 1 секунду.
все три перемещения (без учета пауз) должны занимать 3 секунды.

Дальше, уже можно играться либо изменением перемещения (расстоянием) либо DEFAULT_XYJERK, но только что-то одно менять нужно.

По логике мерлина EJERK очень похож на мгновенное ускорение, так как применяется на каждом этапе движения, а не только в начале движения.

Еще умолчал об одном параметре, так как еще с ним до конца не разобрался - это номинальная скорость.
Эта скорость появляется в коде чуть ли самая первая, рассчитывается из расстояния между координатами перемещения (именно координатами, а не для каждой оси) с учетом DEFAULT_AXIS_STEPS_PER_UNIT и DEFAULT_MAX_FEEDRATE.

Так вот, если номинальная скорость будет меньше всех этих EJERK-ов и ускорений, то в итоге текущая скорость останется номинальной.
А вот когда эта номинальная скорость превышает что-то, то применяются ограничения EJERK-ов и ускорений.
Это я к тому, что не всегда можно увидеть влияние EJERK или ускорения. И если влияние не заметно, то наверное следует смотреть в сторону какое расстояние нужно пройти, и какая примерно будет скорость учитывая параметры DEFAULT_AXIS_STEPS_PER_UNIT и DEFAULT_MAX_FEEDRATE.


!!! Все описанное выше в этом сообщение, и в предыдущих сообщениях по ускорению - это информация, которая следует из кода мерлина, и возможно, что она достоверна не на 100%.
Я как бы перевожу текст с одного языка "программирования" на другой язык "человеческий".

Как появиться свободное время, добавлю в код мерлина дополнительный вывод информации в терминал о рассчитанных скоростях, EJERK и ускорений. Тогда будет на 100% ясно какие параметры применяются, на что и когда влияют.

Думаю, можно даже создать отдельную функцию "псевдо-печать", которая вместо печати детали, будет в терминал выкидывать загруженный g-code, но дополненный в каждой строчке перемещения информацией: значения параметров, скоростей и ускорений, и главное какие параметры ограничили движение в этом перемещении.
Смотреть, не значит видеть!!!
Аватара пользователя
Kudesnik
 
Сообщения: 24
Зарегистрирован: 23 янв 2014, 14:17

Re: 3D принтер. Прошивка Marlin, оптимизация.

Сообщение setar » 03 сен 2015, 11:31

Kudesnik Спасибо.
я всегда очень ценил умение людей объяснять сложные вещи простым языком.
Аватара пользователя
setar
Site Admin
 
Сообщения: 10989
Зарегистрирован: 04 окт 2004, 12:58
Откуда: St.Petersburg
Skype: taranenko.sergey
ФИО: Сергей Тараненко

Re: 3D принтер. Прошивка Marlin, оптимизация.

Сообщение Kudesnik » 03 сен 2015, 15:42

Получилось собрать электрическую схему 3D принтера, на mega2560, в Proteus и залить туда мерлина...

Теперь некоторые эксперименты с параметрами и вывод различной внутренней информации можно проделывать без самого принтера (без электроники) - эмуляция в компьютере на proteus-е.
Смотреть, не значит видеть!!!
Аватара пользователя
Kudesnik
 
Сообщения: 24
Зарегистрирован: 23 янв 2014, 14:17

Re: 3D принтер. Прошивка Marlin, оптимизация.

Сообщение holomrn » 03 сен 2015, 16:51

А поделиться? ;)
holomrn
 
Сообщения: 609
Зарегистрирован: 08 май 2014, 18:32

Re: 3D принтер. Прошивка Marlin, оптимизация.

Сообщение 2Zombi » 03 сен 2015, 22:02

Тоже хетелось бы испытать в протеусе . + все значения проверять проще(без вреда для принтера) :)
Так что файлы в студию (прошивку и проект для оного).
2Zombi
 
Сообщения: 14
Зарегистрирован: 14 дек 2014, 02:16
Откуда: Гродно , БелаяРусь

Re: 3D принтер. Прошивка Marlin, оптимизация.

Сообщение Vovich70 » 14 сен 2015, 12:40

А не подскажут-ли уважаемые эксперты ,какие параметры изменяются при увеличении скорости вращением энкодера на блоке экрана?
Тут вылезла неожиданная засада.Если отслайсить в Кисе,то вручную скорость замечательно регулируется.А если в Slic3r - никак.
Или его установленные максимальные скорости считаются главными и выше них не поднять?
Printer: Prusa
Firmware: Marlin
Host: Pronterface
Slicer: Kisslicer Slic3r1.2.9
Filament: ABS - 1.75
Nozzle: 0.2-0.4 mm
Electronics: Arduino MEGA 2560 + RAMPS 1.4
Vovich70
 
Сообщения: 463
Зарегистрирован: 30 окт 2013, 03:50
Откуда: Москва
ФИО: Владимир

Re: 3D принтер. Прошивка Marlin, оптимизация.

Сообщение aat » 25 сен 2015, 09:15

Уважаемые коллеги. Кто-нибудь использовал команду М928 - запись логфайла на карту?
Не могу понять принцип ее действия - если поставить в начале кода - то создает файл на карте, но печать не идет.
aat
 
Сообщения: 3
Зарегистрирован: 22 сен 2015, 00:29

Re: 3D принтер. Прошивка Marlin, оптимизация.

Сообщение Dmitry__ » 29 сен 2015, 17:43

А это только меня бесит мелькающий lcd экран во время печати?
Мелькает, как выяснил, при передаче информации на принтер командой m117 (передача времени до конца печати, типа: ETE/ 50m 10s в repetier host). Прошивка 1.3
Просто это довольно легко допилить...
Последний раз редактировалось Dmitry__ 30 сен 2015, 00:33, всего редактировалось 1 раз.
Аватара пользователя
Dmitry__
 
Сообщения: 8033
Зарегистрирован: 13 янв 2011, 15:25
Откуда: Санкт-Петербург

Пред.След.

Вернуться в 3D печать

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex [Bot] и гости: 20