В прошлой статье я писал, как создать дополнительные пункты меню принтера на прошивке Marlin. Сегодня поделюсь кодом для создания пунктов меню для извлечения и загрузки филамента в 3D принтер.
G-Сode. Загрузка филамента в экструдер
Алгоритм будет таким:
- Нагреть сопло.
- Предупредить о начале загрузки прутка. Здесь можно будет остановить процедуру, если она выбрана ошибочно.
- Включить фидер на подачу прутка. Длину задать такую, чтобы филамент не дошел до термобарьера.
- Включить подачу прутка на минимальной скорости. Длину подачи рассчитать так, чтобы из сопла вышел старый пластик и пошел новый.
- Звуковой сигнал.
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. Извлечение филамента из экструдера
Алгоритм.
- Нагрев сопла до заданной температуры.
- Вначале включу подачу прутка в экструдер на 10 миллиметров. Только затем подам команду на выгрузку. Такие манипуляции со сменой направления, должны чуть убавить «соплю» на конце прутка.
- Все выключаю и подаю звуковой сигнал.
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);
Заключение
Выше описанный код у меня работает без сбоев. Но это совсем не значит, что он применим к вашему принтеру. В любом случае, используя мои наработки, будьте внимательны и осторожны.