diff --git a/assets/images/slicer/slicer7.png b/assets/images/slicer/slicer7.png new file mode 100644 index 00000000..02f25959 Binary files /dev/null and b/assets/images/slicer/slicer7.png differ diff --git a/experimental/notip/index.html b/experimental/notip/index.html index f5b9e879..d5c5a570 100644 --- a/experimental/notip/index.html +++ b/experimental/notip/index.html @@ -1123,6 +1123,24 @@ + + +
Disable filament ramming in Filament Settings
-> Multimaterial
-> Toolchange parameters with single extruder MM printers
:
Next, change the Unloading speed at start
and Unloading speed
to 300 (faster is better here). Next, change the Loading speed at start
and Loading speed
to 300 and 100, respectively.
The main idea behind toolchanges without tip shaping relies on the filament being unloaded too fast to form a blob. Setting the Unloading speed
settings allows this. Next, loading the filament back can be generally optomized by increasing the Loading speed
settings.
If your filament has very long strings on the end of them after unloading without tip shaping (longer than 2cm), decrease your filament temperature.
+If your filament tip has a nearly flat tip, increase your filament temperature.
+The ideal filament tip has a pointy end and a small string (less than 5mm). When in doubt, it is recommended to aim for a slightly stringy tip over a flat tip.
diff --git a/search/search_index.json b/search/search_index.json index 6f6a89e9..0cfbf17e 100644 --- a/search/search_index.json +++ b/search/search_index.json @@ -1 +1 @@ -{"config":{"lang":["en"],"separator":"[\\s\\-]+","pipeline":["stopWordFilter"]},"docs":[{"location":"","title":"Welcome to the 3MS Documentation","text":"The 3MS is short for MMMS, which stands for Modular Multi Material System
"},{"location":"#inspiration","title":"Inspiration","text":"Info
This documentation is still under construction. If you have any questions not answered by the documentation, please open an issue on Github.
"},{"location":"#sample-prints","title":"Sample Prints","text":"Sample Prints SheepCalendarVoron CubeT-RexLizardModel: Sheep by Cipis
Model: Monolith Cryptic Calendar by Sevro
Model: Voron Cube (bundled with OrcaSlicer), painted by me in OrcaSlicer
Printed at 50% scale
Model: T-rex by Cipis
Model: Striped lizard with pupils by EngMike
"},{"location":"#photos","title":"Photos","text":"Photos Full Printer3MSY Splitter"},{"location":"#why-3ms","title":"Why 3MS?","text":"Why use the 3MS when there are many other multi-material systems?
Here are a few reasons:
With that said, there are a few reasons why you might not want to/be able to use the 3MS:
Here is a example step by step of what goes on during a single 3MS toolchange from T0 to T1:
For more detail about the Tx command, see Flowchart.
Think of the 3MS as an extension to your current extruder's length. It allows for switching filaments, but while printing allows for all the benefits of your printer's extruder.
The 3MS's motors work together with your printer's extruder. This way, there won't be any additional resistance from pulling the filament through a disabled extruder. Also, unloads and loads to/from the printer's extruder are fully synchronized with the 3MS. This allows for even faster toolchanges!
"},{"location":"#get-started","title":"Get Started","text":"To get started with the 3MS, see the Master Instructions.
"},{"location":"#what-about-the-3dchameleon","title":"What about the 3DChameleon?","text":"I recently created a klipper plugin for the 3DChameleon after purchasing a unit. I'm sure my Chameleon could have worked if I had tuned it further, but after several months with only partial success, I gave up. I am still open to pull requests for 3dchameleon-klipper and will do my best to respond to issues there, but I won't be able to test it myself anymore.
"},{"location":"flowchart/","title":"Toolchange Flowchart","text":"This flowchart assumes a fsensor_delay
of 2000ms.
graph TD\n A[T1] --> B[Toolchange T=1];\n B[Toolchange T=1] --> C{Same tool?};\n C --> |No| D{Previous filament loaded?};\n C --> |Yes| E{Do nothing};\n D --> |Yes| F[MMMS_UNLOAD];\n F --> G[DESYNC_TOOL TOOL=0];\n G --> H[G4 P2000];\n H --> I[CHECK_FSENSOR V=0];\n D --> |No| J[SYNC_TOOL TOOL=1];\n I --> J;\n J --> K[MMMS_LOAD];\n K --> L[G4 P2000];\n L --> M[CHECK_FSENSOR V=1];\n M --> N[Save new previous extruder]
"},{"location":"instructions/","title":"Instructions","text":""},{"location":"instructions/#master-instructions","title":"Master Instructions","text":"Due to the modularity of the 3MS, there are many ways to set it up. This guide attempts to encompass all supported ways of setting up the 3MS.
"},{"location":"instructions/#basic-steps","title":"Basic Steps","text":"The basic steps this guide will follow are:
Before starting the instructions, a basic understanding of how the 3MS works is recommended. There are two types of components in the 3MS:
Controller
This controls the stepper motors
Filament Units
This moves the filament
The number of filaments you will be able to print with is equal to the number of filament units you have. For example, two filament units will let you print with two colors. It is important to note that one filament unit will NOT let you print in multimaterial.
"},{"location":"instructions/#05-choosing-a-controller","title":"0.5. Choosing a Controller","text":"Choose one of the controllers from Controllers before continuing.
"},{"location":"instructions/#1-getting-a-bom","title":"1. Getting a BOM","text":"Go to BOM to view the bill of materials for the number of filament units you want. Example BOM for two filament units and a SKR Mini E3 V2:
Name Price Quantity Link Notes SKR Mini E3 V2 $34.99 1 Amazon Duponts $9.99 1 Amazon These wires are only sufficient to run steppers, not heaters 12V PSU $7.39 1 Amazon This PSU is only sufficient to run steppers, not heaters NEMA17 Stepper Motor $9.99 2 Amazon You can use a pancake stepper if you want, but it will have less torque MK8 Metal Extruder $9.99 2 Amazon Capricorn PTFE Tubing $11.49 1 Amazon You likely won't need this for every unit, as this is usually too long for only one unit"},{"location":"instructions/#2-assembling-your-3ms","title":"2. Assembling your 3MS","text":"Follow Assembly to assemble your 3MS.
"},{"location":"instructions/#3-configuring-your-3ms","title":"3. Configuring your 3MS","text":"Follow Stepper Setup to setup and calibrate each of your filament units.
"},{"location":"instructions/#5-slicer-setup","title":"5. Slicer setup","text":"Follow Slicer Setup to setup your slicer for the 3MS.
"},{"location":"instructions/#6-first-print","title":"6. First print","text":"Follow First Print to create your first multimaterial print with the 3MS.
"},{"location":"instructions/#7-troubleshooting","title":"7. Troubleshooting","text":"Check Troubleshooting to find guides to troubleshoot your 3MS.
"},{"location":"instructions/#8-updating","title":"8. Updating","text":"To update the 3MS configuration, go to the Update Manager in Mainsail/Fluidd and refresh the updates.
Next, find the \"mmms\" entry in the list. If there is an \"Update\" button next to it, click it and begin updating.
After updating, in your terminal, run:
sh ~/3MS/install.sh\n
This will install the new 3MS configuration. Next, restart Klipper:
Info
It is important to restart the Klipper service, and not just run the RESTART
command.
Either run this command in your terminal or restart from Mainsail/Fluidd:
TerminalMainsail/Fluiddsudo service klipper restart\n
"},{"location":"configuration/","title":"Configuration","text":"This guide covers the configuration structure and options of the 3MS.
"},{"location":"configuration/#maincfg","title":"main.cfg","text":"main.cfg
is located in 3ms/main.cfg
. It contains the following:
[save_variables]
configuration section. This section sets the location where variables about the previous tool will be saved. [include]
sections. These reference other configuration files covered in this guide. The included configurations are:settings.cfg
macros.cfg
controllers/xxx/steppers.cfg
settings.cfg
contains the settings the 3MS uses during toolchanges in macros.cfg
. Further information is here.
macros.cfg
contains the macros the 3MS uses during toolchanges. Further information is here.
steppers.cfg
contains the MCU configuration for the 3MS. It contains the following:
[extruder_stepper 3msx]
This contains the pin mappings for the motor assigned to 3MS tool x.[tmc2209 extruder_stepper 3msx]
This contains the pin mappings for the TMC2209 controlling the motor assigned to 3MS tool x.[mcu 3ms]
This contains the serial path to the 3MS MCU.This contains the KlipperScreen 3MS menu configuration. For more information, see KlipperScreen.
"},{"location":"configuration/fsensor/","title":"Filament Sensor","text":"Follow this guide to configure your filament sensor with the 3MS.
"},{"location":"configuration/fsensor/#location-of-sensor","title":"Location of Sensor","text":"The filament sensor should be right before the extruder, and after the Y splitter. Other locations, such as between the hotend and extruder, have not been tested.
Warning
The 3MS has only been tested with a filament_switch_sensor
, and not with a filament_motion_sensor
To configure your filament sensor with the 3MS, open 3ms/settings.cfg
and change the following (assuming your filament sensor is named \"runout_sensor\"):
fsensor_name: \"fsensor\"\n
3ms/settings.cfgfsensor_name: \"runout_sensor\"\n
"},{"location":"configuration/install/","title":"Installation","text":"Follow this guide to install the 3MS configuration and macros.
"},{"location":"configuration/install/#clone-repository","title":"Clone Repository","text":"First, clone the 3MS repository:
cd ~\ngit clone https://github.com/3DCoded/3MS\ncd 3MS\n
"},{"location":"configuration/install/#install-script","title":"Install Script","text":"Run the install script:
sh install.sh\n
"},{"location":"configuration/install/#printercfg","title":"printer.cfg","text":"In your printer.cfg
, add:
[include 3ms/main.cfg]\n
"},{"location":"configuration/install/#moonraker-update-manager","title":"Moonraker Update Manager","text":"To enable updates for the 3MS, add the following to your moonraker.conf
:
# 3MS Update Manager\n[update_manager mmms]\ntype: git_repo\npath: ~/3MS\norigin: https://github.com/3DCoded/3MS.git\nprimary_branch: main\nis_system_service: False\ninstall_script: install.sh\n
Warning
When updating via Moonraker, the following files will be overwritten:
macros.cfg
KlipperScreen.conf
If you have any changes in these files, they will be lost when updating.
"},{"location":"configuration/install/#controller","title":"Controller","text":"In 3ms/main.cfg
, edit the [include ./controllers/xxx/steppers.cfg]
line, replacing xxx
with the config name of your controller:
btt_skr_mini_e3_v2
BTT Octopus (main MCU) btt_octopus_main
"},{"location":"configuration/install/#configure-mcu-id","title":"Configure MCU ID","text":"Finally, to configure the MCU ID you saved from Firmware, run in your terminal:
cd ~ && cat mcu.txt\n
Copy the path that is output. Now, in your 3ms/controllers/xxx/steppers.cfg
, in the [mcu 3ms]
section (towards the bottom), set the MCU ID.
Example:
BeforeAfter 3ms/controllers/xxx/steppers.cfg[mcu 3ms]\nserial: /dev/serial/by-id/<your-mcu-id>\n
3ms/controllers/xxx/steppers.cfg[mcu 3ms]\nserial: /dev/serial/by-id/usb-Klipper_stm32f103xe_33FFD1054746333809650557-if00\n
"},{"location":"configuration/klipperscreen/","title":"KlipperScreen","text":"The 3MS supports a KlipperScreen menu. To install it, add the following to your KlipperScreen.conf
(located in the same folder as your printer.cfg
):
[include 3ms/KlipperScreen.conf]\n
"},{"location":"configuration/macros/","title":"Macros","text":""},{"location":"configuration/macros/#3ms-settings","title":"3MS Settings","text":""},{"location":"configuration/macros/#mmms_settings","title":"MMMS_SETTINGS","text":"Stores the settings for the 3MS.
Default Settings
variable_load_distance: 210\nvariable_unload_distance: 200\nvariable_load_speed: 4500\nvairable_unload_speed: 4500\nvariable_fsensor_delay: 2000\nvariable_num_tools: 2\nvariable_step_size: 99\n
Example Usage
MMMS_SETTINGS\n
"},{"location":"configuration/macros/#set_3ms_settings","title":"SET_3MS_SETTINGS","text":"Sets the configuration for the 3MS. Allows temporary customization of load and unload distances and speeds
Example Usage
SET_3MS_SETTINGS LOAD_DISTANCE=210 UNLOAD_DISTANCE=200 LOAD_SPEED=3500 UNLOAD_SPEED=5500 FSENSOR_DELAY=2500\n
"},{"location":"configuration/macros/#get_3ms_settings","title":"GET_3MS_SETTINGS","text":"Dispalys the configuration for the 3MS.
Example Usage
GET_3MS_SETTINGS\n
"},{"location":"configuration/macros/#filament-handling","title":"Filament Handling","text":""},{"location":"configuration/macros/#mmms_unload","title":"MMMS_UNLOAD","text":"Unloads filament by a specified distance and speed. If no distance/speed is specified, it uses the default unload distance/speed from MMMS_SETTINGS
.
Example Usage
MMMS_UNLOAD DISTANCE=200 SPEED=5500\n
"},{"location":"configuration/macros/#mmms_load","title":"MMMS_LOAD","text":"Loads filament by a specified distance and speed. If no distance/speed is specified, it uses the default load distance/speed from MMMS_SETTINGS
.
Example Usage
MMMS_LOAD DISTANCE=210 SPEED=3500\n
"},{"location":"configuration/macros/#check_fsensor","title":"CHECK_FSENSOR","text":"Checks the filament sensor state. Pauses the print if the sensor state does not match the expected value.
Example Usage
CHECK_FSENSOR V=1\n
"},{"location":"configuration/macros/#tool-sync","title":"Tool Sync","text":""},{"location":"configuration/macros/#set_tool_sync","title":"SET_TOOL_SYNC","text":"Sets the sync state of a tool. Syncs or desyncs the specified tool to/from the extruder.
Example Usage
SET_TOOL_SYNC TOOL=0 SYNC=1\n
"},{"location":"configuration/macros/#sync_tool","title":"SYNC_TOOL","text":"Syncs the specified tool and desyncs all other tools to/from the extruder.
Example Usage
SYNC_TOOL TOOL=0\n
"},{"location":"configuration/macros/#desync_tool","title":"DESYNC_TOOL","text":"Desyncs the specified tool from the extruder.
Example Usage
DESYNC_TOOL TOOL=0\n
"},{"location":"configuration/macros/#clear_tool","title":"CLEAR_TOOL","text":"Clears the current tool selection by setting it to -1.
Example Usage
CLEAR_TOOL\n
"},{"location":"configuration/macros/#desync_all_tools","title":"DESYNC_ALL_TOOLS","text":"Desyncs all configured tools.
Example Usage
DESYNC_ALL_TOOLS\n
"},{"location":"configuration/macros/#print-start-and-end","title":"Print Start and End","text":""},{"location":"configuration/macros/#mmms_start","title":"MMMS_START","text":"Starts the print by checking the filament sensor. If filament is detected, the print is paused and the user is notified. Regardless of the filament sensor state, the initial tool is loaded.
Example Usage
MMMS_START INITIAL_TOOL=0\n
"},{"location":"configuration/macros/#mmms_end","title":"MMMS_END","text":"Ends the print by unloading the current tool. If filament is detected after unloading, the user is notified.
Example Usage
MMMS_END\n
"},{"location":"configuration/macros/#tool-change","title":"Tool Change","text":""},{"location":"configuration/macros/#t0","title":"T0","text":"Changes to tool 0.
Example Usage
T0\n
"},{"location":"configuration/macros/#t1","title":"T1","text":"Changes to tool 1.
Example Usage
T1\n
"},{"location":"configuration/macros/#tx","title":"Tx","text":"Changes to a specified tool. Replace x
with the tool number.
Example Usage
T2\nT3\n
"},{"location":"configuration/steppers/","title":"Stepper Motors","text":"Follow this guide to calibrate each of the stepper motors. Each of these steps should be repeated for each of your filament units, replacing TOOL=0
with TOOL=1
, and so on. Also replacing 3ms0
with 3ms1
, and so on.
Info
If your stepper motor shakes erratically while running any of these commands, your wiring may be incorrect.
"},{"location":"configuration/steppers/#is-the-motor-spinning","title":"Is the motor spinning?","text":"Run this command:
SYNC_TOOL TOOL=0\nG1 E50 F4500\n
If the motor spins, skip to the next step. If not, check your wiring first. If your wiring is fine, go to 3ms/steppers.cfg
. Locate the section named [extruder_stepper 3ms0]
. In front of the enable_pin
, add, an !
. If there already is one, remove it. Example:
enable_pin: !3ms: PD7\n
3ms/steppers.cfgenable_pin: 3ms: PD7\n
"},{"location":"configuration/steppers/#is-the-motor-spinning-backwards","title":"Is the motor spinning backwards?","text":"Preload each of the filament units with a piece of scrap filament by pushing the lever to release the tension, inserting filament, then releasing the lever to restore tension. Next, run this command:
SYNC_TOOL TOOL=0\nG1 E50 F4500\n
Note which way the filament moves. If it moves forwards, away from the PTFE coupler, skip to the last step. If it moves backwards, you have two choices:
To invert the pin in the configuration, locate the configuration section for the filament unit spinning backwards, and invert the dir_pin
. See the previous section for how to invert the pin.
This section is a modified version of the Klipper Docs
Preload each of the filament units with a piece of scrap filament at least 200mm long by pushing the lever to release the tension, inserting filament, then releasing the lever to restore tension.
Use a ruler and a marker to place a mark 70mm from the inlet of the filament unit. Use calipers to measure the actual distance. Write it down, as it will be referred to as <initial_mark_distance>
.
Next, run this command:
SYNC_TOOL TOOL=0\nG1 E50 F1500\n
Use calipers to measure the new distance between the inlet of the filament unit and the mark. Write it down, as it will be referred to as <next_mark_distance>
.
Calculate <actual_extrude_distance> = <initial_mark_distance> - <next_mark_distance>
In the steppers.cfg
file (located in 3ms/controllers/xxx/steppers.cfg
), locate the configuration section for the current extruder. Example:
[extruder_stepper 3ms0]\nextruder: extruder\nstep_pin: 3ms: PB13\ndir_pin: !3ms: PB12\nenable_pin: !3ms: PB14\nmicrosteps: 16\nrotation_distance: 32.8450\n
Note the rotation_distance
(last line). In this case, it is 32.8450
.
Calculate the new rotation distance: new_rotation_distance = <rotation_distance> * <actual_extrude_distance> / 50
.
Round this result to three or four decimal places. Decrease it by 0.005 (this is so that if this result is slightly off, the 3MS filament unit will skip, instead of the printer's extruder stripping the filament during a print).
Set the new rotation_distance
in your config. Save it and restart Klipper.
Info
If you use the same stepper motor brand and model for each of your filament units, you likely only have to do this step for one stepper, then copy over the rotation_distance to all the others.
"},{"location":"experimental/dualdrivetpu/","title":"Dual Drive 3MS Extruders for TPU","text":"The 3MS's existing single-drive extruders are prone to tangling with TPU during toolchanges. Dual drive 3MS extruders may fix this issue and allow for multimaterial printing with TPU.
Info
This page, and the features mentioned on it, are in develpment
"},{"location":"experimental/notip/","title":"Toolchanges Without Tip Shaping or Filament Cutter!","text":"Because the 3MS is synchronized to the printer's extruder, it can potentially toolchange without any tip shaping or filament cutter.
Info
This page, and the features mentioned on it, are in develpment
Development StatusSo far, the following work without tip shaping:
Info
This section is under construction.
"},{"location":"experimental/notip/#should-tip-shaping-be-used","title":"Should Tip Shaping be Used?","text":"See Materials for information on whether or not tip shaping should be used for your filaments.
"},{"location":"experimental/notip/#slicer-setup","title":"Slicer Setup","text":"Setup your slicer for no tip shaping as follows.
"},{"location":"experimental/notip/#disable-filament-ramming","title":"Disable Filament Ramming","text":"Disable filament ramming in Filament Settings
-> Multimaterial
-> Toolchange parameters with single extruder MM printers
:
"},{"location":"experimental/nowipe/","title":"Filament Purging without Wipe Tower","text":"
For printers with a dedicated purge bucket or similar system, wipe towers may not be necessary.
Info
This page, and the features mentioned on it, are in develpment
Development StatusSo far, the following have been tested:
SET_PURGE_SETTINGS
functionalityGET_PURGE_SETTINGS
functionalityPURGE
routinestart_macro
end_macro
The macros mentioned on this page are available in the nowipetower
branch.
A new PURGE_SETTINGS
macro contains the following settings:
enable
0 is disabled, and 1 is enabledpurge_x
X-cooridnate of purge bucketpurge_y
Y-corodinate of purge bucketmove_speed
Speed, in mm/min to move to/from purge bucketextrude_speed
Speed, in mm/min (multiply by 0.04 for mm^3/s) to purge filamentstart_macro
Macro to run before purgingend_macro
Macro to run after purgingThe new PURGE
macro runs the purge routine as follows:
enable
== 1, continuestart_macro
purge_x
and purge_y
at move_speed
purge_amount
at extrude_speed
end_macro
Follow this guide to determine if your filament will work with the 3MS.
"},{"location":"guides/materials/#materials-table","title":"Materials Table","text":"This table contains which filaments work in single mode and/or multimaterial mode with the 3MS.
Filament Single Mode Multimaterial Mode Notes PLA Yes Yes PLA+ Yes Yes Silk PLA Yes No Matte PLA Yes No PETG Yes Yes TPU Untested No"},{"location":"guides/materials/#pla","title":"PLA(+)","text":"PLA/PLA+/PLA Pro, etc. filaments are very easy to print in multimaterial with the 3MS. They also support the experimental No Tip Shaping feature.
"},{"location":"guides/materials/#silkmatte-pla","title":"Silk/Matte PLA","text":"Silk/Matte PLA filaments are slightly more difficult to print with or without the 3MS. They generally require tip shaping to work with the 3MS in multimaterial mode.
"},{"location":"guides/materials/#petg","title":"PETG","text":"PETG filaments are easy to print in multimaterial with the 3MS. They will likely require tip shaping. Suggested settings options are provided below. Ideal settings for your setup will likely include a combination of the options.
Tip Shaping Option 1Option 2 Setting Name Setting Value Nozzle Temperature 250\u00baC Loading speed at the start 19mm/s Loading speed 14mm/s Unloading speed at start 200mm/s Unloading speed 90mm/s Delay after unloading 4s # Cooling moves 3 Speed of first cooling move 1mm/s Speed of last cooling move 20mm/s Ramming settings Source: Prusa Forums Setting Name Setting Value Nozzle Temperature 250\u00baC Loading speed at the start 15mm/s Loading speed 14mm/s Unloading speed at start 120mm/s Unloading speed 20mm/s Delay after unloading 0s # Cooling moves 1 Speed of first cooling move 1mm/s Speed of last cooling move 15mm/s Ramming settings Source: Prusa Forums"},{"location":"guides/materials/#tpu","title":"TPU","text":"TPU filaments are very difficult to print with or without the 3MS. If your printer can reliably print TPU, you can likely use it with the 3MS in single mode. To use it in multimaterial mode and/or improve reliability, see the experimental Dual Drive 3MS Extruders for TPU feature.
"},{"location":"guides/tipshaping/","title":"Tip Shaping Guidelines","text":"Follow this guide to get faster and more reliable toolchanges with your 3MS.
"},{"location":"guides/tipshaping/#does-my-filament-need-tip-shaping","title":"Does My Filament Need Tip Shaping?","text":"If your filament is in this list, then it likely won't need tip shaping, and you can try out the experimental No Tip Shaping:
If you filament wasn't in that list, continue reading this page.
"},{"location":"guides/tipshaping/#blobby-tips","title":"Blobby Tips","text":"If your filament tip has a thicker tip after unloading, you can do two things:
If your filament tip has a stringy tip after unloading, you can do two things:
You may also be able to use the experimental No Tip Shaping.
"},{"location":"guides/tipshaping/#hook-of-death","title":"Hook of Death","text":"If you filament tip can't unload out of your extruder and forms a hook shape, you may need to replace the PTFE tube between your printer's extruder and hotend. You may also want to follow the recommendations for Blobby tips.
"},{"location":"setup/assembly/","title":"Assembly","text":"Follow this guide to assemble your 3MS.
"},{"location":"setup/assembly/#printed-parts","title":"Printed Parts","text":"An optional board enclosure for the SKR Mini E3 is available here.
Additionaly, an optional univeral mount for the MK8 extruder using M3 bolts is available here. Note that this requires 2-4 M3 bolts and a place to screw the bolts into.
Finally, you will need to print enough of these Y splitters for the filament.
"},{"location":"setup/assembly/#mk8-assembly","title":"MK8 Assembly","text":"Next, assemble the MK8 extruders onto the NEMA17 motors using the provided instructions that came with them. If you use the mount provided above, make sure it is in between the MK8 and NEMA17.
"},{"location":"setup/assembly/#wiring","title":"Wiring","text":"Follow one of the following guides based on your controller:
First, choose the number of filament units you want. Each filament unit lets you print with an additional filament. Two filament units are the minimum. You can add or remove filament units after building, but the BOM and configuration will vary based on how many filament units you want.
"},{"location":"setup/bom/#controller-boms","title":"Controller BOMs","text":"Choose the BOM for your chosen controller from the list below:
For each filament unit, purchase this BOM:
Name Quantity Price Link Notes NEMA17 Stepper Motor 1 $9.99 Amazon You can use a pancake stepper if you want, but it will have less torque MK8 Metal Extruder 1 $9.99 Amazon Capricorn PTFE Tubing 1 $11.49 Amazon You likely won't need this for every unit, as this is usually too long for only one unit"},{"location":"setup/firmware/","title":"Firmware","text":"Follow this guide to install Klipper firmware onto your 3MS MCU. This guide is a modified version of the Klipper Documentation.
Info
The following controller(s) can skip this guide:
Make sure your 3MS MCU is plugged into your Klipper Host. Run in your terminal:
cd ~/klipper\nmake menuconfig\n
In the menuconfig, configure it to your MCU. Instructions are included at the top of 3ms/controllers/xxx/steppers.cfg
for future reference. A copy of it is provided here:
# This file contains common pin mappings for the BIGTREETECH SKR mini\n# E3 v2.0. To use this config, the firmware should be compiled for the\n# STM32F103 with a \"28KiB bootloader\" and USB communication. Also,\n# select \"Enable extra low-level configuration options\" and configure\n# \"GPIO pins to set at micro-controller startup\" to \"!PA14\".\n
Run in your terminal:
make clean\nmake\n
The klipper.bin
file, located in ~/klipper/out/klipper.bin
needs to be copied to a MicroSD card and renamed to firmware.bin
(case-sensitive).
Next, unplug the 3MS board from the PSU and your Klipper Host and insert the SD Card. Next, plug in the PSU, THEN the Klipper Host to the 3MS board. The firmware is now flashed.
"},{"location":"setup/firmware/#get-mcu-id","title":"Get MCU ID","text":"In the terminal, run:
ls /dev/serial/by-id/\n
Example output:
usb-Klipper_stm32f103xe_33FFD1054746333809650557-if00\nusb-Prusa_Research__prusa3d.com__Original_Prusa_i3_MK3_xxx-if00\n
In this case, the first line is the 3MS, and the second line is the 3D printer. Now that you know the id of the 3MS MCU, copy it and save it to a file:
cd ~ && echo \"<your-mcu-id>\" >> mcu.txt \n
"},{"location":"setup/firstprint/","title":"First Print","text":"Follow this guide to begin your first multimaterial print. There are two main ways to prepare a model for multimaterial painting.
"},{"location":"setup/firstprint/#method-1-multimaterial-painting","title":"Method 1: Multimaterial Painting","text":"This method allows you to turn any model, even if it's not designed for multimaterial printing, into a multimaterial print. First, import your model into the slicer. In this case, a 3DBenchy will be used.
Cmd+I OR Ctrl+I
Next, select the model and click multimaterial painting at the top.
N
Once you're in this menu, you can choose any tool, tool size, and filament. Now, just drag over the model to apply the selected tool to the model. In this case, the hull of the 3DBenchy will be set to filament two using the fill tool.
Finally, hit slice and your model is ready to print!
Cmd+R OR Ctrl+R
"},{"location":"setup/firstprint/#method-2-multimaterial-model","title":"Method 2: Multimaterial Model","text":"This method allows you to turn parts of a model to different materials. For this tutorial, this T-rex by Cipis will be used. First, import your model into the slicer. If prompted while opening to treat the model as multiple parts, select \"Yes\".
Cmd+I OR Ctrl+I
Next, go to object settings and change the different parts of the model to different colors.
Finally, hit slice and your model is ready to print!
Cmd+R OR Ctrl+R
"},{"location":"setup/firstprint/#wipe-tower-position","title":"Wipe Tower Position","text":"In the examples, you may have noticed that the wipe tower is far from the model. The travel time between the model and wipe tower adds up, and moving the tower closer can help reduce print time.
In the \"Prepare\" view, click and drag the wipe tower as close to the object as you can without colliding.
If you have a camera on your 3D printer, you may want to put the wipe tower \"behind\" the part from your camera's perspective.
"},{"location":"setup/slicer/","title":"Slicer Setup","text":"Follow this guide to setup the 3MS with your slicer. OrcaSlicer will be used in this guide, but these same settings (with different names) can be applied to PrusaSlicer and SuperSlicer.
"},{"location":"setup/slicer/#number-of-filament-units","title":"Number of Filament Units","text":"Set the number of filaments in your slicer to the number of filament units in your 3MS.
In OrcaSlicer, press the filament plus button until there are as many filaments displayed as you have filament units.
"},{"location":"setup/slicer/#klipper-startend-g-code","title":"Klipper Start/End G-Code","text":"In your Klipper PRINT_START
macro, add the following right before your purge line:
MMMS_START INITIAL_TOOL={params.INITIAL_EXTRUDER}\n
In your PRINT_END
macro, add the following before the cooldown command is called:
MMMS_END\n
"},{"location":"setup/slicer/#slicer-start-g-code","title":"Slicer Start G-Code","text":"In your slicer's Start G-Code, add the following parameter to your PRINT_START
:
INITIAL_EXTRUDER=[initial_extruder]\n
Info
This is the last required part of slicer setup.
"},{"location":"setup/slicer/#optional-klipper_estimator","title":"Optional: klipper_estimator","text":"If you use klipper_estimator and want the toolchange represented in the time estimate, time your toolchange, then change your Change filament G-Code:
"},{"location":"setup/controllers/","title":"Controllers","text":"Follow this guide to determine which controller to use in your 3MS.
"},{"location":"setup/controllers/#options","title":"Options","text":"The 3MS works on multiple different controllers.
Info
If your printer's mainboard has spare stepper ports, you can use them to control 3MS steppers. You can open an issue on Github (there's a template) to get a configuration made for your specific setup. Any controllers listed with \"(main MCU)\" use those spare stepper plugs.
Choose one of the following supported controllers (a checkmark indicates it is fully tested):
SKR Mini E3 V2.0 (4 colors)
Fully Tested
BTT Octopus (main MCU) (4 colors)
Untested
Einsy RAMBo (main MCU) with SKR Mini E3 V2.0 (3ms MCU)
Expert modification, in development
Warning
This configuration may not work with the BTT Octopus Pro.
Max filament units: 4
MCU Name: main
This configuration is a main MCU
configuration, meaning that your printer should already be running off a BTT Octopus and you don't need to purchase one.
Per filament unit:
1x TMC2209 ($7 each)
"},{"location":"setup/controllers/bttoctopusmain/#wiring","title":"Wiring","text":"Route the wires from the NEMA17's to the controller board. Follow this table to determine which port to plug the motors into:
Filament Unit # Motor Port 0 MOTOR7 1 MOTOR6 2 MOTOR5 3 MOTOR4"},{"location":"setup/controllers/einsyrambo-skrminie3v2/","title":"Einsy RAMBo (main MCU) with SKR Mini E3 V2","text":"Danger
This guide is an expert guide only
Warning
This guide is under construction
Info
This modification is designed for the Prusa MK3/S/S+, and depends on this Klipper configuration.
"},{"location":"setup/controllers/einsyrambo-skrminie3v2/#why","title":"Why?","text":"When printing fast, the TMC2130's on the Einsy RAMBo can get quite loud. The TMC2209's on the SKR Mini are much quieter and support denser microstepping.
"},{"location":"setup/controllers/einsyrambo-skrminie3v2/#bom","title":"BOM","text":"Info
This section is under construction.
Name Price Quantity Link Notes PSU -> Einsy Cable $7.99 1 PartsBuilt3D Stepperonline NEMA17 $9.99 each Amazon 2 Replaces current XY motors"},{"location":"setup/controllers/einsyrambo-skrminie3v2/#wiring","title":"Wiring","text":"First, unplug the 3MS steppers from the SKR Mini, and the XY steppers from the Einsy RAMBo. The motors will need to be switched due to different connector types between boards.
This table outlines the major wiring of this modification.
Einsy RAMBo SKR Mini E3 V2 Motor PSU+ POWER+ PSU- POWER- XM 3ms0 YM 3ms1 XM X YM Y"},{"location":"setup/controllers/einsyrambo-skrminie3v2/#configuration","title":"Configuration","text":"In your printer.cfg
, comment out these lines:
#[include klipper-prusa-mk3s/mk3s/steppers.cfg]\n#[include klipper-prusa-mk3s/mk3s/tmc2130.cfg]\n
Next, copy the contents of 3ms/controllers/einsy_rambo_with_skr_mini/xy-motors.cfg
and ze-motors.cfg
to klipper-prusa-mk3s/skr/xy.cfg
, and klipper-prusa-mk3s/mk3s/ze.cfg
, respectively.
Add the following new lines:
printer.cfg[include klipper-prusa-mk3s/skr/xy.cfg]\n[include klipper-prusa-mk3s/mk3s/ze.cfg]\n
Restart Klipper.
"},{"location":"setup/controllers/skrminie3v2/","title":"BTT SKR Mini E3 V2","text":"Max filament units: 4
MCU Name: 3ms
Route the wires from the NEMA17's to the controller board. Follow this table to determine which port to plug the motors into:
Filament Unit # Motor Port 0 XM 1 YM 2 ZAM or ZBM 3 E0MNow, grab your 12V PSU and two M-M duponts, one red and one black (M-M means that there is metal coming out of both ends of the cable). Plug the PSU into the wall, but don't plug the screw terminals into the PSU (the screw terminals have green)
Plug the black wire into the negative terminal of the screw terminals
Danger
These dupont cables are too thin to run much more than the stepper motors. If you run a heater or other power-intensive device off of the SKR board, the duponts and/or PSU can melt/catch fire. To reduce the risk of this, you can double up on the duponts or get thicker wires.
Following this image, choose either the DCIN or POWER input
Verify all connections
Warning
If the wires are plugged into the wrong place, or swapped polarities, your SKR, Stepper motors, and/or PSU can be badly damaged.
Plug the PSU screw terminals into the PSU wire
If the SKR lights up, you wired it correctly!
Finally, plug the SKR into your Klipper host with the blue cable that came with it.
"},{"location":"troubleshooting/","title":"Troubleshooting","text":"If you are having trouble getting your 3MS to work properly, check if the problem you're facing is in this list:
If it is not in this list, please open an issue on Github.
"},{"location":"troubleshooting/failedloadunload/","title":"Failed Load/Unload","text":"If your printer is paused and displaying Please load
or Please unload
, follow this troubleshooting guide to diagnose the problem and fix it.
First, see False Alarm to ensure your filament sensor is properly configured and is being properly read by the 3MS macros.
"},{"location":"troubleshooting/failedloadunload/#failed-unload","title":"Failed Unload","text":"When your printer displays a Please unload
message, pay attention to the Tx
number it shows. For example, if it displays the message Please unload T0
, it failed to unload the filament at T0. Follow these steps to recover the toolchange:
Manually pull the filament out of the printer's extruder.
If it is stuck, try one of the following:
Also, see Skipping
Next, manually pull the filament all the way to where the filament is usually parked between toolchanges (before the Y-splitter).
T0 -> T1
indicating which filament is next (in this case T1). It shoudl be loaded to the entry of the printer's extruder gears.Next, diagnose the problem based on these possible scenarios:
Filament never unloaded out of printer's extruder
This is a sign of poor tip shaping. The quick fix for this is to increase print temperatures. Also, see Skipping.
Filament unloaded out of printer's extruder, but stopped before filament sensor
This is a sign of your filament sensor causing excess friction on the filament, or your 3MS extruder tension too loose. For the 3MS tension too lose, simply rotate the tensioning screw on the 3MS extruder clockwise a couple rotations.
When your printer displays a Please load
message, pay attention to the Tx
number it shows. For example, if it displays the message Please load T1
, it failed to load the filament at T1. Follow these steps to recover the toolchange:
Manually push the filament all the way to the inlet of your printer's extruder.
If your filament isn't able to load, the previous tool may not have completely unloaded. See Failed Unload for more information.
Resume your print.
Next, diagnose the problem based on these possible scenarios:
Previous filament didn't unload enough
Increase your unload_distance
in MMMS_SETTINGS
(3ms/settings.py
). You can test different values by using SET_MMMS_SETTINGS
at runtime. Example:
SET_MMMS_SETTINGS UNLOAD_DISTANCE=210\n
Filament didn't load enough
Increase your load_distance
in MMMS_SETTINGS
(3ms/settings.py
). You can test different values by using SET_MMMS_SETTINGS
at runtime. Example:
SET_MMMS_SETTINGS LOAD_DISTANCE=220\n
If during toolchanges, a failed toolchange false alarm occurs (print pauses even though toolchange was successful), follow this troubleshooting guide to fix it.
"},{"location":"troubleshooting/falsealarm/#fsensor_delay","title":"fsensor_delay","text":"The main culprit for this issue is likely your fsensor_delay
in 3ms/settings.cfg
is too short. Short values will cause more false alarms, and long values will cause less. Generally, the default 2000ms is good for most setups, but if you are having false alarms, you will have to increase it. Example:
fsensor_delay: 2000\n
3ms/settings.cfgfsensor_delay: 3000\n
"},{"location":"troubleshooting/skipping/","title":"Motor Skipping","text":"If any of your extruder motors are skipping while using the 3MS, follow this troubleshooting guide to diagnose the issue and fix it.
"},{"location":"troubleshooting/skipping/#printers-extruder","title":"Printer's Extruder","text":"First, check if your printer's extruder is properly extruding. To check this, detach the PTFE tube from the inlet of your extruder, and manually load filament, using Klipper's controls for loading filament. If your printer's extruder is having trouble extruding plastic, you may have one of the following:
If the printer's extruder is working properly, and you're still having skipping, check the filament tips. If the tip has a long string on it, or has a thick blob at the end, your filament tips may be to blame. If you have stringy tips, decrease your nozzle temperature while printing. If you have blobby tips, increase your nozzle temperature while printing. Alternatively, you can purchase PTFE tubes with a larger ID to allow for less precise tips.
"},{"location":"troubleshooting/underextrusion/","title":"Underextrusion","text":"If your prints start to have gaps in the walls, you are likely experiencing underextrusion. Follow this troubleshooting guide to diagnose the issue and fix it.
"},{"location":"troubleshooting/underextrusion/#extruderhotend-issues","title":"Extruder/Hotend Issues","text":"First, try the solutions in this article in case there are any issues with your printer's extruder/hotend.
"},{"location":"troubleshooting/underextrusion/#3ms-rotation_distance","title":"3MS rotation_distance","text":"If your extruder and hotend are working fine, the next likely cause of underextrusion is your 3MS rotation_distance is too high. There are two likely causes and solutions, based on where in the print the underextrusion occurs:
Whole print - 3MS motors working backwards from the extruder or not working at all
Follow the wiring section of Assembly.
Follow the first two steps of Stepper Setup.
Partially through print - 3MS motors not turning enough
Follow the last step of Stepper Setup.
The 3MS is short for MMMS, which stands for Modular Multi Material System
"},{"location":"#inspiration","title":"Inspiration","text":"Info
This documentation is still under construction. If you have any questions not answered by the documentation, please open an issue on Github.
"},{"location":"#sample-prints","title":"Sample Prints","text":"Sample Prints SheepCalendarVoron CubeT-RexLizardModel: Sheep by Cipis
Model: Monolith Cryptic Calendar by Sevro
Model: Voron Cube (bundled with OrcaSlicer), painted by me in OrcaSlicer
Printed at 50% scale
Model: T-rex by Cipis
Model: Striped lizard with pupils by EngMike
"},{"location":"#photos","title":"Photos","text":"Photos Full Printer3MSY Splitter"},{"location":"#why-3ms","title":"Why 3MS?","text":"Why use the 3MS when there are many other multi-material systems?
Here are a few reasons:
With that said, there are a few reasons why you might not want to/be able to use the 3MS:
Here is a example step by step of what goes on during a single 3MS toolchange from T0 to T1:
For more detail about the Tx command, see Flowchart.
Think of the 3MS as an extension to your current extruder's length. It allows for switching filaments, but while printing allows for all the benefits of your printer's extruder.
The 3MS's motors work together with your printer's extruder. This way, there won't be any additional resistance from pulling the filament through a disabled extruder. Also, unloads and loads to/from the printer's extruder are fully synchronized with the 3MS. This allows for even faster toolchanges!
"},{"location":"#get-started","title":"Get Started","text":"To get started with the 3MS, see the Master Instructions.
"},{"location":"#what-about-the-3dchameleon","title":"What about the 3DChameleon?","text":"I recently created a klipper plugin for the 3DChameleon after purchasing a unit. I'm sure my Chameleon could have worked if I had tuned it further, but after several months with only partial success, I gave up. I am still open to pull requests for 3dchameleon-klipper and will do my best to respond to issues there, but I won't be able to test it myself anymore.
"},{"location":"flowchart/","title":"Toolchange Flowchart","text":"This flowchart assumes a fsensor_delay
of 2000ms.
graph TD\n A[T1] --> B[Toolchange T=1];\n B[Toolchange T=1] --> C{Same tool?};\n C --> |No| D{Previous filament loaded?};\n C --> |Yes| E{Do nothing};\n D --> |Yes| F[MMMS_UNLOAD];\n F --> G[DESYNC_TOOL TOOL=0];\n G --> H[G4 P2000];\n H --> I[CHECK_FSENSOR V=0];\n D --> |No| J[SYNC_TOOL TOOL=1];\n I --> J;\n J --> K[MMMS_LOAD];\n K --> L[G4 P2000];\n L --> M[CHECK_FSENSOR V=1];\n M --> N[Save new previous extruder]
"},{"location":"instructions/","title":"Instructions","text":""},{"location":"instructions/#master-instructions","title":"Master Instructions","text":"Due to the modularity of the 3MS, there are many ways to set it up. This guide attempts to encompass all supported ways of setting up the 3MS.
"},{"location":"instructions/#basic-steps","title":"Basic Steps","text":"The basic steps this guide will follow are:
Before starting the instructions, a basic understanding of how the 3MS works is recommended. There are two types of components in the 3MS:
Controller
This controls the stepper motors
Filament Units
This moves the filament
The number of filaments you will be able to print with is equal to the number of filament units you have. For example, two filament units will let you print with two colors. It is important to note that one filament unit will NOT let you print in multimaterial.
"},{"location":"instructions/#05-choosing-a-controller","title":"0.5. Choosing a Controller","text":"Choose one of the controllers from Controllers before continuing.
"},{"location":"instructions/#1-getting-a-bom","title":"1. Getting a BOM","text":"Go to BOM to view the bill of materials for the number of filament units you want. Example BOM for two filament units and a SKR Mini E3 V2:
Name Price Quantity Link Notes SKR Mini E3 V2 $34.99 1 Amazon Duponts $9.99 1 Amazon These wires are only sufficient to run steppers, not heaters 12V PSU $7.39 1 Amazon This PSU is only sufficient to run steppers, not heaters NEMA17 Stepper Motor $9.99 2 Amazon You can use a pancake stepper if you want, but it will have less torque MK8 Metal Extruder $9.99 2 Amazon Capricorn PTFE Tubing $11.49 1 Amazon You likely won't need this for every unit, as this is usually too long for only one unit"},{"location":"instructions/#2-assembling-your-3ms","title":"2. Assembling your 3MS","text":"Follow Assembly to assemble your 3MS.
"},{"location":"instructions/#3-configuring-your-3ms","title":"3. Configuring your 3MS","text":"Follow Stepper Setup to setup and calibrate each of your filament units.
"},{"location":"instructions/#5-slicer-setup","title":"5. Slicer setup","text":"Follow Slicer Setup to setup your slicer for the 3MS.
"},{"location":"instructions/#6-first-print","title":"6. First print","text":"Follow First Print to create your first multimaterial print with the 3MS.
"},{"location":"instructions/#7-troubleshooting","title":"7. Troubleshooting","text":"Check Troubleshooting to find guides to troubleshoot your 3MS.
"},{"location":"instructions/#8-updating","title":"8. Updating","text":"To update the 3MS configuration, go to the Update Manager in Mainsail/Fluidd and refresh the updates.
Next, find the \"mmms\" entry in the list. If there is an \"Update\" button next to it, click it and begin updating.
After updating, in your terminal, run:
sh ~/3MS/install.sh\n
This will install the new 3MS configuration. Next, restart Klipper:
Info
It is important to restart the Klipper service, and not just run the RESTART
command.
Either run this command in your terminal or restart from Mainsail/Fluidd:
TerminalMainsail/Fluiddsudo service klipper restart\n
"},{"location":"configuration/","title":"Configuration","text":"This guide covers the configuration structure and options of the 3MS.
"},{"location":"configuration/#maincfg","title":"main.cfg","text":"main.cfg
is located in 3ms/main.cfg
. It contains the following:
[save_variables]
configuration section. This section sets the location where variables about the previous tool will be saved. [include]
sections. These reference other configuration files covered in this guide. The included configurations are:settings.cfg
macros.cfg
controllers/xxx/steppers.cfg
settings.cfg
contains the settings the 3MS uses during toolchanges in macros.cfg
. Further information is here.
macros.cfg
contains the macros the 3MS uses during toolchanges. Further information is here.
steppers.cfg
contains the MCU configuration for the 3MS. It contains the following:
[extruder_stepper 3msx]
This contains the pin mappings for the motor assigned to 3MS tool x.[tmc2209 extruder_stepper 3msx]
This contains the pin mappings for the TMC2209 controlling the motor assigned to 3MS tool x.[mcu 3ms]
This contains the serial path to the 3MS MCU.This contains the KlipperScreen 3MS menu configuration. For more information, see KlipperScreen.
"},{"location":"configuration/fsensor/","title":"Filament Sensor","text":"Follow this guide to configure your filament sensor with the 3MS.
"},{"location":"configuration/fsensor/#location-of-sensor","title":"Location of Sensor","text":"The filament sensor should be right before the extruder, and after the Y splitter. Other locations, such as between the hotend and extruder, have not been tested.
Warning
The 3MS has only been tested with a filament_switch_sensor
, and not with a filament_motion_sensor
To configure your filament sensor with the 3MS, open 3ms/settings.cfg
and change the following (assuming your filament sensor is named \"runout_sensor\"):
fsensor_name: \"fsensor\"\n
3ms/settings.cfgfsensor_name: \"runout_sensor\"\n
"},{"location":"configuration/install/","title":"Installation","text":"Follow this guide to install the 3MS configuration and macros.
"},{"location":"configuration/install/#clone-repository","title":"Clone Repository","text":"First, clone the 3MS repository:
cd ~\ngit clone https://github.com/3DCoded/3MS\ncd 3MS\n
"},{"location":"configuration/install/#install-script","title":"Install Script","text":"Run the install script:
sh install.sh\n
"},{"location":"configuration/install/#printercfg","title":"printer.cfg","text":"In your printer.cfg
, add:
[include 3ms/main.cfg]\n
"},{"location":"configuration/install/#moonraker-update-manager","title":"Moonraker Update Manager","text":"To enable updates for the 3MS, add the following to your moonraker.conf
:
# 3MS Update Manager\n[update_manager mmms]\ntype: git_repo\npath: ~/3MS\norigin: https://github.com/3DCoded/3MS.git\nprimary_branch: main\nis_system_service: False\ninstall_script: install.sh\n
Warning
When updating via Moonraker, the following files will be overwritten:
macros.cfg
KlipperScreen.conf
If you have any changes in these files, they will be lost when updating.
"},{"location":"configuration/install/#controller","title":"Controller","text":"In 3ms/main.cfg
, edit the [include ./controllers/xxx/steppers.cfg]
line, replacing xxx
with the config name of your controller:
btt_skr_mini_e3_v2
BTT Octopus (main MCU) btt_octopus_main
"},{"location":"configuration/install/#configure-mcu-id","title":"Configure MCU ID","text":"Finally, to configure the MCU ID you saved from Firmware, run in your terminal:
cd ~ && cat mcu.txt\n
Copy the path that is output. Now, in your 3ms/controllers/xxx/steppers.cfg
, in the [mcu 3ms]
section (towards the bottom), set the MCU ID.
Example:
BeforeAfter 3ms/controllers/xxx/steppers.cfg[mcu 3ms]\nserial: /dev/serial/by-id/<your-mcu-id>\n
3ms/controllers/xxx/steppers.cfg[mcu 3ms]\nserial: /dev/serial/by-id/usb-Klipper_stm32f103xe_33FFD1054746333809650557-if00\n
"},{"location":"configuration/klipperscreen/","title":"KlipperScreen","text":"The 3MS supports a KlipperScreen menu. To install it, add the following to your KlipperScreen.conf
(located in the same folder as your printer.cfg
):
[include 3ms/KlipperScreen.conf]\n
"},{"location":"configuration/macros/","title":"Macros","text":""},{"location":"configuration/macros/#3ms-settings","title":"3MS Settings","text":""},{"location":"configuration/macros/#mmms_settings","title":"MMMS_SETTINGS","text":"Stores the settings for the 3MS.
Default Settings
variable_load_distance: 210\nvariable_unload_distance: 200\nvariable_load_speed: 4500\nvairable_unload_speed: 4500\nvariable_fsensor_delay: 2000\nvariable_num_tools: 2\nvariable_step_size: 99\n
Example Usage
MMMS_SETTINGS\n
"},{"location":"configuration/macros/#set_3ms_settings","title":"SET_3MS_SETTINGS","text":"Sets the configuration for the 3MS. Allows temporary customization of load and unload distances and speeds
Example Usage
SET_3MS_SETTINGS LOAD_DISTANCE=210 UNLOAD_DISTANCE=200 LOAD_SPEED=3500 UNLOAD_SPEED=5500 FSENSOR_DELAY=2500\n
"},{"location":"configuration/macros/#get_3ms_settings","title":"GET_3MS_SETTINGS","text":"Dispalys the configuration for the 3MS.
Example Usage
GET_3MS_SETTINGS\n
"},{"location":"configuration/macros/#filament-handling","title":"Filament Handling","text":""},{"location":"configuration/macros/#mmms_unload","title":"MMMS_UNLOAD","text":"Unloads filament by a specified distance and speed. If no distance/speed is specified, it uses the default unload distance/speed from MMMS_SETTINGS
.
Example Usage
MMMS_UNLOAD DISTANCE=200 SPEED=5500\n
"},{"location":"configuration/macros/#mmms_load","title":"MMMS_LOAD","text":"Loads filament by a specified distance and speed. If no distance/speed is specified, it uses the default load distance/speed from MMMS_SETTINGS
.
Example Usage
MMMS_LOAD DISTANCE=210 SPEED=3500\n
"},{"location":"configuration/macros/#check_fsensor","title":"CHECK_FSENSOR","text":"Checks the filament sensor state. Pauses the print if the sensor state does not match the expected value.
Example Usage
CHECK_FSENSOR V=1\n
"},{"location":"configuration/macros/#tool-sync","title":"Tool Sync","text":""},{"location":"configuration/macros/#set_tool_sync","title":"SET_TOOL_SYNC","text":"Sets the sync state of a tool. Syncs or desyncs the specified tool to/from the extruder.
Example Usage
SET_TOOL_SYNC TOOL=0 SYNC=1\n
"},{"location":"configuration/macros/#sync_tool","title":"SYNC_TOOL","text":"Syncs the specified tool and desyncs all other tools to/from the extruder.
Example Usage
SYNC_TOOL TOOL=0\n
"},{"location":"configuration/macros/#desync_tool","title":"DESYNC_TOOL","text":"Desyncs the specified tool from the extruder.
Example Usage
DESYNC_TOOL TOOL=0\n
"},{"location":"configuration/macros/#clear_tool","title":"CLEAR_TOOL","text":"Clears the current tool selection by setting it to -1.
Example Usage
CLEAR_TOOL\n
"},{"location":"configuration/macros/#desync_all_tools","title":"DESYNC_ALL_TOOLS","text":"Desyncs all configured tools.
Example Usage
DESYNC_ALL_TOOLS\n
"},{"location":"configuration/macros/#print-start-and-end","title":"Print Start and End","text":""},{"location":"configuration/macros/#mmms_start","title":"MMMS_START","text":"Starts the print by checking the filament sensor. If filament is detected, the print is paused and the user is notified. Regardless of the filament sensor state, the initial tool is loaded.
Example Usage
MMMS_START INITIAL_TOOL=0\n
"},{"location":"configuration/macros/#mmms_end","title":"MMMS_END","text":"Ends the print by unloading the current tool. If filament is detected after unloading, the user is notified.
Example Usage
MMMS_END\n
"},{"location":"configuration/macros/#tool-change","title":"Tool Change","text":""},{"location":"configuration/macros/#t0","title":"T0","text":"Changes to tool 0.
Example Usage
T0\n
"},{"location":"configuration/macros/#t1","title":"T1","text":"Changes to tool 1.
Example Usage
T1\n
"},{"location":"configuration/macros/#tx","title":"Tx","text":"Changes to a specified tool. Replace x
with the tool number.
Example Usage
T2\nT3\n
"},{"location":"configuration/steppers/","title":"Stepper Motors","text":"Follow this guide to calibrate each of the stepper motors. Each of these steps should be repeated for each of your filament units, replacing TOOL=0
with TOOL=1
, and so on. Also replacing 3ms0
with 3ms1
, and so on.
Info
If your stepper motor shakes erratically while running any of these commands, your wiring may be incorrect.
"},{"location":"configuration/steppers/#is-the-motor-spinning","title":"Is the motor spinning?","text":"Run this command:
SYNC_TOOL TOOL=0\nG1 E50 F4500\n
If the motor spins, skip to the next step. If not, check your wiring first. If your wiring is fine, go to 3ms/steppers.cfg
. Locate the section named [extruder_stepper 3ms0]
. In front of the enable_pin
, add, an !
. If there already is one, remove it. Example:
enable_pin: !3ms: PD7\n
3ms/steppers.cfgenable_pin: 3ms: PD7\n
"},{"location":"configuration/steppers/#is-the-motor-spinning-backwards","title":"Is the motor spinning backwards?","text":"Preload each of the filament units with a piece of scrap filament by pushing the lever to release the tension, inserting filament, then releasing the lever to restore tension. Next, run this command:
SYNC_TOOL TOOL=0\nG1 E50 F4500\n
Note which way the filament moves. If it moves forwards, away from the PTFE coupler, skip to the last step. If it moves backwards, you have two choices:
To invert the pin in the configuration, locate the configuration section for the filament unit spinning backwards, and invert the dir_pin
. See the previous section for how to invert the pin.
This section is a modified version of the Klipper Docs
Preload each of the filament units with a piece of scrap filament at least 200mm long by pushing the lever to release the tension, inserting filament, then releasing the lever to restore tension.
Use a ruler and a marker to place a mark 70mm from the inlet of the filament unit. Use calipers to measure the actual distance. Write it down, as it will be referred to as <initial_mark_distance>
.
Next, run this command:
SYNC_TOOL TOOL=0\nG1 E50 F1500\n
Use calipers to measure the new distance between the inlet of the filament unit and the mark. Write it down, as it will be referred to as <next_mark_distance>
.
Calculate <actual_extrude_distance> = <initial_mark_distance> - <next_mark_distance>
In the steppers.cfg
file (located in 3ms/controllers/xxx/steppers.cfg
), locate the configuration section for the current extruder. Example:
[extruder_stepper 3ms0]\nextruder: extruder\nstep_pin: 3ms: PB13\ndir_pin: !3ms: PB12\nenable_pin: !3ms: PB14\nmicrosteps: 16\nrotation_distance: 32.8450\n
Note the rotation_distance
(last line). In this case, it is 32.8450
.
Calculate the new rotation distance: new_rotation_distance = <rotation_distance> * <actual_extrude_distance> / 50
.
Round this result to three or four decimal places. Decrease it by 0.005 (this is so that if this result is slightly off, the 3MS filament unit will skip, instead of the printer's extruder stripping the filament during a print).
Set the new rotation_distance
in your config. Save it and restart Klipper.
Info
If you use the same stepper motor brand and model for each of your filament units, you likely only have to do this step for one stepper, then copy over the rotation_distance to all the others.
"},{"location":"experimental/dualdrivetpu/","title":"Dual Drive 3MS Extruders for TPU","text":"The 3MS's existing single-drive extruders are prone to tangling with TPU during toolchanges. Dual drive 3MS extruders may fix this issue and allow for multimaterial printing with TPU.
Info
This page, and the features mentioned on it, are in develpment
"},{"location":"experimental/notip/","title":"Toolchanges Without Tip Shaping or Filament Cutter!","text":"Because the 3MS is synchronized to the printer's extruder, it can potentially toolchange without any tip shaping or filament cutter.
Info
This page, and the features mentioned on it, are in develpment
Development StatusSo far, the following work without tip shaping:
Info
This section is under construction.
"},{"location":"experimental/notip/#should-tip-shaping-be-used","title":"Should Tip Shaping be Used?","text":"See Materials for information on whether or not tip shaping should be used for your filaments.
"},{"location":"experimental/notip/#slicer-setup","title":"Slicer Setup","text":"Setup your slicer for no tip shaping as follows.
"},{"location":"experimental/notip/#disable-filament-ramming","title":"Disable Filament Ramming","text":"Disable filament ramming in Filament Settings
-> Multimaterial
-> Toolchange parameters with single extruder MM printers
:
"},{"location":"experimental/notip/#unloadload-speed","title":"Unload/Load Speed","text":"
Next, change the Unloading speed at start
and Unloading speed
to 300 (faster is better here). Next, change the Loading speed at start
and Loading speed
to 300 and 100, respectively.
The main idea behind toolchanges without tip shaping relies on the filament being unloaded too fast to form a blob. Setting the Unloading speed
settings allows this. Next, loading the filament back can be generally optomized by increasing the Loading speed
settings.
If your filament has very long strings on the end of them after unloading without tip shaping (longer than 2cm), decrease your filament temperature.
If your filament tip has a nearly flat tip, increase your filament temperature.
The ideal filament tip has a pointy end and a small string (less than 5mm). When in doubt, it is recommended to aim for a slightly stringy tip over a flat tip.
"},{"location":"experimental/nowipe/","title":"Filament Purging without Wipe Tower","text":"For printers with a dedicated purge bucket or similar system, wipe towers may not be necessary.
Info
This page, and the features mentioned on it, are in develpment
Development StatusSo far, the following have been tested:
SET_PURGE_SETTINGS
functionalityGET_PURGE_SETTINGS
functionalityPURGE
routinestart_macro
end_macro
The macros mentioned on this page are available in the nowipetower
branch.
A new PURGE_SETTINGS
macro contains the following settings:
enable
0 is disabled, and 1 is enabledpurge_x
X-cooridnate of purge bucketpurge_y
Y-corodinate of purge bucketmove_speed
Speed, in mm/min to move to/from purge bucketextrude_speed
Speed, in mm/min (multiply by 0.04 for mm^3/s) to purge filamentstart_macro
Macro to run before purgingend_macro
Macro to run after purgingThe new PURGE
macro runs the purge routine as follows:
enable
== 1, continuestart_macro
purge_x
and purge_y
at move_speed
purge_amount
at extrude_speed
end_macro
Follow this guide to determine if your filament will work with the 3MS.
"},{"location":"guides/materials/#materials-table","title":"Materials Table","text":"This table contains which filaments work in single mode and/or multimaterial mode with the 3MS.
Filament Single Mode Multimaterial Mode Notes PLA Yes Yes PLA+ Yes Yes Silk PLA Yes No Matte PLA Yes No PETG Yes Yes TPU Untested No"},{"location":"guides/materials/#pla","title":"PLA(+)","text":"PLA/PLA+/PLA Pro, etc. filaments are very easy to print in multimaterial with the 3MS. They also support the experimental No Tip Shaping feature.
"},{"location":"guides/materials/#silkmatte-pla","title":"Silk/Matte PLA","text":"Silk/Matte PLA filaments are slightly more difficult to print with or without the 3MS. They generally require tip shaping to work with the 3MS in multimaterial mode.
"},{"location":"guides/materials/#petg","title":"PETG","text":"PETG filaments are easy to print in multimaterial with the 3MS. They will likely require tip shaping. Suggested settings options are provided below. Ideal settings for your setup will likely include a combination of the options.
Tip Shaping Option 1Option 2 Setting Name Setting Value Nozzle Temperature 250\u00baC Loading speed at the start 19mm/s Loading speed 14mm/s Unloading speed at start 200mm/s Unloading speed 90mm/s Delay after unloading 4s # Cooling moves 3 Speed of first cooling move 1mm/s Speed of last cooling move 20mm/s Ramming settings Source: Prusa Forums Setting Name Setting Value Nozzle Temperature 250\u00baC Loading speed at the start 15mm/s Loading speed 14mm/s Unloading speed at start 120mm/s Unloading speed 20mm/s Delay after unloading 0s # Cooling moves 1 Speed of first cooling move 1mm/s Speed of last cooling move 15mm/s Ramming settings Source: Prusa Forums"},{"location":"guides/materials/#tpu","title":"TPU","text":"TPU filaments are very difficult to print with or without the 3MS. If your printer can reliably print TPU, you can likely use it with the 3MS in single mode. To use it in multimaterial mode and/or improve reliability, see the experimental Dual Drive 3MS Extruders for TPU feature.
"},{"location":"guides/tipshaping/","title":"Tip Shaping Guidelines","text":"Follow this guide to get faster and more reliable toolchanges with your 3MS.
"},{"location":"guides/tipshaping/#does-my-filament-need-tip-shaping","title":"Does My Filament Need Tip Shaping?","text":"If your filament is in this list, then it likely won't need tip shaping, and you can try out the experimental No Tip Shaping:
If you filament wasn't in that list, continue reading this page.
"},{"location":"guides/tipshaping/#blobby-tips","title":"Blobby Tips","text":"If your filament tip has a thicker tip after unloading, you can do two things:
If your filament tip has a stringy tip after unloading, you can do two things:
You may also be able to use the experimental No Tip Shaping.
"},{"location":"guides/tipshaping/#hook-of-death","title":"Hook of Death","text":"If you filament tip can't unload out of your extruder and forms a hook shape, you may need to replace the PTFE tube between your printer's extruder and hotend. You may also want to follow the recommendations for Blobby tips.
"},{"location":"setup/assembly/","title":"Assembly","text":"Follow this guide to assemble your 3MS.
"},{"location":"setup/assembly/#printed-parts","title":"Printed Parts","text":"An optional board enclosure for the SKR Mini E3 is available here.
Additionaly, an optional univeral mount for the MK8 extruder using M3 bolts is available here. Note that this requires 2-4 M3 bolts and a place to screw the bolts into.
Finally, you will need to print enough of these Y splitters for the filament.
"},{"location":"setup/assembly/#mk8-assembly","title":"MK8 Assembly","text":"Next, assemble the MK8 extruders onto the NEMA17 motors using the provided instructions that came with them. If you use the mount provided above, make sure it is in between the MK8 and NEMA17.
"},{"location":"setup/assembly/#wiring","title":"Wiring","text":"Follow one of the following guides based on your controller:
First, choose the number of filament units you want. Each filament unit lets you print with an additional filament. Two filament units are the minimum. You can add or remove filament units after building, but the BOM and configuration will vary based on how many filament units you want.
"},{"location":"setup/bom/#controller-boms","title":"Controller BOMs","text":"Choose the BOM for your chosen controller from the list below:
For each filament unit, purchase this BOM:
Name Quantity Price Link Notes NEMA17 Stepper Motor 1 $9.99 Amazon You can use a pancake stepper if you want, but it will have less torque MK8 Metal Extruder 1 $9.99 Amazon Capricorn PTFE Tubing 1 $11.49 Amazon You likely won't need this for every unit, as this is usually too long for only one unit"},{"location":"setup/firmware/","title":"Firmware","text":"Follow this guide to install Klipper firmware onto your 3MS MCU. This guide is a modified version of the Klipper Documentation.
Info
The following controller(s) can skip this guide:
Make sure your 3MS MCU is plugged into your Klipper Host. Run in your terminal:
cd ~/klipper\nmake menuconfig\n
In the menuconfig, configure it to your MCU. Instructions are included at the top of 3ms/controllers/xxx/steppers.cfg
for future reference. A copy of it is provided here:
# This file contains common pin mappings for the BIGTREETECH SKR mini\n# E3 v2.0. To use this config, the firmware should be compiled for the\n# STM32F103 with a \"28KiB bootloader\" and USB communication. Also,\n# select \"Enable extra low-level configuration options\" and configure\n# \"GPIO pins to set at micro-controller startup\" to \"!PA14\".\n
Run in your terminal:
make clean\nmake\n
The klipper.bin
file, located in ~/klipper/out/klipper.bin
needs to be copied to a MicroSD card and renamed to firmware.bin
(case-sensitive).
Next, unplug the 3MS board from the PSU and your Klipper Host and insert the SD Card. Next, plug in the PSU, THEN the Klipper Host to the 3MS board. The firmware is now flashed.
"},{"location":"setup/firmware/#get-mcu-id","title":"Get MCU ID","text":"In the terminal, run:
ls /dev/serial/by-id/\n
Example output:
usb-Klipper_stm32f103xe_33FFD1054746333809650557-if00\nusb-Prusa_Research__prusa3d.com__Original_Prusa_i3_MK3_xxx-if00\n
In this case, the first line is the 3MS, and the second line is the 3D printer. Now that you know the id of the 3MS MCU, copy it and save it to a file:
cd ~ && echo \"<your-mcu-id>\" >> mcu.txt \n
"},{"location":"setup/firstprint/","title":"First Print","text":"Follow this guide to begin your first multimaterial print. There are two main ways to prepare a model for multimaterial painting.
"},{"location":"setup/firstprint/#method-1-multimaterial-painting","title":"Method 1: Multimaterial Painting","text":"This method allows you to turn any model, even if it's not designed for multimaterial printing, into a multimaterial print. First, import your model into the slicer. In this case, a 3DBenchy will be used.
Cmd+I OR Ctrl+I
Next, select the model and click multimaterial painting at the top.
N
Once you're in this menu, you can choose any tool, tool size, and filament. Now, just drag over the model to apply the selected tool to the model. In this case, the hull of the 3DBenchy will be set to filament two using the fill tool.
Finally, hit slice and your model is ready to print!
Cmd+R OR Ctrl+R
"},{"location":"setup/firstprint/#method-2-multimaterial-model","title":"Method 2: Multimaterial Model","text":"This method allows you to turn parts of a model to different materials. For this tutorial, this T-rex by Cipis will be used. First, import your model into the slicer. If prompted while opening to treat the model as multiple parts, select \"Yes\".
Cmd+I OR Ctrl+I
Next, go to object settings and change the different parts of the model to different colors.
Finally, hit slice and your model is ready to print!
Cmd+R OR Ctrl+R
"},{"location":"setup/firstprint/#wipe-tower-position","title":"Wipe Tower Position","text":"In the examples, you may have noticed that the wipe tower is far from the model. The travel time between the model and wipe tower adds up, and moving the tower closer can help reduce print time.
In the \"Prepare\" view, click and drag the wipe tower as close to the object as you can without colliding.
If you have a camera on your 3D printer, you may want to put the wipe tower \"behind\" the part from your camera's perspective.
"},{"location":"setup/slicer/","title":"Slicer Setup","text":"Follow this guide to setup the 3MS with your slicer. OrcaSlicer will be used in this guide, but these same settings (with different names) can be applied to PrusaSlicer and SuperSlicer.
"},{"location":"setup/slicer/#number-of-filament-units","title":"Number of Filament Units","text":"Set the number of filaments in your slicer to the number of filament units in your 3MS.
In OrcaSlicer, press the filament plus button until there are as many filaments displayed as you have filament units.
"},{"location":"setup/slicer/#klipper-startend-g-code","title":"Klipper Start/End G-Code","text":"In your Klipper PRINT_START
macro, add the following right before your purge line:
MMMS_START INITIAL_TOOL={params.INITIAL_EXTRUDER}\n
In your PRINT_END
macro, add the following before the cooldown command is called:
MMMS_END\n
"},{"location":"setup/slicer/#slicer-start-g-code","title":"Slicer Start G-Code","text":"In your slicer's Start G-Code, add the following parameter to your PRINT_START
:
INITIAL_EXTRUDER=[initial_extruder]\n
Info
This is the last required part of slicer setup.
"},{"location":"setup/slicer/#optional-klipper_estimator","title":"Optional: klipper_estimator","text":"If you use klipper_estimator and want the toolchange represented in the time estimate, time your toolchange, then change your Change filament G-Code:
"},{"location":"setup/controllers/","title":"Controllers","text":"Follow this guide to determine which controller to use in your 3MS.
"},{"location":"setup/controllers/#options","title":"Options","text":"The 3MS works on multiple different controllers.
Info
If your printer's mainboard has spare stepper ports, you can use them to control 3MS steppers. You can open an issue on Github (there's a template) to get a configuration made for your specific setup. Any controllers listed with \"(main MCU)\" use those spare stepper plugs.
Choose one of the following supported controllers (a checkmark indicates it is fully tested):
SKR Mini E3 V2.0 (4 colors)
Fully Tested
BTT Octopus (main MCU) (4 colors)
Untested
Einsy RAMBo (main MCU) with SKR Mini E3 V2.0 (3ms MCU)
Expert modification, in development
Warning
This configuration may not work with the BTT Octopus Pro.
Max filament units: 4
MCU Name: main
This configuration is a main MCU
configuration, meaning that your printer should already be running off a BTT Octopus and you don't need to purchase one.
Per filament unit:
1x TMC2209 ($7 each)
"},{"location":"setup/controllers/bttoctopusmain/#wiring","title":"Wiring","text":"Route the wires from the NEMA17's to the controller board. Follow this table to determine which port to plug the motors into:
Filament Unit # Motor Port 0 MOTOR7 1 MOTOR6 2 MOTOR5 3 MOTOR4"},{"location":"setup/controllers/einsyrambo-skrminie3v2/","title":"Einsy RAMBo (main MCU) with SKR Mini E3 V2","text":"Danger
This guide is an expert guide only
Warning
This guide is under construction
Info
This modification is designed for the Prusa MK3/S/S+, and depends on this Klipper configuration.
"},{"location":"setup/controllers/einsyrambo-skrminie3v2/#why","title":"Why?","text":"When printing fast, the TMC2130's on the Einsy RAMBo can get quite loud. The TMC2209's on the SKR Mini are much quieter and support denser microstepping.
"},{"location":"setup/controllers/einsyrambo-skrminie3v2/#bom","title":"BOM","text":"Info
This section is under construction.
Name Price Quantity Link Notes PSU -> Einsy Cable $7.99 1 PartsBuilt3D Stepperonline NEMA17 $9.99 each Amazon 2 Replaces current XY motors"},{"location":"setup/controllers/einsyrambo-skrminie3v2/#wiring","title":"Wiring","text":"First, unplug the 3MS steppers from the SKR Mini, and the XY steppers from the Einsy RAMBo. The motors will need to be switched due to different connector types between boards.
This table outlines the major wiring of this modification.
Einsy RAMBo SKR Mini E3 V2 Motor PSU+ POWER+ PSU- POWER- XM 3ms0 YM 3ms1 XM X YM Y"},{"location":"setup/controllers/einsyrambo-skrminie3v2/#configuration","title":"Configuration","text":"In your printer.cfg
, comment out these lines:
#[include klipper-prusa-mk3s/mk3s/steppers.cfg]\n#[include klipper-prusa-mk3s/mk3s/tmc2130.cfg]\n
Next, copy the contents of 3ms/controllers/einsy_rambo_with_skr_mini/xy-motors.cfg
and ze-motors.cfg
to klipper-prusa-mk3s/skr/xy.cfg
, and klipper-prusa-mk3s/mk3s/ze.cfg
, respectively.
Add the following new lines:
printer.cfg[include klipper-prusa-mk3s/skr/xy.cfg]\n[include klipper-prusa-mk3s/mk3s/ze.cfg]\n
Restart Klipper.
"},{"location":"setup/controllers/skrminie3v2/","title":"BTT SKR Mini E3 V2","text":"Max filament units: 4
MCU Name: 3ms
Route the wires from the NEMA17's to the controller board. Follow this table to determine which port to plug the motors into:
Filament Unit # Motor Port 0 XM 1 YM 2 ZAM or ZBM 3 E0MNow, grab your 12V PSU and two M-M duponts, one red and one black (M-M means that there is metal coming out of both ends of the cable). Plug the PSU into the wall, but don't plug the screw terminals into the PSU (the screw terminals have green)
Plug the black wire into the negative terminal of the screw terminals
Danger
These dupont cables are too thin to run much more than the stepper motors. If you run a heater or other power-intensive device off of the SKR board, the duponts and/or PSU can melt/catch fire. To reduce the risk of this, you can double up on the duponts or get thicker wires.
Following this image, choose either the DCIN or POWER input
Verify all connections
Warning
If the wires are plugged into the wrong place, or swapped polarities, your SKR, Stepper motors, and/or PSU can be badly damaged.
Plug the PSU screw terminals into the PSU wire
If the SKR lights up, you wired it correctly!
Finally, plug the SKR into your Klipper host with the blue cable that came with it.
"},{"location":"troubleshooting/","title":"Troubleshooting","text":"If you are having trouble getting your 3MS to work properly, check if the problem you're facing is in this list:
If it is not in this list, please open an issue on Github.
"},{"location":"troubleshooting/failedloadunload/","title":"Failed Load/Unload","text":"If your printer is paused and displaying Please load
or Please unload
, follow this troubleshooting guide to diagnose the problem and fix it.
First, see False Alarm to ensure your filament sensor is properly configured and is being properly read by the 3MS macros.
"},{"location":"troubleshooting/failedloadunload/#failed-unload","title":"Failed Unload","text":"When your printer displays a Please unload
message, pay attention to the Tx
number it shows. For example, if it displays the message Please unload T0
, it failed to unload the filament at T0. Follow these steps to recover the toolchange:
Manually pull the filament out of the printer's extruder.
If it is stuck, try one of the following:
Also, see Skipping
Next, manually pull the filament all the way to where the filament is usually parked between toolchanges (before the Y-splitter).
T0 -> T1
indicating which filament is next (in this case T1). It shoudl be loaded to the entry of the printer's extruder gears.Next, diagnose the problem based on these possible scenarios:
Filament never unloaded out of printer's extruder
This is a sign of poor tip shaping. The quick fix for this is to increase print temperatures. Also, see Skipping.
Filament unloaded out of printer's extruder, but stopped before filament sensor
This is a sign of your filament sensor causing excess friction on the filament, or your 3MS extruder tension too loose. For the 3MS tension too lose, simply rotate the tensioning screw on the 3MS extruder clockwise a couple rotations.
When your printer displays a Please load
message, pay attention to the Tx
number it shows. For example, if it displays the message Please load T1
, it failed to load the filament at T1. Follow these steps to recover the toolchange:
Manually push the filament all the way to the inlet of your printer's extruder.
If your filament isn't able to load, the previous tool may not have completely unloaded. See Failed Unload for more information.
Resume your print.
Next, diagnose the problem based on these possible scenarios:
Previous filament didn't unload enough
Increase your unload_distance
in MMMS_SETTINGS
(3ms/settings.py
). You can test different values by using SET_MMMS_SETTINGS
at runtime. Example:
SET_MMMS_SETTINGS UNLOAD_DISTANCE=210\n
Filament didn't load enough
Increase your load_distance
in MMMS_SETTINGS
(3ms/settings.py
). You can test different values by using SET_MMMS_SETTINGS
at runtime. Example:
SET_MMMS_SETTINGS LOAD_DISTANCE=220\n
If during toolchanges, a failed toolchange false alarm occurs (print pauses even though toolchange was successful), follow this troubleshooting guide to fix it.
"},{"location":"troubleshooting/falsealarm/#fsensor_delay","title":"fsensor_delay","text":"The main culprit for this issue is likely your fsensor_delay
in 3ms/settings.cfg
is too short. Short values will cause more false alarms, and long values will cause less. Generally, the default 2000ms is good for most setups, but if you are having false alarms, you will have to increase it. Example:
fsensor_delay: 2000\n
3ms/settings.cfgfsensor_delay: 3000\n
"},{"location":"troubleshooting/skipping/","title":"Motor Skipping","text":"If any of your extruder motors are skipping while using the 3MS, follow this troubleshooting guide to diagnose the issue and fix it.
"},{"location":"troubleshooting/skipping/#printers-extruder","title":"Printer's Extruder","text":"First, check if your printer's extruder is properly extruding. To check this, detach the PTFE tube from the inlet of your extruder, and manually load filament, using Klipper's controls for loading filament. If your printer's extruder is having trouble extruding plastic, you may have one of the following:
If the printer's extruder is working properly, and you're still having skipping, check the filament tips. If the tip has a long string on it, or has a thick blob at the end, your filament tips may be to blame. If you have stringy tips, decrease your nozzle temperature while printing. If you have blobby tips, increase your nozzle temperature while printing. Alternatively, you can purchase PTFE tubes with a larger ID to allow for less precise tips.
"},{"location":"troubleshooting/underextrusion/","title":"Underextrusion","text":"If your prints start to have gaps in the walls, you are likely experiencing underextrusion. Follow this troubleshooting guide to diagnose the issue and fix it.
"},{"location":"troubleshooting/underextrusion/#extruderhotend-issues","title":"Extruder/Hotend Issues","text":"First, try the solutions in this article in case there are any issues with your printer's extruder/hotend.
"},{"location":"troubleshooting/underextrusion/#3ms-rotation_distance","title":"3MS rotation_distance","text":"If your extruder and hotend are working fine, the next likely cause of underextrusion is your 3MS rotation_distance is too high. There are two likely causes and solutions, based on where in the print the underextrusion occurs:
Whole print - 3MS motors working backwards from the extruder or not working at all
Follow the wiring section of Assembly.
Follow the first two steps of Stepper Setup.
Partially through print - 3MS motors not turning enough
Follow the last step of Stepper Setup.