Multiple extrusion


It's very cool

You can setup Smoothie to handle upto 3 extruders. (6 defined axis is the maximum the memory can handle).

Simply add Extruder ( controlling the extruder motor ) and TemperatureControl ( controlling the hotend ) modules to the configuration file for each new extruder.

NOTE that the default build of Smoothie only supports 2 extruders (5 axis), if you need 3 extruders you need to compile with make AXIS=6

Hardware requirements

For each extruder you are going to need :

  • One temperature input for the hotend. Smoothieboard has 4 thermistor inputs, this means one heated bed and three hotends, or four hotends and no bed. To add additional hotends you have the option of using thermocouple external boards, which can be connected to the SPI port : either a single one, or four using a SPI hub, leaving you with a maximam total of 8 hotends, or more if you chain SPI hubs.
  • One MOSFET output : Smoothieboard has 6 MOSFET outputs maximum ( 3 small 3 big ) that can be used for hotends, but depending on whether or not you use a bed you might only have 5 available. However you can wire external MOSFETs or SSRs to any free GPIO pin, giving you as many as there are free GPIO pins ( going to 8 or more being then easy ).
  • One stepper motor driver. Smoothieboard has 5 maximum ( depending on board type ). You need 3 for 3-dimensional movement, regardless of your arm solution. This leaves you being able to drive at most two extruders with the on-board drivers. However, wiring additional drivers is as simple as using free GPIO pins. Simply wire any pin on the Smoothieboard as the step, direction and enable pins for your external stepper driver.

This means, assuming you are using a heated bed, you can drive two extruders easily with what is on-board the Smoothieboard. To go to three extruders you will need to add one external stepper motor driver. To go to four you will need to add another external stepper motor driver, and use a SPI thermocouple temperature input external board, etc …

We will here concentrate on a dual extruder setup.

Configuration

The default configuration in the Smoothie firmware is for a single extruder.

In order to setup a second one, you need to use the syntax dedicated to multiple extruder systems. This means using the “module generation” syntax you could be familiar with from the TemperatureControl and Switch modules.

Here is what it looks like :

## Extruder module configuration
# See http://smoothieware.org/extruder

extruder.hotend.enable                          true          # Whether to activate the extruder module at all. All configuration is ignored if false
extruder.hotend.steps_per_mm                    140           # Steps per mm for extruder stepper
extruder.hotend.default_feed_rate               600           # Default rate ( mm/minute ) for moves where only the extruder moves
extruder.hotend.acceleration                    500           # Acceleration for the stepper motor mm/sec²
extruder.hotend.max_speed                       50            # Maximum speed in mm/s
extruder.hotend.step_pin                        2.3           # Pin for extruder step signal
extruder.hotend.dir_pin                         0.22          # Pin for extruder dir signal ( add '!' to reverse direction )
extruder.hotend.en_pin                          0.21          # Pin for extruder enable signal
delta_current                                   1.5           # First extruder stepper motor current

# Second extruder module configuration
extruder.hotend2.enable                         true         # Whether to activate the extruder module at all. All configuration is ignored if false
extruder.hotend2.steps_per_mm                   140          # Steps per mm for extruder stepper
extruder.hotend2.default_feed_rate              600          # Default rate ( mm/minute ) for moves where only the extruder moves
extruder.hotend2.acceleration                   500          # Acceleration for the stepper motor, as of 0.6, arbitrary ratio
extruder.hotend2.max_speed                      50           # mm/s
extruder.hotend2.step_pin                       2.8          # Pin for extruder step signal
extruder.hotend2.dir_pin                        2.13         # Pin for extruder dir signal ( add '!' to reverse direction )
extruder.hotend2.en_pin                         4.29         # Pin for extruder enable signal
epsilon_current                                 1.5          # Second extruder stepper motor current

As you can see it is quite similar to the normal extruder configuration, only extended to multiple extruders. You can add other extruders the same way. There is no specific name you have to name your extruders, simply add as many as you want, with whatever names you want, as long as the names are different.

Simply replace your current extruder configuration with this in the config file.

You will also need to configure an additional TemperatureControl module for the hotend.

It is recommended you read the TemperatureControl documentation.

Here is an example configuration for a two extruders setup :

## Temperature control configuration
# See http://smoothieware.org/temperaturecontrol

# First hotend configuration
temperature_control.hotend.enable            true             # Whether to activate this ( "hotend" ) module at all.
temperature_control.hotend.thermistor_pin    0.23             # Pin for the thermistor to read
temperature_control.hotend.heater_pin        2.7              # Pin that controls the heater, set to nc if a readonly thermistor is being defined
temperature_control.hotend.thermistor        EPCOS100K        # See http://smoothieware.org/temperaturecontrol#toc5
temperature_control.hotend.set_m_code        104              # M-code to set the temperature for this module
temperature_control.hotend.set_and_wait_m_code 109            # M-code to set-and-wait for this module
temperature_control.hotend.designator        T0               # Designator letter for this module

# Second hotend configuration
temperature_control.hotend2.enable            true           # Whether to activate this ( "hotend2" ) module at all.
temperature_control.hotend2.thermistor_pin    0.25           # Pin for the thermistor to read
temperature_control.hotend2.heater_pin        1.23           # Pin that controls the heater
temperature_control.hotend2.thermistor        EPCOS100K      # See http://smoothieware.org/temperaturecontrol#thermistor
temperature_control.hotend2.set_m_code        104            # M-code to set the temperature for this module
temperature_control.hotend2.set_and_wait_m_code 109          # M-code to set-and-wait for this module
temperature_control.hotend2.designator        T1             # Designator letter for this module

CtrlC

Please do not mindlessly copy/paste the examples here, they probably do not fit your particular setup. Understand what is going on, and actually adapt the configuration to your specific situation. These are only examples.

1 hotend, two extruders

If you have two extruders going into one hotend, you need to set-up two extruder modules, and one temperaturecontrol module. Make sure you name the temperaturecontrol differently from the extruder modules so none of them gets preference.

If doing this setup with the Cura software, this additional Cura module might be helpful : https://github.com/pmarkiewicz/CuraPostprocessingScripts

Wiring

The first extruder in this configuration is wired to M4, the second one to M5.

If you have more extruders, you will need to use external stepper motor drivers. Please see the specific documentation for this in the 3D printer guide.