Добавляем второй экструдер к RAMPS 1.4/Marlin
В прошлой серии мы установили прошивку Marin на Arduino Mega+RAMPS 1.4 и откалибровали все это дело. Теперь пришло время добавить второй экструдер.
Для этого нам понадобится:
- второй экструдер
- второй хот-энд в сборе и все прилегающие детали, типа трубки боудена
- каретка на два экструдера. Я использую такую.
В общем случае все просто идем в Arduino IDE и правим конфигурацию.
Меняем конфигурацию платы управления на RAMPS 1.4 c 2 экструдерами и подогреваемым столом
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_RAMPS_14_EEB
#endif
Указываем кол-во экструдеров:
#define EXTRUDERS 2
Указываем тип датчика температуры для второго экструдера:
#define TEMP_SENSOR_1 1
Максимальную температуру:
#define HEATER_1_MAXTEMP 250
Если надо, устанавливаем направление вращения мотора:
#define INVERT_E1_DIR true
В целом, если у вас одинаковые моторы на обоих экструдерах, то на этом настройка закончена.
Но если у моторы разные или на одном экструдере у меня мотор с шестерней подачи диаметром 10мм, а на втором - 7мм, то тут начинаются проблемы с калибровкой.
Как откалибровать второй экструдер? Идем в пронтерфейс и говорим:
T1
Эта команда указывает что сейчас активен экструдер номер 2 (отсчет начинается с 0). Включаем подачу филамента, для подачи будет использоваться число шагов из прошивки, т.е. для первого экструдера. Смотрим разницу и с помощью пропорции получаем кол-во шагов для активного экструдера. У меня из-за разницы в подающих шестернях получилось 80 шагов на мм.
Говорим:
M92 E80
Этим мы устанавливаем новое кол-во шагов для текущего экструдера. Проверяем, при необходимости подгоняем значение.
После калибровки вылезает проблема - Marlin не поддерживает установку разного числа шагов для разных экструдеров, соответственно в прошивке нам эти данные не сохранить. Придется этот вопрос решать програмно.
Напишем небольшой фильтр которым будем обрабатывать готовый g-code файл.
#!/usr/bin/env perl
use strict;
my $T0 = 'M92 E95';
my $T1 = 'M92 E80';
local $^I = '.bak';
while (<>) {
s/^T0/T0\n$T0/;
s/^T1/T1\n$T1/;
print;
}
Этот скрипт ищет команду T.bak
.
Дальше нам надо задать смещение экструдеров
Для Slic3r идем в Printer Settings
-> Extruder 2
и выставляем смещение. Примерное смещение можно получить если измерив расстояние между соплами, однако программое расстояние может отличаться от физического расстояния, так что все равно придется заняться калибровкой.
Для этого печатаем деталь для калибровки 2х экструдеров и точно подгоняем все для идеальной работы.