This is an attempt at making a multi color config using an arduino uno and a CNC shield.
- Your 3d printer running klipper
- Arduino uno, cnc sheild and stepper drivers
- up to 4x Nema 17 stepper motors
- up to 4x extruder parts
- USB cable
- 12-36v power supply
- Extra PTFE tubes and connectors
- 3d printed quad splitter
- A 2 to 4 color holder or stand
- Attach Arduino to CB1/Raspberrypi
- Flash Arduino
- Upload multi_color.cfg to your klipper machine
- Update MCU Serial path
- Setup up your Arduino and CNC sheild to your needs
The hardest part of this project, other than tuning the steppers, will be flashing the arduino. Depending on what version of debian you are running this might require you to add some specific libraries to your computer running klipper.
See this if you have any issues with the flashing procedure: Klipper3d/klipper#4938 (comment)
If you are using KIAUH to manage your klipper install you can build and flash right from inside of KIUAH
Open up KIAUH and select the following:
- [ADVANCED]
- [BUILD + FLASH]
- Select the configuration options below
Enable extra low level configuration options
MCU Architecture: Atmega AVR
Processor model: atmega328p
Processor speed: 16 MHz
Baud rate for serial port: 250000
Klipper3d/klipper#4938 (comment)
There are a few custom Klipper Macros to make some of this easier.
- UNLOAD_COLOR
- LOAD_COLOR
- CHANGE_COLOR
- SET_COLOR
The filament changing macros currently don't have a set of temps to allow the change so you'll need to heat your extruder before using them.
Our change gcode was put together in Orca Slicer so you will need to adjust depending on your slicer. In your filament change gcode you'll want to set it to something similar to the following:
; For Orca Slicer
; - Custom AMS tool T{next_extruder} -
CHANGE_COLOR NEXT_COLOR={next_extruder} DISTANCE=200
M117 Custom AMS Tool T{next_extruder}
add [include 'multi_color.cfg']
to you printer.cfg file.
Depending on your needs one way may benefit you more than another.
- Tandum -> Passing material to a main extruder, best for direct drive extruders
- Separate -> Passing material straight from auxillery extruders to hot end, best for bowden setups
Reguardless of your method you will want to check and update the rotation distance of the auxillery extruders you are using.
When hooking up your multi extruder for tandum you will be passing from the PTFE extruder into your main extruder.
This config utilizes the SYNC_EXTRUDER_MOTION klipper macro to control the extruders on and off. If you want to directly extruder from your auxillery steppers and not use the built in extruder for your machine uncomment the line:
# SYNC_EXTRUDER_MOTION EXTRUDER="extruder" MOTION_QUEUE=''
This will deactive your main extruder and let the other extruders take main control.
You'll then need to go from your PTFE Joiner straight into the hotend.
In Orca turn off ramming when running separate. Orca slicer does set ramming properties with a PRESSURE_ADVANCE setting for klipper machines that I haven't figured out how to get rid of. If you removed the main extruder from the motion queue this does throw an error and will stop your print dead in it tracks. WHen the main extruder is removed it has no idea what extruder to apply the pressure advance to.
Happy to have any help! I am not yet the best will all of the amazing things you can do with klipper, but any other ideas of things we can add or improve with this are greatly appriciated!
Open a issue or possibly a pull request and we can have some fun troubleshooting!