Printer Specific Installation
This information and code can mostly be applied to other printers too. You just need to change your load values and button positions. These are marked out with "CHANGE THIS!" in the g-code.
Key Differences:
• Start with any filament, not just T0
• No tip shaping or clippy. simple, fast and reliable unloading (~20s)
• Cancel Print unloads the current filament (ready for next print)
Start G-Code
Info
Ya' know how the default code wants you to always start with T0? Well I finally got around to fixing that with my start G-Code. Now it loads whatever color it needs to, not just T0.
G-Code
M82 ;absolute extrusion mode
START_PRINT EXTRUDER_TEMP=[nozzle_temperature]
BED_TEMP=[hot_plate_temp]
M106 S0 ; part fan off
M106 P1 S0 ; aux fan off
M106 P2 S0
G90 ; absolute mode
; RESET CHAMELEON
G0 X284 Y294 F4000 ; move to button CHANGE THIS!
; three quick button presses to cancel out any active commands
G0 Y297 F2000 ; press button CHANGE THIS!
G4 P150
G0 Y294 F2000 ; unpress button CHANGE THIS!
G4 P150
G0 Y297 F2000 ; press button CHANGE THIS!
G4 P150
G0 Y294 F2000 ; unpress button CHANGE THIS!
G4 P150
G0 Y297 F2000 ; press button CHANGE THIS!
G4 P150
G0 Y294 F2000 ; unpress button CHANGE THIS!
G4 P150
G0 Y297 F2000 ; press button CHANGE THIS!
G4 P3200 ; home
G0 Y294 F2000 ; unpress button CHANGE THIS!
G4 P2000 ; wait for home
G91 ; relative mode
; SELECT STARTING COLOR
G0 Y3 F2000 ; press the button
{if initial_extruder==0}
G4 P550 ; dwell for .5 seconds - adjust this to match your machines single pulse time
{endif}
{if initial_extruder==1}
G4 P1000 ; dwell for 1.0 seconds - adjust this to match your machines two pulse time
{endif}
{if initial_extruder==2}
G4 P1500 ; dwell for 1.5 seconds - adjust this to match your machines three pulse time
{endif}
{if initial_extruder==3}
G4 P2000 ; dwell for 2.0 seconds - adjust this to match your machines four pulse time
{endif}
G0 Y-3 F10000 ; unpress button
; LOAD STARTING COLOR
G0 Y3 F2000
G4 P4200 ; chameleon load time CHANGE THIS!
G0 E100 F2070 ; extruder load distance CHANGE THIS!
G0 Y-3 F2400
G4 P400
G92 E0 ; reset extruder
M104 S[nozzle_temperature];
SET_PRESSURE_ADVANCE ADVANCE=0.02; CHANGE THIS!
G90 ; absolute mode
; PURGE LINE
G0 Y297 Y280 Z.2 F1000; CHANGE THIS!
G92 E0
G0 Y0 E100; purge the extruder.
G4 P200 ; all done
End G-Code
Info
pretty standard, just change your load and coordinate values
G-Code
G92 E0
G0 E-2 F2400; retract to prevent blobbing
G92 E0
G0 X284 Y294 F10000 ; button position CHANGE THIS!
G91 ; move to relative mode
M83
G92 E0;
; MY TIP SHAPING
G0 Z2 F500
G0 E10 F250 ; push out molten filament
G0 E-10 F3000 ; retract quickly to cold zone
G0 Z3 F500
G0 E-15 F100
G4 P6000
G0 E-80 F3000 ; retract all the way
M107 ;
G0 Y3 F2000 ; press button
G4 P2800 ; wait for 6 pulses
G0 Y-3 F2000 ; unpress button
G4 P2000 ; wait
G92 E0
G0 Y3 F2000
G4 P5300; UNLOAD CHANGE THIS!
G0 Y-3
G4 P400
G90
M83
BEEP
END_PRINT
Filament Change G-Code
Info
I have my own 'tip shaping' code that does not require any cooling down. It simply pushes out the molten filament and then retracts the solid filament back out. Perfect tip every time and no issues. Takes 20-30 seconds per color change.
G-Code
CHANGE FILAMENT
{if previous_extruder>-1}
{if next_extruder!=previous_extruder}
G92 E0
M83
G90
G0 X284 Y294 F4000 ; MOVE TO BUTTON CHANGE THIS!
G91
G92 E0;
; MY TIP SHAPING
G0 Z2 F500
G0 E10 F250 ; push out molten filament
G0 E-10 F3000 ; retract quickly to cold zone
G0 Z3 F500
G0 E-15 F100
G4 P6000
G0 E-80 F3000 ; retract all the way
M107
G91 ; relative mode
G0 Y3 F2000 ; press the button
{if next_extruder==0}
G4 P550 ; dwell for .5 seconds - adjust this to match your machines single pulse time
{endif}
{if next_extruder==1}
G4 P1000 ; dwell for 1.0 seconds - adjust this to match your machines two pulse time
{endif}
{if next_extruder==2}
G4 P1500 ; dwell for 1.5 seconds - adjust this to match your machines three pulse time
{endif}
{if next_extruder==3}
G4 P2000 ; dwell for 2.0 seconds - adjust this to match your machines four pulse time
{endif}
G0 Y-3 F10000
G0 Y3 F2000
G4 P5500; UNLOAD TIME CHANGE THIS!
G0 Y-3
G4 P400
G0 Y3 F2000
G4 P4200; LOAD TIME CHANGE THIS!
G0 E100 F2070 ; Load
G0 Y-3 F2400
G4 P400
G0 X-5 F200; move left
G0 Z-5 F200; move back down
G92 E0 ; reset extruder
M104 S[nozzle_temperature];
SET_PRESSURE_ADVANCE ADVANCE=0.02; CHANGE THIS!
G90 ; absolute mode
M83
{endif}
{endif}
CANCEL_PRINT Klipper Macro
Info
This can be found in your gcode_macro.cfg file in klipper. This change makes it so that if I cancel a print then the chameleon unloads the filament; so I don't have to manually prep it for the next print. This is a quality-of-live improvement, but I already find it very nice to have. Be sure to change your values here too. This will affect non-chameleon prints as well, so keep that in mind.
G-Code
[gcode_macro CANCEL_PRINT]
description: Cancel the actual running print
rename_existing: CANCEL_PRINT_BASE
gcode:
G0 E-2 F2400; retract to prevent blobbing
G92 E0
G0 X284 Y294 F10000 ; MOVE TO BUTTON
G91 ; move to relative mode
M83
G92 E0
; MY TIP SHAPING
G0 Z2 F500
G0 E10 F250
G0 E-10 F3000
G0 Z3 F500
G0 E-15 F100
G4 P6000
G0 E-80 F3000
M107
G0 Y3 F2000 ; press button
G4 P2800 ; wait for 6 pulses
G0 Y-3 F2000 ; unpress button
G4 P2000 ; wait for it to cut filament
G92 E0
G0 Y3 F2000
G4 P5500; <----------------------USE YOUR UNLOAD TIME FOR P
G0 Y-3
G4 P400
END_PRINT
CANCEL_PRINT_BASE