KREMEN Реклама
KREMEN Реклама

Настройка корректной работы двух независимых экструдеров (аналогично IDEX).

3dfirst
Идет загрузка
Загрузка
08.07.2019
2277
3
Вопросы и ответы
Приветствую! Прошу совета у знатоков в настройке прошивки и корректной работы двух независимых экструдеров (аналогично IDEX).

Переделал кинематику принтера по оси X под 2 независимых директ-экструдера (аналогично тому, что реализовано у BCN3D, LeapFrog Bolt, Cyber Dragon). Соответственно, левая каретка (T0) паркуется в крайнем положении слева (Xmin), правая (T1) - в крайнем положении справа (X2max). По отдельности каждая головка работает нормально, печать идет в штатном одноэкструдерном режиме. Но пока никак не получается настроить совместную работу двух экструдеров (собственно, ради чего вся переделка оси X и затевалась).

Режим автопарковки M605 S1 в используемой версии прошивки Marlin 1.1-RC7 у меня не работает, поэтому в прошивке задан режим M605 S0 (dual x-carriage slicer full control mode) для управления через слайсер. В итоге следующая ситуация: в режиме двухэкструдерной печати (T0 - модель, T1 - рафт, поддержка) левая головка выезжает из ноля и начинает нормально печатать слой модели, затем к ней подъезжает правая для печати слоя поддержек, но левая при этом в свой ноль обратно не паркуется, и они начинают мешать др.др., соударяются. Использую слайсер Simplify3d.

Мне нужно добиться следующего условия: в момент печати по оси X левой головкой правая должна быть в своем нуле и наоборот. Прошу совета с устранением ошибки.

Исходные данные следующие:

в configuration:

// Sets direction of endstops when homing; 1=MAX, -1=MIN

// :[-1,1]

#define X_HOME_DIR -1

#define Y_HOME_DIR 1

#define Z_HOME_DIR -1

// Travel limits after homing (units are in mm)

#define X_MIN_POS 0

#define Y_MIN_POS 0

#define Z_MIN_POS 0

#define X_MAX_POS 420

#define Y_MAX_POS 405

#define Z_MAX_POS 505

(на X_MIN_POS установлен оптический датчик, X_MAX_POS - программный, соответственно, 420 мм - максимальное расстояние, на которое может двигаться левая каретка (T0), до безопасной близости с правой (T1)).

в configuration_adv:

#define DUAL_X_CARRIAGE

#if ENABLED(DUAL_X_CARRIAGE)

// Configuration for second X-carriage

// Note: the first x-carriage is defined as the x-carriage which homes to the minimum endstop;

// the second x-carriage always homes to the maximum endstop.

#define X2_MIN_POS 5 // set minimum to ensure second x-carriage doesn't hit the parked first X-carriage

#define X2_MAX_POS 420 // set maximum to the distance between toolheads when both heads are homed

#define X2_HOME_DIR 1 // the second X-carriage always homes to the maximum endstop position

#define X2_HOME_POS X2_MAX_POS // default home position is the maximum carriage position

// However: In this mode the HOTEND_OFFSET_X value for the second extruder provides a software

// override for X2_HOME_POS. This also allow recalibration of the distance between the two endstops

// without modifying the firmware (through the 'M218 T1 X???' command).

// There are a few selectable movement modes for dual x-carriages using M605 S

// Mode 0: Full control. The slicer has full control over both x-carriages and can achieve optimal travel results

#define DEFAULT_DUAL_X_CARRIAGE_MODE 0

(на X2_MAX_POS установлен оптический датчик, X2_MIN_POS - программный, соответственно, 5 мм - минимальное расстояние, на которое может двигаться правая каретка (T1), до безопасной близости с левой (T0)).

Начальный gcode в Simplify3d (Starting Script):

G21 ; set units to millimetres

G90 ; set to absolute positioning

M107 ; start with the fan off

G28 X0 Y0 ; move to the X/Y origin (home)

G28 Z0 ; move to the Z origin (home)

G1 Z15.0 F600 ; move Z to safety position 15.0 mm

T1 ; switch to the 2nd (right) extruder

G92 E0 ; zero the extruded length

G1 E20 F100 ; extrude 20mm of feed stock

G92 E0 ; zero the extruded length again

T0 ; switch to the 1st (left) extruder

G92 E0 ; zero the extruded length

G1 E20 F100 ; extrude 20mm of feed stock

G92 E0 ; zero the extruded length again

Переключение экструдеров (Tool Change Script):

{IF NEWTOOL=0}T0; start tool switch 0

{IF NEWTOOL=0}G1 X0 F800; travel X to home

{IF NEWTOOL=1}T1; start tool switch 1

{IF NEWTOOL=1}G1 X0 F800; travel X to home

Мне кажется, ошибка в скрипте переключения, но как он должен выглядеть в корректном виде?
Ответы на вопросы
Lider 3D Реклама
Lider 3D Реклама