This page is under construction and may not have complete or up-to-date information.

MarlinFirmware

Extruders

Description

Extruder settings.

hardware, extruder

An extruder is a combination of one or more motors and heaters that push molten plastic to build objects.

1.0.0

#define EXTRUDERS int

Total number of extruders.

The number of addressable extruder tools that can be selected with T0, T1, etc.

Options
0, 1, 2, 3, 4, 5, 6, 7, 8
Example
#define EXTRUDERS 2
1.1.9

#define DEFAULT_NOMINAL_FILAMENT_DIA float

Default nominal filament diameter

The expected filament diameter (1.75, 2.85, 3.0, …). Used for Volumetric, Filament Width Sensor, etc.

Example
#define DEFAULT_NOMINAL_FILAMENT_DIA 1.75

//#define SINGLENOZZLE

Single nozzle with multiple steppers.

Enable this option for a Cyclops extruder or any “multi-extruder” that shares a single nozzle. This option may be enabled automatically for certain types of extruder.

2.0.0

//#define SINGLENOZZLE_STANDBY_TEMP

Single nozzle standby temperature.

Save and restore the nozzle temperature when doing a tool-change. Set standby temperature for the unselected tool using M104 T or M109 T.

2.0.0

//#define SINGLENOZZLE_STANDBY_FAN

Single nozzle standby fan speed.

Save and restore the fan speed when doing a tool-change. Set standby fan speed for the unselected tool using M106 T.

1.1.0

//#define SWITCHING_EXTRUDER

Dual extruder sharing a single stepper motor.

Various extruder designs exist allowing a single stepper motor to be shared with more than one extruder, usually by using a servo to move a pinch-wheel so that it engages a different filament input. Enable this option if you have one of these devices.

#define SWITCHING_EXTRUDER_SERVO_NR int

Switching Extruder servo number.

The servo used to switch extruder stepper motors.

#define SWITCHING_EXTRUDER_SERVO_ANGLES { angle, angle … }

Angles for E0, E1[, E2, E3]

The servo angles applying to each E stepper motor.

#define SWITCHING_EXTRUDER_E23_SERVO_NR int

Switching Extruder servo number for E2 and E3.

⚠️ Requires: EXTRUDERS > 3

The servo used to switch extruder E2 and E3 stepper motors, if separate.

#define MECHANICAL_SWITCHING_EXTRUDER

Switching extruder using movement.

Switch extruders by bumping the toolhead. Requires EVENT_GCODE_TOOLCHANGE_#.

1.1.2

#define SWITCHING_NOZZLE

Switching Nozzle

A dual-nozzle that uses a servomotor to raise/lower one (or both) of the nozzles. Can be combined with SWITCHING_EXTRUDER.

#define SWITCHING_NOZZLE_SERVO_NR index

//#define SWITCHING_NOZZLE_E1_SERVO_NR index

If two servos are used, the index of the second.

//#define SWITCHING_NOZZLE_SERVO_ANGLES { angle, angle … }

Angles for E0, E1 (single servo) or lowered/raised (dual servo).

//#define SWITCHING_NOZZLE_SERVO_DWELL ms

Dwell time to wait for servo to make physical move.

#define MECHANICAL_SWITCHING_NOZZLE

Mechanical Switching Nozzle

Switch nozzles by bumping the toolhead. Requires EVENT_GCODE_TOOLCHANGE_#.

//#define PARKING_EXTRUDER

Parking Extruder

Two separate X-carriages with extruders that connect to a moving part via a solenoid docking mechanism. Requires SOL1_PIN and SOL2_PIN.

#define PARKING_EXTRUDER_PARKING_X { mm, mm … }

X positions for parking the extruders.

#define PARKING_EXTRUDER_GRAB_DISTANCE mm

Distance to move beyond the parking point to grab the extruder.

#define PARKING_EXTRUDER_SOLENOIDS_INVERT

If enabled, the solenoid is NOT magnetized with applied voltage.

#define PARKING_EXTRUDER_SOLENOIDS_PINS_ACTIVE state

LOW or HIGH pin signal energizes the coil.

#define PARKING_EXTRUDER_SOLENOIDS_DELAY ms

Delay for magnetic field. No delay if 0 or not defined.

//#define MANUAL_SOLENOID_CONTROL

Manual control of docking solenoids with M380 S / M381.

//#define MAGNETIC_PARKING_EXTRUDER

Magnetic Parking Extruder

Two separate X-carriages with extruders that connect to a moving part via a magnetic docking mechanism using movements and no solenoid.

Related Media

#define PARKING_EXTRUDER_PARKING_X { mm, mm … }

X positions for parking the extruders.

#define PARKING_EXTRUDER_GRAB_DISTANCE mm

Distance to move beyond the parking point to grab the extruder.

#define MPE_FAST_SPEED mm/min

Speed for travel before last distance point.

#define MPE_SLOW_SPEED mm/min

