3d Chameleon - up to 4 color/material printing with Single Extruder

Oh, yes. Thank you for clarification.
I’m the meantime I saw different youtube videos so i know now there was a firmware update about the change process…

I will come back after success or enough time for testing…

@Wyphorn the dual head has its difficulties to feed the filament, for now it seems hard to pull but I will write a review when I am ready to go.

Ok, i see differences here:
Your toolchange code works with pulses like you described and you wait for the filament 8.5sec.

For example

{if next_extruder==3}
G4 P1800							; Dwell for 1.8 seconds to select extruder T{next_extruder}
{endif}
G0 X330 F3000						; Disenegage the trigger
G4 P8500							; Wait for 3DChameleon to replace the filament
G1 E70 F300							; Accept new filament by direct drive and load into the hot zone
G90

The MK4 Codegenerator (there is no other unit to buy) says:

{if next_extruder==3}
G4 P2000 ; dwell for 2.0 seconds - adjust this to match your machines four pulse time
{endif}
G0 X-3

G4 P2000 ; wait for cutter to work
; ok command selected - back out filament if needed after cut
{if previous_extruder>-1}
G0 X3 F2000 ; 
G4 P8000 ;
G0 X-3;
G4 P400

{endif}
G0 X3 F2000 ; 
G4 P8000 ;
G0 E25 F1500; <<<--- adjust this E value to tune extruder loading
G0 X-3;
G4 P400

So i wonder if we have firmware differences… :thinking:
Anyway, i will get it to work but it is more difficult than i thought.

I’m a bit confused as to what is the actual issue you are trying to overcome.
There is no difference (as far as I can tell) between the MK3 and MK4 firmware in terms of controls. All mk4 does - is adding functionality of plugins and addons. Like you can now connect the screen and other bells to it.

I’ve upgraded my unit to mk4 firmware - and my code worked no issues, the same way…

Both codes use the same Dwell command to wait for pulses to count. I set my timings by trial and error. As I quickly found that the generator code for MK3 was useless…

Also I have to say that my switch is mounted on X axis. This was done with intent of creating a purge bucket and optimizing things (purging in model and such) towards minimal waste.
Here is the pic of the purge bucket with quick release I designed for this:
PurgeBucket

Please let me know if there are moments I should expand on in the documentation to make things better to understand. As I spent a big number of hours figuring this thing out. And things that are easy and obvious for me might not be the same for first timer like you or others. I might not even recognize it :slight_smile: I even went as far as reverse engineering the mechanism of the 3dchameleon (before it was posted as models online by Bill) to make some improvements.

Also, if you’d like, I can share models of the switch mount and such that I created for myself.

Overall my complete setup is this

1 Like

Thank you.

As I see your code does only activate the tool change process and has only to wait till the process has ended. It seems like in the latest video I have seen where only the process is intended and ends automatically.

My unit works like older setups (maybe I have a older firmware, I have to verify this), where the pulses set the next filament, then needs another endstop engage for 8 sec to unload and the next engage for 8 sec to loads the next filament again.

This is why I was confused a long time.

Could you share the video you are referring to?

Also, did you find the workflow diagram that I’ve posted (github) in any way useful to understand the process?

The workflow diagram is a good overlook but has no details so it was not useful in my case, thank you anyway!

Here is the basic setup video about prusa and the toolchange setup:

Here is the video about the updated firmware:

But i have too less time on one piece so i adapt my endstop holder now and tomorrow i will get back and see further…
THis one i see in the moment but have to go to bed now :wink:

1 Like

Hey, update here :wink:

