The Creality Ender 3 is one of the most popular hobbyist machines available. The printer has been embraced by enthusiasts on a budget, and it quickly gained popularity on platforms like YouTube, Reddit, and more. The original Ender 3’s success led Creality to release more iterations of the Ender 3, including the Ender 3 Pro, the Ender 3 V2, and the Ender 3 S1.

While all versions of the Ender 3 have some slight differences, they’re all limited to printing one filament at a time. This means that you can only print an item in one material or color (unless the filament is multicolored). If you want to achieve multicolor or multi-material prints (like with dual-extrusion) on your Ender 3, one easy way to do this is with a simple mid-print filament switch.

A mid-print filament switch is exactly what it sounds like, yielding prints with a color or material change at a specific layer. The color change is immediate and doesn’t produce any kind of gradient effect; the layers after a certain point will simply be printed in a different filament. If you’re looking for a permanent solution, you could consider using a dual or multi-extrusion system such as Chameleon or Pallete. To learn more, you can check out our guide to dual extruders on the Ender 3s.

In this article, we’ll go over two ways to perform a mid-print filament switch on your Ender 3, Pro, V2, or S1: the manual method and the G-code-assisted way. The manual method involves pausing the print yourself and removing the filament by hand, while the G-code assisted technique makes this process more automatic through your slicer. We’ll use Cura as the example for all slicer settings changes, but the process will be similar for other slicers.

Back to Contents

1
Ender 3 (V2/Pro/S1): How to Change Filament Mid-print

Method #1: Manual

You can use your slicer to display the layer number on your LCD
You can use your slicer to display the layer number on your printer's screen (Source: Sébastien Genos)

Manually changing the filament is the easiest method to set up. However, before we get into the actual switching instructions, there are a few preparations that you may want to take.

Convenient Prep

The first thing you might find handy is to employ a G-code script that will display the current layer on your printer’s screen. This will make it easy to monitor your printer to see if it’s ready for the filament switch. To do this, follow the steps below:

  1. Open Cura and click “Extensions”.
  2. From the drop-down menu, select “Post Processing”.
  3. Click “Modify G-Code” and a box will pop up.
  4. Select “Add a script”.
  5. Choose the “Display Filename And Layer On LCD” option.
  6. Make sure that the “Initial layer number” is set to 0.

The second preparation is knowing when to switch filaments; this step will be helpful later. Follow the steps below to identify the layer number at which you want to make the switch:

  1. Open Cura and choose your slicer settings or profile.
  2. Slice the model, click “Preview”, and activate “Layer view” for the “View type” option.
  3. Use and move the layer slider on the right-hand side to find the layer at which you want to change filaments.
  4. Identify the layer number (and write it down)!

Making the Switch

Make sure you extrude filament until you see your new filament come out of the nozzle
Keep extruding until you see your new filament come out of the nozzle (Source: Reddit)

Once your printer is displaying layer numbers and you know exactly when it should change, it’s time to start your print. Note that, as the process is time sensitive, we strongly advise that you read over the steps once or twice before performing them.

A particularly important point to be aware of is how the nozzle temperature should be set if you’re changing between different material types: Essentially, any time you switch filaments, you should ensure that the nozzle temperature is set to the higher of the two materials while you purge the first with the second. The following steps accommodate this.

After starting your print, keep an eye on its progress so that you’re prepared when it’s getting close to the layer you want to make the filament switch at. Once the correct layer number is displayed, follow these steps:

  1. On your Ender 3’s screen, pause the print.
  2. Once your printhead reaches its paused position, immediately set the bed and nozzle temperature to reheat to the values you were just using (or increase the nozzle temperature if you’re switching to a material with a higher print temperature). The heated nozzle will allow you to remove the filament in the next step, and the heated bed will ensure that the print doesn’t lose adhesion to the build plate.
  3. Carefully remove the filament from the extruder and load the new filament. Slowly push the filament through the PTFE tube and hot end.
  4. Once you feel resistance when pushing the filament, look at the nozzle. Continue to gently push the filament until you see the new filament coming out of the nozzle.
  5. Carefully remove, preferably using tweezers, the strand of purged filament that your nozzle just produced. (Otherwise, a leftover strand could collide with and adhere to your current print.)
  6. If not already the case, set the nozzle temperature so that it’s appropriate for the new filament, then resume the print. For the first layer after any filament change, you may want to add an extra 5 °C to your nozzle temperature so that the new layer properly adheres to the one below.
  7. Watch the next layer as it’s extruded on top of the existing print to check that the switch has been successful. If you see a layer shift (the nozzle printing offset from where the current print is), you’ll have to cancel the print and restart.

Back to Contents

Advertisement
Advertisement
Advertisement
2
Ender 3 (V2/Pro/S1): How to Change Filament Mid-print

Method #2: G-code-Assisted

Once you click the knob after the print has paused, the nozzle will reheat to the printing temperature
Once you click the control knob, the nozzle will reheat to the printing temperature (Source: HL ModTech via YouTube)

The second method for a mid-print filament switch on any model of Ender 3 is to use a G-code assistant. There are two main ways to do this in Cura, but we’ll be focusing on the “Filament Change” G-code modification. The other way is to use the “Pause at height” command.

To start, you’ll need to add the “Filament Change” G-code command to your slicer. The instructions below are for Cura but should be somewhat similar in other slicers (PrusaSlicer, Simplify3D, etc.):

  1. Open Cura and click “Extensions”.
  2. From the drop-down menu, select “Post Processing”.
  3. Click “Modify G-Code” and a box will pop up.
  4. Select “Add a script”.
  5. Choose the “Filament Change” option.

