Pause At Layer Height

There are multiple ways to pause a print and change filament on the Duplicator i3.  In this article I’ll discuss several procedures. Note, this guide is aimed at the Duplicator i3 only.  Some of these instructions may or may not apply to the Plus or to other printers.

There are many different ways to accomplish the task of pausing a print to change filament (or to load a print with embedded items such as weights, magnets, etc).  This is not meant to be an exhaustive guide, just an explanation of some of the basic and common ways.  You are encouraged to experiment, to learn by experimenting, and come up with a way that is perfect for you, your models, and your work process.

Printing From SD Card

Manual Pause

When printing from the SD card, an easy way to pause a print is from the I3’s control panel.

Using the dial on the control panel, navigate through the menus to “SD Card” then “Pause Print.”  It will sometimes take several seconds before it pauses because the printer will execute all the commands already in the buffer before it executes the pause.  The nozzle will move to the left and the bed will move forward placing the nozzle over the back left corner of the bed.  If this is not a convenient location, you can use the control panel to move the X and Y axis.  You can even disable the steppers and move them by hand.  If you do, just home the X and Y axes before resuming.

If you need to move the Z axis for more clearance, pay attention to the current Z height as shown on the LCD screen.  Be sure to lower the Z axis back to that precise height before resuming.

It is best to change the filament by pressing the filament release leaver, pulling out the old filament, and manually pushing through new filament.  If you have to use the extruder to change filament, then reset the extruder origin before resuming.  Otherwise, the filament you loaded will be unloaded as the extruder is returned to the 0 position.  On the control panel menu, navigate to Extruder and choose “Set Origin.”  You can then resume without fear of the filament being ejected.

To resume the print, use the control panel.  Go to the SD Card menu and select Continue Printing.

GCODE Controlled Pause

Manually pausing the print has a few drawbacks.  You have to be actively watching the printer to prepare for pausing.  The process can be finicky and prone to error.  And it does not allow fine control of the precise location of the pause.  Controlling the pause through gcode is a better method.

For the firmware on the Duplicator i3, the gcode to pause is “M25.” When the printer processes the gcode command “M25” it will stop the extruder at its current location and await further instructions.  It does not automatically move the extruder away from the print, so this has to be done manually or with additional gcode commands.  A very simple gcode pause script which will move the extruder to the front left corner of the bed and then pause would be:

G28 X0 Y0    ; Home X and Y
M25           ; Pause Print

You can build on this gcode making it more complex to better suit your requirements.  Refer to the list of gcode commands at http://reprap.org/wiki/G-code and do your own experiments.

This is a slightly more useful pause gcode, but is still pretty simple:

; Begin Pause Code
 G28 X0 Y0           ; Home X and Y
 M300                ; Ring Buzzer
 M400                ; Wait for command buffer to clear
 M25                 ; Pause Print
      ; Execute following lines after resuming
 G28 X0 Y0           ; Home X and Y
 G92 E0              ; Reset Extruder Origin
 ; End Pause Code

The above gcode will move the nozzle to the front left corner, make a noise through the control panel speaker, make sure the command buffer is clear, then pause so you can change the filament (or load the model with embedded items such as weights or magnets).  When you resume, it will re-home X and Y – so it’s OK to move the nozzle around when paused.   It will reset the extruder to 0 (so you can use the extruder to load the filament.

Here is a slightly more complicated pause gcode:

; Begin Pause Code
 G28 X0 Y0           ; Home X and Y
 G91                 ; Set XYZ to Relative Positioning
 G1 Z10               ; Raise Z 10mm for Clearance
 G90                 ; Set XYZ back to Absolute
 M300                ; Ring Buzzer
 G1 E-70.00 F5400    ; Remove Filament
 M400                ; Wait for moves to finish
 M25                 ; Pause Print
 G28 X0 Y0           ; Home X and Y
 G91                 ; Set XYZ to Relative Positioning
 G1 Z-10             ; Lower Z 10mm to previous level
 G90                 ; Set XYZ back to Absolute
 G92 E0              ; Reset Extruder Origin
 ; End Pause Code

When slicing the file, make a note of the layers where you would like to pause.  After saving the gcode with your slicer, open it with a text editor and insert the command at the desired locations.  Most slicer software will add a comment indicating the beginning of each layer.  This makes it easier to find in the text editor by using the search function and searching for the word “layer” and the desired layer number.  If using Windows, I recommend using Notepad++ which is a free text editor and much more powerful than basic Windows Notepad.

Resuming a print paused in this manner is the same as when paused using the control panel.

Printing From Host Software

Pause Button

Most printer control software such as Octoprint, Repetier-Host, etc. will have an on-screen pause button.  The exact behavior will depend on the software, but the most likely behavior will be similar to pausing from the control panel when printing from the SD card.  That is, it may take a few seconds to pause as it works through the buffer, but will then stop the nozzle where it is when it gets to the Pause command.  You can then use the host software or the control panel to move the nozzle, change filament, and resume.

GCODE Controlled Pause

Prepare your gcode file in the same way as explained in the previous section.  In most cases, the gcode will be executed exactly as when printing from the SD card.  The difference here is that since you are printing from host control software rather than the SD card, you will use that software to resume the print.  When paused through gcode, the Pause button in the software will change to Resume.

Be aware that some control programs do not recognize the M25 pause command.  If printing directly from Simplify3D for instance, it will not recognize the M25 command and will not pause.  If M25 doesn’t work with the software you are using, you may need to experiment with other pause commands (such as M600, @pause, etc).  Use the http://reprap.org/wiki/G-code site to research available options.

 

Using A Slicer To Insert Pause Gcode

So far, I’ve only discussed manually inserting pause code using a text editor after slicing.  But most slicers have a method to insert the pause code as part of the slicing process.

Simplify3D

In the process settings, go to the Scripts tab.  At the bottom is a box labeled “Additional terminal commands for post processing.”  In this box, add a script such as the following example:

{REPLACE "\n; layer 19, Z = " "; layer 19\nG28 Y0 X0\nM300\nM25\nG92 E0\nG28 Y0 X0\n; layer 19 "}

Replace “layer 19” with your desired layer number.  This script uses regular expressions.  A tutorial on regular expressions is outside the scope of this article, but it is important to know that \n will begin a new line in the gcode file so you can include multiple lines of commands.

After the gcode is saved, you may look for something like the following depending on how you modified the script.

; layer 19
 G28 Y0 X0
 M300
 M25 
 G92 E0 
 G28 Y0 X0 
 ; layer 19

Make sure the script is only 1 line.  If you save the profile and reload it, S3D may replace the comma after the layer number with a line break.  This will cause the script to fail, so check this each time you need to use it.

Cura

Cura has an option to use plugins and there are several plugins to inject pause code into the sliced file.
Pause at height by Raz”.  A good video tutorial can be found at https://www.youtube.com/watch?v=fR9elNDwBLI.

Change Filament At Z” by rawlogic.

OctoPrint

While not a true slicer (although it does have slicing capability), OctoPrint offers a very easy way to inject pause code into your sliced files using the MultiColors plugin (available here: http://plugins.octoprint.org/plugins/multi_colors/).