В прошлой статье я писал, как создать дополнительные пункты меню принтера на прошивке Marlin. Сегодня поделюсь кодом для создания пунктов меню для извлечения и загрузки филамента в 3D принтер.

G-Сode. Загрузка филамента в экструдер

Алгоритм будет таким:

  1. Нагреть сопло.
  2. Предупредить о начале загрузки прутка. Здесь можно будет остановить процедуру, если она выбрана ошибочно.
  3. Включить фидер на подачу прутка. Длину задать такую, чтобы филамент не дошел до термобарьера.
  4. Включить подачу прутка на минимальной скорости. Длину подачи рассчитать так, чтобы из сопла вышел старый пластик и пошел новый.
  5. Звуковой сигнал.

G-Сode на загрузку филамента с комментариями:

M300 S5000 P280; Звуковой сигнал.

M0 Load – Click; Пауза. Ждем нажатия кнопки.

M117 Heating…; Надпись на экране «Нагрев»

M300 S5000 P280; Звуковой сигнал. Сигнализирует о начале процедуры.

M109 S235; Включаем нагрев сопла до 235 и ждём завершение этого процесса.

M300 S5000 P280; Звуковой сигнал.

M0 Click to continue; Пауза. Ждем нажатия кнопки.

G21; Устанавливаем метрическую систему координат.

G90; Устанавливаем абсолютные перемещения относительно нулей принтера.

M82; Устанавливаем управление экструдером в абсолютных измерениях.

G92 E0; Обнуляем количество выдавленного пластика.

M117 Load filament…; Надпись на экране «Загрузка филамента».

M300 S5000 P280; Звуковой сигнал

G1 F1500 E480; Включаем фидер на прямую подачу на 480 мм, со скоростью F1500.

G92 E0; Обнуляем количество выдавленного пластика.

G1 F150 E30; Включаем фидер на прямую подачу на 30 мм, со скоростью F150.

M140 S0; Отключением нагрев стола.

;M104 S0; Отключаю нагрев экструдера.

M107; Выключаем обдув детали.

M84; Выключаем шаговые двигатели.

G92 E0; Обнуляем количество выдавленного пластика.

M117 Done; Надпись на экране «Сделано».

M300 S5000 P280; Звуковой сигнал.

Теперь код для внедрения нового пункта меню в прошивку Marlin.

  void Load_prutok(){

  lcd_return_to_status();

  enqueue_and_echo_commands_P(PSTR("M300 S5000 P280\nM0 Load - Click\nM117 Heating…\nM300 S5000 P280\nM109 S235\nM300 S5000 P280\nM0 Click to continue\nG21\nG90\nM82\nG92 E0\nM117 Load filament…\nM300 S5000 P280\nG1 F1500 E480\nG92 E0\nG1 F150 E30\nM140 S0\nM107\nM84\nG92 E0\nM117 Done\nM300 S5000 P280"));

}

Подробнее: Создаем новый пункт меню в прошивке Marlin 3D принтера

G-Сode. Извлечение филамента из экструдера

Алгоритм.

  1. Нагрев сопла до заданной температуры.
  2. Вначале включу подачу прутка в экструдер на 10 миллиметров. Только затем подам команду на выгрузку. Такие манипуляции со сменой направления, должны чуть убавить «соплю» на конце прутка.
  3. Все выключаю и подаю звуковой сигнал.

G-Сode на выгрузку филамента с комментариями:

M300 S5000 P280; Звуковой сигнал.

M0 UnLoad – Click; Пауза. ждем нажатия любой кнопки на клавиатуре.

M117 Heating…; Надпись на экране «Нагрев».

M300 S5000 P280; Звуковой сигнал. Сигнализирует о начале процедуры.

M109 S235; Включаем нагрев сопла до 235 и ждём завершение этого процесса.

G21; Устанавливаем метрическую систему координат.

G90; Устанавливаем абсолютные перемещения относительно нулей принтера.

M82; Устанавливаем управление экструдером в абсолютных измерениях.

G92 E0; Обнуляем количество выдавленного пластика.

M117 Load filament; Надпись на экране «Загрузка филамента».

M300 S5000 P280; Звуковой сигнал

G1 F2400 E10; Включаем фидер на прямую подачу на 10 мм, со скоростью F2400.

G92 E0; Обнуляем количество выдавленного пластика.

G1 F2400 E-530; Включаем фидер на выгрузку филамента (530 мм). Обратная подача на скорости 2400 мм/мин.

;M104 S0; Отключаю нагрев экструдера.

M140 S0; Отключением нагрев стола.

M107; Выключаем обдув детали.

M84; Выключаем шаговые двигатели

M117 Done; Надпись на экране «Сделано».

M300 S5000 P280; Звуковой сигнал.

Код для создания пункта меню в Marlin.

void UnLoad_prutok(){

  lcd_return_to_status();

  enqueue_and_echo_commands_P(PSTR("M300 S5000 P280\nM0 UnLoad - Click\nM117 Heating…\nM300 S5000 P280\nM109 S235\nG21\nG90\nM82\nG92 E0\nM117 Load filament\nM300 S5000 P280\nG1 F2400 E10\nG92 E0\nG1 F2400 E-530\nM140 S0\nM107\nM84\nM117 Done\nM300 S5000 P280\n"));

}

Код для вызова процедур:

MENU_ITEM (function, "Load Filament", Load_prutok);

MENU_ITEM (function, "UnLoad Filament", UnLoad_prutok);

Заключение

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