Speed for last distance travel to park and couple.

#define MPE_TRAVEL_DISTANCE mm

Last distance point.

#define MPE_COMPENSATION int

Offset Compensation -1 , 0 , 1 (multiplier) only for coupling.

//#define SWITCHING_TOOLHEAD

Switching Toolhead

Support for swappable and dockable toolheads, such as the E3D Tool Changer. Toolheads are locked with a servo.

#define SWITCHING_TOOLHEAD_Y_POS mm

Y position of the toolhead dock.

#define SWITCHING_TOOLHEAD_Y_SECURITY mm

Security distance Y axis.

#define SWITCHING_TOOLHEAD_Y_CLEAR mm

Minimum distance from dock for unobstructed X axis.

#define SWITCHING_TOOLHEAD_X_POS { mm, mm }

X positions for parking the extruders.

#define SWITCHING_TOOLHEAD_SERVO_NR index

Index of the servo connector.

#define SWITCHING_TOOLHEAD_SERVO_ANGLES { angle, angle }

Angles for Lock, Unlock.

//#define MAGNETIC_SWITCHING_TOOLHEAD

Magnetic Switching Toolhead

Support swappable and dockable toolheads with a magnetic docking mechanism using movement and no servo.

#define SWITCHING_TOOLHEAD_Y_POS mm

Y position of the toolhead dock.

#define SWITCHING_TOOLHEAD_Y_SECURITY mm

Security distance Y axis.

#define SWITCHING_TOOLHEAD_Y_CLEAR mm

Minimum distance from dock for unobstructed X axis.

#define SWITCHING_TOOLHEAD_X_POS { mm, mm }

X positions for parking the extruders.

#define SWITCHING_TOOLHEAD_Y_RELEASE mm

Security distance Y axis.

#define SWITCHING_TOOLHEAD_X_SECURITY { mm, mm }

Security distance X axis (T0,T1).

//#define PRIME_BEFORE_REMOVE

Prime the nozzle before release from the dock.

#define SWITCHING_TOOLHEAD_PRIME_MM mm

Extruder prime length.

#define SWITCHING_TOOLHEAD_RETRACT_MM mm

Retract after priming length.

#define SWITCHING_TOOLHEAD_PRIME_FEEDRATE mm/min

Extruder prime feedrate.

#define SWITCHING_TOOLHEAD_RETRACT_FEEDRATE mm/min

Extruder retract feedrate.

//#define ELECTROMAGNETIC_SWITCHING_TOOLHEAD

Electromagnetic Switching Toolhead

Parking for CoreXY / HBot kinematics. Toolheads are parked at one edge and held with an electromagnet. Supports more than 2 Toolheads.

Related Media

#define SWITCHING_TOOLHEAD_Z_HOP mm

Z raise for switching.

1.1.0

//#define MIXING_EXTRUDER

Mixing Extruder

  • Adds G-codes M163 and M164 to set and “commit” the current mix factors.
  • Extends the stepping routines to move multiple steppers in proportion to the mix.
  • Optional support for Repetier Firmware’s ‘M164 S<index>’ supporting virtual tools.
  • This implementation supports up to two mixing extruders.
  • Enable DIRECT_MIXING_IN_G1 for M165 and mixing in G1 (from Pia Taubert’s reference implementation).

#define MIXING_STEPPERS int

Number of stepper motors in the mixing extruder.

#define MIXING_VIRTUAL_TOOLS int

Use the Virtual Tool method with M163 and M164.

//#define DIRECT_MIXING_IN_G1

Allow ABCDHI mix factors in G1 movement commands.

//#define MIXING_PRESETS

Assign 8 default V-tool presets for 2 or 3 MIXING_STEPPERS.

//#define GRADIENT_MIX

Support for gradient mixing with M166 and LCD.

//#define GRADIENT_VTOOL

Add M166 T to use a V-tool index as a Gradient alias.

//#define HOTEND_OFFSET_X { mm, mm … }

⚠️ Requires: EXTRUDERS > 1

(mm) Relative X-offset for each nozzle.

  • Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing).
  • The offset has to be 0 for the extruder 0 hotend (default extruder).
  • For the other hotends it is their distance from the extruder 0 hotend.

//#define HOTEND_OFFSET_Y { mm, mm … }

⚠️ Requires: EXTRUDERS > 1

(mm) Relative Y-offset for each nozzle.

  • Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing).
  • The offset has to be 0 for the extruder 0 hotend (default extruder).
  • For the other hotends it is their distance from the extruder 0 hotend.

//#define HOTEND_OFFSET_Z { mm, mm … }

⚠️ Requires: EXTRUDERS > 1

(mm) Relative Z-offset for each nozzle. Used to precisely align Z with extruders that move out of the way.

  • Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing).
  • The offset has to be 0 for the extruder 0 hotend (default extruder).
  • For the other hotends it is their distance from the extruder 0 hotend.