Может ли одна строка Gcode иметь переменную скорость экструзии?

Довольно многословно, но, надеюсь, имеет смысл;

Я понимаю, что G-код выполняется построчно, и на основной фазе печати каждая инструкция эффективно отправляется в местоположение XY (при условии, что она остается в пределах слоя) с заданной скоростью с заданным количеством экструзии (не скорость, насколько я могу судить).

Представьте, что вы печатаете одну дорогу шириной, скажем, 10 мм в длину. Если в одной инструкции указано перемещать эти 10 мм с заданной скоростью и выдавливать 10 мм материала (что, я думаю, не составляет 10 мм нити) с бесконечным ускорением и замедлением шестерен сопла и экструдера, то на единицу длины вдоль 10 мм будет выдавливаться линейное количество материала. Однако, учитывая, что существует некоторое ускорение и замедление, это выдавливание должно быть нелинейным.

Мои вопросы заключаются в следующем; - Можно ли противодействовать этому в пределах одной строки Gcode, используя переменную скорость экструзии? - Может ли машина делать это независимо от данных ей инструкций? - Этот эффект как-то воспринимается? - Эффективно ли устраняется необходимость ускорения как положения сопла, так и нити? -Могли бы/могли бы вы вместо этого стремиться разделить одну прямую линию нити на несколько строк G-кода, некоторые из которых выдавливаются (скажем, посередине), а некоторые нет (скажем, на каждом конце)?

, 👍5

Обсуждение

Ось экструзии E соответствует тому же профилю ускорения, что и оси X и Y в большинстве встроенных программ (Marlin). Это не похоже на то, что ось E движется линейно, в то время как другие ускоряются. Эти выпуклости в углах ваших отпечатков вызваны физическим запаздыванием в вашей системе экструзии., @Tim Kuipers


5 ответов


0

НЕТ

G-код пишется с разделением строк, начиная с одной команды, что делать, затем кто это делает с какими факторами. Например, G1 X10 F100 E10 говорит следующее:

  • G1 Двигайся...
  • X10 Ось X на 10
  • F100 Используйте коэффициент до 100 единиц
  • E10 Также: Экструдер на 10

Насколько мне известно, любое повторяющееся или недопустимое выражение просто игнорируется (или перезаписывается). Таким образом, G1 X10 F100 E10 F200 анализируется как G1 X10 F100 E10 или G1 X10 E10 F200, в зависимости от того, как настроен ваш интерпретатор прошивки.


,

1

Насколько я понимаю, прошивка принтера будет определять максимальное ускорение и скорости для каждой оси (X, Y, Z и E). При выполнении строки g-кода, включающей более одной оси, ускорение для каждой из них будет ограничено таким образом, чтобы все они начинались и заканчивались, включая ускорение вместе.

Во время начала и в конце линии, когда печатающая насадка движется медленнее, экструдер также будет двигаться медленнее. В середине линии экструдер будет двигаться быстрее. Количество экструдируемого материала на расстояние будет постоянным по всей длине линии.

Другой способ взглянуть на это - предположим, что вы могли бы быстро разогнаться на X с высокой максимальной скоростью, но медленно на Y. Движение только в направлении X может произойти быстро. Движение только в направлении Y было бы медленнее. Если вы хотите двигаться под углом 45 градусов, вам нужно будет замедлить X, чтобы он не опередил Y.

Если бы вы действительно хотели намеренно изменять величину выдавливания на расстояние во время строки, вам нужно было бы разбить ее на несколько сегментов с отдельными строками g-кода.

,

1

Давайте посмотрим...

Можно ли противодействовать этому в пределах одной строки Gcode, используя переменную скорость выдавливания?

Нет, этого не может быть. Код G выполняется строка за строкой. Если у вас есть строка : G1 X10 F100 F200 F300 , некоторые парсеры примут первый (F100), некоторые примут только последний (F300)

Может ли машина сделать это независимо от данных ей инструкций?

Если вы запрограммируете для этого пользовательский анализатор кода G, вы все равно не сможете этого сделать, потому что нет временного масштаба, к которому вы хотели бы применить эффект. Для этого вам нужно будет ввести новую букву в ваш синтаксический анализатор (назовем ее K), которую вы могли бы использовать для указания машине соответствующим образом масштабировать экструзию (например, G1 X10 F100 K0.24). Затем машина будет знать, что параметр F следует масштабировать на 0,24 в течение движения.

Как-то воспринимается этот эффект?

Эм... нет?

Эффективно ли устраняется необходимость ускорения как положения сопла, так и филамента?

Как это отменить? Шаговый механизм накаливания, а также шаговые механизмы портала синхронизированы по шагам, чтобы они всегда работали с правильной скоростью подачи.

Могли бы вы вместо этого стремиться разделить одну прямую линию филамента на несколько строк G-кода, некоторые из которых выдавливаются (скажем , посередине), а некоторые нет (скажем, на каждом конце)?

Абсолютно нет. Каждая строка gcode должна быть заполнена машиной, прежде чем можно будет рассмотреть любую другую строку. Вы не можете управлять одним движением несколькими строками g-кода, потому что не будет способа контролировать время выполнения строк.

,

Твое форматирование имеет больше смысла, Триш. большое спасибо., @user77232

Конечно, вы можете разделить одну экструзионную линию! Просто представьте несколько мест для посещения посередине!, @Tim Kuipers


1

В то время как Триш напрямую отвечает на часть G-кода вашего вопроса, мой ответ предлагает альтернативу, если вы используете Marlin. У RepRap есть аналогичная функция, называемая продвижением давления, но этот ответ сосредоточен на функции Марлина.

