Dual-Extruder.jpg

You can setup Smoothie to handle as many extruders as you'd like.

There is no limit in the firmware : you simply add Extruder ( controlling the extruder motor ) and TemperatureControl ( controlling the hotend ) modules to the configuration file for each new extruder.

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
extruder.first.enable                              true             # Whether to activate the extruder module at all. All configuration is ignored if false
extruder.first.steps_per_mm                        400              # Steps per mm for extruder stepper
extruder.first.default_feed_rate                   600              # Default rate ( mm/minute ) for moves where only the extruder moves
extruder.first.acceleration                        500               # Acceleration for the stepper motor, as of 0.6, arbitrary ratio
extruder.first.max_speed                           3000             # mm^3/s
extruder.first.step_pin                            2.3              # Pin for extruder step signal
extruder.first.dir_pin                             0.22             # Pin for extruder dir signal
extruder.first.en_pin                              0.21             # Pin for extruder enable signal
delta_current                                        1.5              # Extruder stepper motor current

#settings for second extruder
extruder.second.enable                              true             # Whether to activate the extruder module at all. All configuration is ignored if false
extruder.second.steps_per_mm                        400              # Steps per mm for extruder stepper
extruder.second.default_feed_rate                   600              # Default rate ( mm/minute ) for moves where only the extruder moves
extruder.second.acceleration                        500               # Acceleration for the stepper motor, as of 0.6, arbitrary ratio
extruder.second.max_speed                           3000             # mm^3/s
extruder.second.step_pin                            2.8              # Pin for extruder step signal
extruder.second.dir_pin                             2.13             # Pin for extruder dir signal
extruder.second.en_pin                              4.29            # Pin for extruder enable signal
epsilon_current                                      1.5              # 5th axis

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 :

# Hotend temperature control configuration
temperature_control.hotend.enable            true             # Whether to activate this ( "hotend" ) module at all.
                                                              # All configuration is ignored if false.
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              #
temperature_control.hotend.set_and_wait_m_code 109            #
temperature_control.hotend.designator        T                #
temperature_control.hotend.max_temp         250              # Set maximum temperature
temperature_control.hotend.min_temp         0                # Set minimum temperature - Will prevent heating below if set
temperature_control.hotend.p_factor         13.7             # permanently set the PID values after an auto pid
temperature_control.hotend.i_factor         0.097            #
temperature_control.hotend.d_factor         24               #
temperature_control.hotend.max_pwm          64               # max pwm, 64 is a good value if driving a 12v resistor with 24v.

# Hotend2 temperature control configuration
temperature_control.hotend2.enable            true             # Whether to activate this ( "hotend" ) module at all.
                                                                # All configuration is ignored if false.
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#toc5
temperature_control.hotend2.set_m_code        104              #
temperature_control.hotend2.set_and_wait_m_code 109            #
temperature_control.hotend2.designator        T1               #
temperature_control.hotend2.p_factor          13.7           # permanently set the PID values after an auto pid
temperature_control.hotend2.i_factor          0.097          #
temperature_control.hotend2.d_factor          24             #
temperature_control.hotend2.max_pwm          64               # max pwm, 64 is a good value if driving a 12v resistor with 24v.

Ctrl+C

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.

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.