Подробности расчета скорости подачи Марлина

Я хочу программно сгенерировать G-код для a (основанного на Марлине) Ultimaker 2+ принтер, и я смотрел на документацию Marlin и рабочие примеры G-кода, созданные Cura.

Это привело меня в замешательство относительно того, как именно Марлин интерпретирует параметр feedrate (F) в командах G-кода.

Если я двигаюсь по одной оси (например, G1 F7000 X10 или G1 F200 E50), то я предполагаю, что F просто говорит, как быстро эта ось должна двигаться (игнорируя ускорение).

На фрезерных станках с ЧПУ, с которыми я работал, то же самое верно при движении по нескольким осям – например, G1 F1000 X10 Y10 Z10 означало бы, что инструмент движется со скоростью 1000 мм/мин, и поэтому отдельные оси движутся со скоростью 693 мм/мин. Что хорошо, потому что это означает, что скорость подачи не зависит от направления движения.

Но 3D-принтер имеет четыре оси (E, X, Y, Z), и Marlin использует только один параметр скорости подачи. Так мне нужно вычислить это в четырехмерном пространстве? Другими словами,

$F = \sqrt[4]{F_E^4 + F_X^4 + F_Y^4 + F_Z^4} ?$

Если это неверно, как скорость подачи связана с скоростью подачи для отдельных осей?.

, 👍1


1 ответ


1

Скорости подачи не являются 4-мерными, и да, это делает их немного непоследовательными. Но физически 4-мерная скорость не имела бы никакого смысла - например, замедление оси E при одновременном ускорении оси X не поддерживало бы ту же "общую скорость" в любом значимом смысле.

Итак, feedrates работают по-разному для:

  • Движется с ненулевой составляющей X, Y или Z: скорость подачи-это идеальная, желаемая скорость в 3 измерениях, возможно, ограниченная максимальными скоростями подачи каждой оси (включая E) в отдельности, а также их профилями ускорения.

  • Экструдер-движется только там, где компоненты X, Y и Z равны нулю: скорость подачи является идеальной, желаемой скоростью в одном измерении: ось E, и может быть ограничена максимальной скоростью подачи и профилем ускорения для оси E.


,

Ага! Я действительно задавался вопросом, было ли это объяснением того, как "скорость печати" Cura может совпадать со скоростью подачи, которую она использует для печати перемещений. Я думаю, это упрощает дело. Подход 4D не был бы полностью безумным, но это означало бы, что вам придется постоянно регулировать F, чтобы получить постоянную скорость движения или постоянную скорость выдавливания. (FWIW, указание конечной позиции и времени полностью определяет решение, поэтому вы не могли фактически замедлить E, ускоряя X), @bobtato