Finally i got it to work!
Its still a bit tricky because of the counterforce so the extruder is picked up and can`t print properly but its the right direction to move on.

For your understanding @nweolu , here is my toolchange code (still under developement):
It needs a second push to unload and a third push to reload the next fiament.

;=========================
; START Tool change G-code for PrusaSlicer 2.6.0
; 3DChameleon Mk3 Installed in Mode #2 
; Mode #2
; By nweolu
; Mod by XchrisD
;=========================
; "Switching from T{previous_extruder} to extruder T{next_extruder} with {filament_preset[next_extruder]}""
;=========================
M412 S0								;Turn OFF filament runout sensor for toolchange process
; Start safety check - if var_skip_tool_change = 1 then skip filament removal by Snapmaker drive (do nothing and just print)
;
{
if var_skip_tool_change == 1
}
;
; "Skipping tool change at the beginning if no tool change is neccesary, printing with {filament_preset[current_extruder]}"
;
{
else
}
;
; "Start tool change to extruder T{next_extruder} with {filament_preset[next_extruder]}"
;
;=========================
; START Lift and retract to keep the print safe
;=========================
G92 E0								; Reset extruder
G1 E-3 F200							; Retract a bit to keep stringing to minimum
G91									; Relative Positioning to lift up relative to the print
G0 Z25								; Lift up 2mm from the print
G90									; Absolute positioning
;=========================
; END Lift and retract to keep the print safe
;=========================
G0 X345 F2000						; Move away from the print to filament change zone
;=========================
; START Filament Tip Shaping change sequence
;=========================
G92 E0								; Reset extruder
G1 E13 F200							; Slowly push filament into hot zone
{if filament_type[current_extruder]=="PLA"}
	G1 E-5 F400						; quickly move filament up for PLA
	G1 E-95 F100					; Slowly move filament up for PLA
{else}
	G1 E-5 F2500					; Jerk out to break solid filament away from the melted mass
	G1 E-95 F200					; Slowly move filament up to give it time to cool down before going through gears
{endif}
G92 E0								; Reset extruder.

; Filament ready to be handled by 3DChameleon.
;=========================
; END Filament Tip Shaping change sequence
; "Unloading extruder T{current_extruder} with {filament_preset[next_extruder]}"
;=========================
; 3DChameleon Filament repalcement sequence 
;=========================
G0 X350 F3000						; Engage the trigger
{if next_extruder==1}
G4 P500								; Dwell for .5 seconds to select extruder T{next_extruder}
{endif}
{if next_extruder==2}
G4 P1000							; Dwell for 1 seconds to select extruder T{next_extruder}
{endif}
{if next_extruder==3}
G4 P1300							; Dwell for 1.3 seconds to select extruder T{next_extruder}
{endif}
{if next_extruder==4}
G4 P1800							; Dwell for 1.8 seconds to select extruder T{next_extruder}
{endif}
G0 X345 F3000
G4 P1500
G0 X350 F3000						; Enegage the trigger
G92 E0
G1 E-100 F600 ; FILAMENT REMOVE FOR 10SEC
G92 E0
;G4 P8500							; Wait for 3DChameleon to REMOVE the filament
G0 X345 F3000						; Disengage the trigger
G4 P1500
G0 X350 F3000
G92 E0
G1 E140 F600 ;Feed for 14sec						; Engage the trigger
G92 E0
;G4 P8500						; Wait for 3DChameleon to REFILL the filament
G0 X345 F3000						; Disengage the trigger
G4 P1500
;G1 E90 F300							; Accept new filament by direct drive and load into the hot zone
G90									; Absolute positioning
;=========================
; START Reverse Lift 
;=========================
G91									; Relative Positioning to lift up relative to the print
G0 Z-25								; Lift down 25mm from the print
G90									; Absolute positioning
;=========================
; END Reverse Lift 
;=========================
{
endif
}
{global var_first_tool_changed = 1;}
{
if var_first_tool_changed == 1 then
	var_skip_tool_change = 0;
	; ";First toolchange G-code is executed, changing var_first_tool_changed = 1"
endif
}
M412 S1								;Turn ON filament runout sensor after toolchange process
;=========================
; END Tool change G-code for PrusaSlicer 2.6.0
;=========================

Here is my Endstop-Mount for the X-axis Position at 350mm for Extruder T1, engaged with quick-swap kit…
Endstop_Holder_X_double_offset.stl (97.7 KB)

2 Likes

minions

This is an achievement! I’m so happy to for you!

1 Like

@xchrisd @cgrantmccool
How are you guys doing with your chameleon pets?

Figured out my set-up but not gotten to implementation, yet. I’m going for a clippy/autoclippy setup and screen add-ons. I think there’s a higher chance of others trying it out with those two features.

1 Like

I use petg and have tip shaping and feeding to the dual extruder problems.

There frequently stays a blob on a string of the outpulled filament which blocks the feed one of five times or so.

I have so little spare time to work on it continually this makes it really hard to progress…

I wish I could help with the dual extruder, but I don’t have one.
Here is my little collection of tip shaping tests, took a bit to figure out. I recommend settling on print temp first, and then using it as a base, to figure out the procedure. The key is to ram/push the filament quickly back into the nozzle to form a cone, and then pull it up as fast as possible without damaging it. Timing these two things is the key.

Also - check the filament path on dual extruder, I had to create the adapter for single extruder (on printables) for the filament to reach the gears without air gaps in between. Otherwise it would catch sometimes.

1 Like

Stringing is why I am going with a Clippy set-up and taking some extra time. I watches too many early ERCF and MMU(2s) faily because filament tips causing issues.

Are using the mk3 gcode supplied or the one from the 3D chameleon code generator?

You’ll need to generate your own for a dual extruder module. The hot end/extruder setup likely has different measurements than the single hot end module.

Also, your prusaslicer settings are PETG and not lazy just changed PLA settings to match your PETG needs? The ramming/tip gcode is different between the two. Particularly with speed.

I will update as soon I have enough progress to share.

My new filament 4in1 adapter made it easy to change the filament, it gets not screwed up anymore but now I have to time the movement correctly again…

If you like I could share everything I have right now but it’s not finished yet.

1 Like

As long as it is not taking too much time - please do. Would love to see the progress :slight_smile:

Just wanted to keep the thread alive. Solid designs on the x-axis limit switch. Thanks for putting that together. Working on dialing the switch to X-325 for my test set-up.

AutoClippy mount is the next thing on my todo list. Unfortunately, I only have 2-3 hours a week to play around right now, which is enough to print something and walk away to do work. Then fiddle with it a bit in the evening.

1 Like

The Enemy of Art Is the Absence of Limitations :slight_smile:
Where do you want to place the AutoCLippy?

I’m going to try to sit it right on top of the print module. There’s a bowden guide model for the SM2 print module on thingiverse that should provide a good basis for attaching to the X carriage.

Of the models I have found with a larger servo this is the one I think I have the best chance of editing to fit onto the module. I will say this likely means quick change modules are out with this set-up, too.

Other things I can think of as issues is the added mass to the module. Perhaps this pushes me to do the beta firmware and calibrate while I am at it.

If you’d like, II could probably find a way to combine my splitter with the clipy. For direct interface to the extruder…

That would be really cool. All I have in exchange is I can resin print it and ship you some if you don’t have a resin printer. In additon to my documenting and writing up how to do this with a stock SM module and then a klicky version.