Добавляем второй экструдер к RAMPS 1.4/Marlin

Tags:

В прошлой серии мы установили прошивку 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 и заменяет ее нужным нам значением. В данном случае добавляет команду M92 E. Скрипт получает на вход имя файла, перебирает его построчно и в каждой строке заменяет совпадения на то что мы указали. Оригинальный файл сохраняется с расширением .bak.

Дальше нам надо задать смещение экструдеров

Для Slic3r идем в Printer Settings -> Extruder 2 и выставляем смещение. Примерное смещение можно получить если измерив расстояние между соплами, однако программое расстояние может отличаться от физического расстояния, так что все равно придется заняться калибровкой.

Для этого печатаем деталь для калибровки 2х экструдеров и точно подгоняем все для идеальной работы.

Comments

Яндекс.Метрика