Как скорость экструзии соотносится со скоростью движения?

Типичная линия (депонирование) G-код, по-видимому , устанавливает максимальную скорость (F), новое положение для перемещения (X, Y, Z) и новое расстояние вытягивания (давая расстояние нити для перемещения). F является общим для строки кода, и я понимаю, дает максимум для XYZE комбинированной скорости.

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

G-код, похоже, не имеет достаточно информации, чтобы справиться с этим, но я попытался посмотреть на файл конфигурации Marlin и не увидел там ничего очевидного.

Возьмем действительно простой пример: одиночная нить длиной 30 мм, высота слоя 0,2 мм и ширина 0,4 мм. Базовый слайсер будет принимать общий объем 0.2x0.4x30 мм3, но для каждого мм хода вы хотите, чтобы 0.2x0.4x1 мм3 был вытянут. Как обеспечить, чтобы это происходило независимо от скорости движения, не говоря уже о том, что в первой половине движения вытягивается больше, чем во второй или наоборот?

Кажется, что это где-то в прошивке, но я не знаю, где искать. "Работающий" пример для настольного принтера или столько деталей, сколько вы осмелитесь, будет абсолютно идеальным. Если это поможет, я обычно использую либо ANet A8, либо Ultimaker 3 с CURA slicer, используя прошивку на основе Marlin.

, 👍1


1 ответ


2

Я не совсем понимаю, что вы подразумеваете под "комбинированной скоростью XYZE", но мне интересно, не является ли это тем же самым заблуждением, что и в деталях расчета скорости подачи Марлина. Скорость подачи-это регулярная 3-мерная скорость в пространстве XYZ, которая является максимальной скоростью, которую принтер будет пытаться достичь, с учетом индивидуальных ограничений скорости подачи по оси (включая E) и профилей ускорения.

В любом случае простой ответ на ваш вопрос о том, как движение по оси Е синхронизируется с движением в пространстве, ничем не отличается от того, как движение по оси X синхронизируется с движением по оси Y. Если бы движение X и Y было просто разрешено независимо друг от друга до желаемой скорости, без ограничений, что они происходят в ногу друг с другом, то путь, по которому двигалась печатающая головка, был бы не прямой линией, а (в идеале) соединением одной горизонтальной или вертикальной линии с одной диагональной или (с применением профилей ускорения) некоторой аппроксимацией этой линии кривыми. Но, конечно, движения X и Y происходят синхронно. Каждая пространственная координата во время перемещения является функцией времени, вычисляемой логикой "планировщика" в прошивке принтера, основанной (по существу) на отношении величины отдельных составляющих перемещения к общей длине перемещения и скорости.

В традиционном микропрограммном обеспечении до линейного продвиженияось Е синхронизируется точно так же , в соответствии с отношением завершенного перемещения к целому и общему объему экструдируемого продукта. При линейном продвижении она регулируется смещением, пропорциональным текущей базовой линии (до применения LA) скорости экструзии, чтобы компенсировать сжимаемость филамента и/или упругость ее траектории перемещения (например, трубки Боудена).


,

Спасибо, это действительно полезный ответ. К вашему первому пункту; Да, я действительно допустил ту же ошибку при расчете скорости подачи, так что это очень полезно исправить. Что касается остального, то все это имеет смысл. Могу ли я физически увидеть код логики "планировщика" в прошивке? Я просмотрел, но не вижу ничего, что действительно делает то, что вы описали выше. Прав ли я также, думая, что G-код перезаписывает значения прошивки только в том случае, если объявлено значение? например. если значение LA (k?) равно 0,22 в прошивке, но не определено в G-коде, это 0,22?, @Sam