From here, you can change the settings of the filament switch G-code sequence in the settings box on the pop-up screen. Make sure to change the “Layer” setting to whatever layer you want to change your filament at. If you want to have multiple filament switches in a single print, you can add more than one filament change command by following the same process. To find the layer you want to change filaments at, refer to the instructions in the “Manual” method.

A Word on G-code

The above script uses the M600 command to function, but this command may not be registered by your printer’s firmware. In our experience, the M600 command was successfully registered by the Ender 3’s original Creality (Marlin-based) firmware – indeed, according to Creality’s GitHub for Ender 3 firmware, the M600 command is programmed. However, if you have an older model of Ender 3, the feature may not have been activated in the firmware.

If you want to change your firmware so that this command works on your printer, download either Marlin 1 or Marlin 2 and open an editor such as Arduino IDE or Microsoft VSCode. There, go into the “Configuration_adv.h” file and delete the “//” in front of #define ADVANCED_PAUSE_FEATURE. After uploading your new firmware to your printer, you should be able to use the M600 command on your Ender 3.

If you want to check if your firmware has the M600 command programmed, open the configuration files and search (Ctrl + F) for “M600”. If nothing shows up, the firmware won’t recognize the command.

Making the Switch

Image of:
Add the "Filament Change" script in Cura (Source: All3DP)

The filament change script is a helpful assistant that will give you more leeway and time to change your filament than you’d have if you were to manually change filaments. If all goes according to plan, your printer will pause at the specified layer height, retract the filament to remove as much as it can, and move the printhead to a specific location – by default, (X0, Y0).

At this point, the nozzle will stop heating, but the bed will maintain its temperature to ensure bed adhesion. Once you’re ready to switch the filament, you can click the printer’s control knob and the nozzle will heat back up to your printing temperature.

After that, the steps are the same as for the manual method. All you have to do is insert the new filament into the extruder and click the control knob again, and the printer will begin to extrude filament. Most likely, the nozzle won’t purge on the first go, as the new filament won’t have reached the hot end yet, so click the knob again, and the printer will run another extruding cycle. Then, when you’re ready, you can resume the print!

While this method for switching filaments requires almost no manual work, it’s important to remember not to move anything. Moving parts of your printer like the print bed or printhead will cause height or layer shifting when your print resumes (as the firmware won’t register any relative position changes you accidentally make).

Also, as with the manual method, if you’re switching materials (like PETG to PLA), make sure to change the nozzle temperature to the temperature required by your new material. Furthermore, you may want to add an extra 5 °C during the first layer of the new material to provide adequate layer adhesion.

Back to Contents

Advertisement
Advertisement
Advertisement
Ender 3 (V2/Pro/S1): How to Change Filament Mid-print

Common Problems

Image of: Common Problems
Layer shifting is caused when you move the printhead or bed while the printer is paused or printing (Source: neocamel via Reddit)

While the rewards of switching your filament mid-print can be great, there are some problems that you can run into if you’re not careful:

  • Layer shift: This is perhaps the most common problem, and it occurs when the print bed or printhead are moved along the X- or Y-axes. This can happen at any time while the printer is printing, but for filament changes, there’s an extra risk of accidentally bumping the printhead while you’re removing or inserting the filament. When the print resumes, the part will start printing slightly offset from its original location because you’ve altered the printhead’s position. Sadly, there’s no real fix apart from starting again. To avoid layers shifting, when changing your filament, be gentle with your printer, don’t move it, and don’t touch anything you don’t have to!
  • Height changes: This problem is similar to layer shift but concerns the Z-axis rather than the X- and Y-axes. It involves the print resuming too high or too low on top of the original print. This can happen if you unintentionally lower the X gantry or put significant pressure on the print bed. When faced with Z-axis changes, you can adjust the knobs on your print bed or adjust the Z offset mid-print; however, this may not work if your fade height is set lower than the current printing point. While you might be able to save your print, don’t forget to re-level the bed afterwards!
  • Warping or prints popping off: If your bed doesn’t maintain its heated temperature, your print could warp on the cold bed while you change filaments. It could also become loose or even completely detach, especially if you use a glass bed. To prevent this from happening, act fast when changing your filament and keep your bed heated at a consistent temperature to maintain bed adhesion.
Poor layer adhesion can be partially solved by raising or maintaining the nozzle temperature inbetween switching filaments
Layer adhesion can be helped by maintaining the nozzle temperature (Source: mmmatt3120 via Reddit)
  • Poor layer adhesion: Poor layer adhesion may occur when the layers from one filament to the next don’t stick together well. There’s an even greater risk of poor adhesion if you’re changing materials, not just colors. This problem is difficult to fix when it occurs, but increasing your nozzle temperature between filament switches should help (start with a 5 °C increase). If you’re changing materials to a filament that requires a hotter temperature, make sure that the new nozzle temperature is high enough (an enclosure might also help for certain materials). Also ensure that your Z-axis height is the same, as too high above the original print could also cause poor layer adhesion.
  • Bump where paused: When you pause your print before switching your filament, extra filament can come out of the nozzle, leaving a bump on your print. Your printer will print over the bump when it resumes, but it can damage the surface quality of your print. To prevent this, quickly retract your filament by hand as soon as the print is paused and ensure no material remains on the nozzle before resuming. If you’re using the G-code assistant for the swap, increase the “Initial Retraction” setting from 30 mm to 50 mm.

Back to Contents

Advertisement
Advertisement

License: The text of "Ender 3 (V2/Pro/S1): How to Change Filament Mid-print" by All3DP is licensed under a Creative Commons Attribution 4.0 International License.

Stay informed with notifications from All3DP.

You get a notification when a new article is published.

You can’t subscribe to updates from All3DP. Learn more… Subscribe to updates

You can’t subscribe to updates from All3DP. Learn more…

Topics
Advertisement