По словам Марлина:

В условиях по умолчанию перемещение оси экструдера обрабатывается так же, как и линейные оси XYZ. Двигатель экструдера движется линейно пропорционально всем остальным двигателям, сохраняя точно такой же профиль ускорения и точки запуска/остановки. Но экструдер не является линейной системой, поэтому такой подход, наиболее очевидно, приводит к экструдированию дополнительного материала в конце каждого линейного перемещения.

Короче говоря, углы получаются закругленными, а не острыми из-за постоянного выдавливания при прокладке линии. Это можно смягчить, изменив поток, хотя это может повлиять на прямые линии в других частях печати, а именно при их выдавливании. Ответ Марлина на этот вопрос-линейное продвижение.

При линейном продвижении скорость экструзии изменяется по мере изменения скорости печатающей головки. Когда печатающая головка движется быстрее, приходится выталкивать больше пластика, чтобы проложить последовательную линию, и как только головка замедляется, скорость экструзии замедляется, чтобы компенсировать это. Затем печать должна иметь последовательную линию. Все это делается с использованием нового фактора, называемого k. От Марлина:

K теперь является значимым значением с единицей измерения [мм сжатия нити, необходимой для скорости экструзии 1 мм/с] или [мм/мм/с].

Можно определить значение k для своего принтера с помощью инструмента калибровки k Marlin, который выводит несколько прямых линий и инструктирует принтер медленно печатать начало каждой строки, затем быстро печатать и снова медленно заканчивать строку. Каждая строка имеет разное значение k, и пользователь выбирает значение k из наиболее согласованной строки.

Некоторые предостережения

Экструдеры в стиле Боудена требуют больших значений k, но даже в этом случае линейное продвижение может не сработать. Это связано с самой трубкой Боудена и материалом между двигателем экструдера и хотендом. Это примерно та же проблема, что и при попытке печати гибких пластмасс с помощью экструдера Боудена. Хотя линейное опережение лучше подходит для прямых приводов, его можно использовать на боудене.

Настройка линейного продвижения требует дополнительного набора настроек. Хотя это в первую очередь означает настройку значения k, может потребоваться регулировка скорости печати (потенциально позволяющая даже увеличить скорость).

В более старой линейной продвинутой версии, по крайней мере на Марлине, двигатель экструдера был намного активнее. Некоторые люди сообщают, что печать становится заметно более шумной. Эта функция также может увеличить нагрузку на процессор. Эти проблемы больше не должны быть проблемой, начиная с версии 1.5, но YMMV.

Необходимо изменить прошивку/G-код, чтобы каждый отпечаток мог использовать линейное продвижение. Если принтер использует только один материал, прошивку можно изменить. Однако, если в течение срока службы принтера будет использоваться несколько материалов, G-код должен будет включать следующую команду в конце сценария запуска ( подробнее см. здесь). Это значение k будет разным для каждого материала. Пример команды выглядит следующим образом:

M900 K75 ; Установите коэффициент k для PLA

Ссылка также рекомендует установить значение коэффициента k равным 0 при включении функции в встроенном ПО. Это, по сути, отключает жестко заданное значение в встроенном ПО.

Наконец, настройки слайсера, такие как повышение давления, наклон в конце, дополнительная длина перезапуска после втягивания, должны быть отключены при использовании линейного продвижения, поскольку они выполняют аналогичную операцию. С другой стороны, эти настройки могут работать для вашего принтера, поэтому вам, возможно, даже не потребуется использовать линейное продвижение.

,

Я думал, что "линейное продвижение" - это решение для встроенного ПО, а не для аппаратного обеспечения (ссылаясь на ваш ответ: "Некоторые принтеры способны"); Не могли бы вы уточнить, пожалуйста?, @0scar

@0scar Я думаю, я думал "некоторые принтеры [из-за их прошивки]", что двусмысленно без этого разъяснения. Я заменю принтеры прошивкой, так как это более точно. Спасибо!, @Lux Claridge

@0scar, вы также заставили меня подумать, что линейное продвижение может работать только на прошивке Marlin, поэтому я провел некоторое исследование и обнаружил, что, похоже, это так. Так что и за это спасибо. :), @Lux Claridge


1

Не на одной линии, но...

В системах Hyrel вы можете вручнуюразделить один длинный ход на несколько меньших ходов, каждый с разной скоростью выдавливания.

Например, давайте начнем с X100 Y100 и перейдем к X100 Y200. На Хайреле это выглядело бы так (с унаследованной скоростью F, если не указано):

  G1 X100 Y200 E1

Мы могли бы изменить это, указав наш множитель скорости подачи:

 M221 S0.9 ; установите множитель скорости подачи на 90%
  G1 X100 Y110 E1 ; печать 10 мм
  M221 S0.95 ; установите множитель скорости подачи на 95%
  G1 X100 Y120 E1 ; печать 10 мм
  M221 S1 ; установите множитель скорости подачи на 100%
  G1 X100 Y130 E1 ; печать 10 мм
  M221 S1.05 ; установите множитель скорости подачи на 105% 
  ...

Мы также можем варьировать все параметры между перемещениями, включая скорость печати, ускорение, замедление, охлаждение и УФ-отверждение.

И мы также используем "линейное продвижение", поэтому экструзия увеличивается со скоростью перемещения.

Примечание: Я работаю на Хайрела.

,

Технически это не одна строка кода, хотя, поскольку каждая часть представляет собой одну строку кода., @Trish

@Триш Достаточно правдива. Я думал "одна строка" (напечатана)., @Davo