Multi colour printing without wipe or prime towers

Anyone who has tried printing multiple coloured objects will know the difficulties of switching from one filament to another, especially when using a mixing hot end or a hot end which has multiple inputs but a single nozzle such as the Diamond hot end or maybe an E3D Cyclops or perhaps the new Prusa multi colour which takes a slightly different approach but to all intents and purposes still has multiple inputs but a single output. The problem is that when switching from one colour to another, the original colour (filament) has to be purged before the new colour comes through. The usual approach is to use a "sacrificial" wipe/prime tower which is messy, wasteful of filament (and print time), takes up space on the build plate.

So I've developed/am developing a different approach. Here is a little video which shows the results of my efforts so far [youtu.be] .

The entire print was 3mm thick and took a couple of hours so I've shortened the video to around 5 minutes. The technique isn't perfect and still has some rough edges to iron out but I think you'll agree that it's showing promise.

For now, I'll keep you guessing as to how I've done it. I'm working on a blog/web site and will publish full disclosure on there shortly in the true spirit of RepRap. Part of the reason for posting this now is to get the video out into the public domain so that no greedy organisation can come along and patent the idea.

Seek and ye shall find. Glad you like my little teaser. There are plenty of clues and enough information in various places that I've posted for you to piece things together and make an educated guess. Or you can wait until I get my blog up and running.

I've never done multicolor printing, and those "bruteforce" wiping towers look bad, so never even tried doing it.
But this, so simple yet does the trick.

Looked around a bit and saw three nice powerful hints around the diamond. My guess: Retract plus standby temperature?

Thanks. However, your guess is off the mark. You are right in that it was(is) done with a Diamond hot end and I can tell you that active and standby temperatures are the same, as it's 3 filaments sharing the same nozzle so there is only one hot end heater.

My guess is your simply calculating when the next color is needed and you have worked out how long it takes for a color change to actually start coming out the hotend. You then just switch color ahead of time in the gcode (some tweaks of the gcode are probably needed to get just the right cut location)

@deckingman: I've realized I'm way off, after a while. I'm a kind of guy who thinks after, not before.
First, there are only 2 fans there, don't know how I've seen them as 3... (No, I did not drink) And they are obviously pointing down. I kind of feel stupid.
Second, It would be very bad to cool the diamond nozzle. My guess of retracting + fast-cooling the nozzle to prevent oozing could be for multiple nozzle extruders, not a mixing one. But that would be maybe a waste of energy: heating and cooling the nozzles so many times.

I'll go on and think a bit about it. I just can't see anything in the videos which could lead to the solution.

@Dust: Something similar was done as a Kickstarter project as a separate device. It feeds 4 filaments and knows the gcode plus the length of the output to the nozzle. It changes the outgoing filament before the color change is needed so it will end up at the nozzle at the right time.

QuoteDust
My guess is your simply calculating when the next color is needed and you have worked out how long it takes for a color change to actually start coming out the hotend. You then just switch color ahead of time in the gcode (some tweaks of the gcode are probably needed to get just the right cut location)

This is something I have wanted to try for ages...

Give that man a cigar!

Essentially with a mixing hot end like the Diamond, you can change between filaments instantly without waiting for one tool to heat up and another to cool down. The difficulty lies in the fact that when you change from one filament to another, there is still some of the old filament in the mixing chamber that needs to be purged before the new colour (filament) comes through.

So I post process the gcode file and basically move the tool change commands forward in the file by summing the extruder moves prior to the existing tool change position. The devil is in the detail though as invariably the new position is somewhere inside an existing XYE move which has to be segmented into two new moves. It would also be a lot easier if the gcode file was a nice continuous stream of G1 Xnn Ynn Enn moves which it isn't.

I did say it isn't perfect. In theory, there will still be some mixing as one filament changes to another. In practice I have found that this is a tiny amount of filament and you have to look really closely at the printed object to see it. For example with the Diamond I'm finding that the "purge amount" is about 2.0 to 2.5 mm and by observation I'd say that the transition from one colour to another is about 10% of that so about 0.2 to 0.25 mm of filament where the colour is neither one nor the other. The Diamond does have a very small "mixing chamber" though and other designs may act differently and so may still need some kind of a small purge tower which I'm looking into incorporating into the post processing script.

Have you written a post processing script or do you alter the gcode manually? I'm sure it would only be necessary for the perimeters and only the final layer ( eg, for the flag in the video ) needs to be perfect.

Quoteo_lampe
Have you written a post processing script or do you alter the gcode manually? I'm sure it would only be necessary for the perimeters and only the final layer ( eg, for the flag in the video ) needs to be perfect.

It's a post processing script (doing it long hand would be a complete PITA) and it works on every tool change. Applying it to the final layer and perimeters only would just complicate things further. As it is, every layer has the corrections applied so the flag in the video could be viewed from either side. The approach I'm taking is to leave the original file untouched. That way it is possible to generate several files with different "purge amounts" in order to fine tune it and find the optimum "purge amount". It only takes a few seconds to run the script and generate a new file.

What are your plans with this PP-script? Selling it to the highest bidder?

Certainly not! Refer back to my OP. I just need some time then it'll be made public for anyone to copy and/or improve on.

The thing is, I'm a 63 year old ex mechanical engineer who currently makes a living by cutting and screwing bits of wood together. I have no formal training in writing code so what I've cobbled together is just what I've been able to teach myself and glean from internet searches and the odd book. As it stands, the script gets the job done but it ain't pretty and any professional programmer would probably laugh at it (or cry).

Quotedeckingman
As it stands, the script gets the job done but it ain't pretty and any professional programmer would probably laugh at it (or cry).

Don't worry about it! As a software developer for 30+ years I can tell you that with the differences between languages - the code will need to be translated anyway. The most important thing is to have clear comments indicating what you are doing with each section. Folks will do the nuts and bolts stuff their own way anyway! You are proving the concept.

Thank you for your contribution! Your curiosity and willingness to experiment and share have advanced the art.

Following with interest...

My printer: Raptosaur - Large Format Delta - [www.paulwanamaker.wordpress.com]
Can you answer questions about Calibration, Printing issues, Mechanics? Write it up and improve the Wiki!

Yes, that's right. I'm crying at other professionals' codeworking here at the company where I work.
Even if the code is a mess, the most important part is the readability: By providing documentation, comments, and maybe a bit of readabe code here and there.
And as I understood you'll be putting up some documentation on the blog.

Congratulations man! You've done a very nice job!
I was pretty sure that it was some hardware modification...

Quotedc42
I was so impressed by deckingman's work on this and his results that I intend to add this facility to RepRapFirmware, so that you can print the gcode directly without pre-processing it.

Awesome!
I have a related idea to improve color mixing with the diamond hotend, but it would blow up the gcode, if done by a post processor. So I thought it would be best done by the "planner" in firmware.
I don't want to hijack this thread, so here is only a short description:
It's called Oscillating extruders.
Instead of moving each extruder simultaneously ( according to the mixing ratio ) the planner multiplies the calculated steps for a piece of track by 10 and then applies a 10 steps back/ 11 steps forward motion to each extruder. They are synced in a way, that the molten filament in the heat chamber is stirred back and forth between the channels and mixes up instead of looking like toothpaste. The chamber pressure should stay the same as does the amount of extruded filament.

The above numbers are just an example. It would take a parametric command to switch the oscillation on/off and to control the amplitude/speed of the oscillation.
Should I start a new thread? This one is too important to be hijacked...

Nice idea but if you look at the pdf drawing here [iamond_Nozzle.pdf" target="_blank" >reprap.org], you'll see that the Diamond doesn't really have a mixing chamber. The only part where all 3 filaments come together is 0.4mm diameter and 2mm long so I doubt that pulling the filaments back and forth before they reach this section would have much effect on the mixing (but it would soon wear out the extruders and probably grind the filament as well as play havoc with retraction).

Congratulations on the good work. Do you think this could also be used to print with dissolvable supports?

There is no reason why not. Although I use the word multicolour, it could more correctly be described as multi-filament.

The only issue is if the filaments require significantly different temperatures. In that case, you have to wait while the hot end changes temperature and during that transition period you'd likely get some oozing. That being the case, I can't off hand see how you could deal with it other than move away from the print and use some sort of wiping mechanism - maybe a brush attached to the bed or frame? If all the filaments can be printed at the same temperature then it should work fine.

So as promised, herewith a link to the new blog that I have set up, in which I have created a post giving full details of my technique. The information should all be clear but if you have any questions, feel free to comment on the blog and I'll do what I can to help. [somei3deas.wordpress.com]

Please bear in mind that I only set the site up a couple of days ago and I've gone with the free WordPress plan which means I am very limited in what I can do with the design and layout. Also, apart from a brief introductory post, this is the first post I have ever made so I have much to learn.

Be warned that I'm not a programmer and if you use the Python Script which I have linked to, and it crashes your PC, don't blame me. Having said that, it works fine for me.

I give this information freely in the hope that others may benefit from my endeavours. If you find it useful, then a word of thanks or attribution would make an old man very happy.

From what I understand is that it might be worthwhile to investigate the influence of the shape of the "melting chamber" on the result? Could it be that even the entry angle of the filament into the melting chamber has an influence? Like what would happen if that entry is off-center making it whirl more? Just thinking out loud here

From what I understand is that it might be worthwhile to investigate the influence of the shape of the "melting chamber" on the result? Could it be that even the entry angle of the filament into the melting chamber has an influence? Like what would happen if that entry is off-center making it whirl more? Just thinking out loud here

In the case of the Diamond hot end, there isn't really a mixing chamber. If you look at the drawing here [reprap.org] you'll see what I mean. This is one of the drawbacks of this design IMO. The result of which is that the filaments don't actually mix, rather they come out like stripey toothpaste. Of course, when printing something like the union flag that I used to illustrate the technique, I am simply switching from one filament to another so not using the mixing capabilities. As I explained in my blog, the technique could be used with M563 mixing commands instead of "Tn" tool change commands, but it won't improve mixing which is a fundamental aspect of the hardware design.

To make things worse, I guess it is also depending on extrusion width. ( more or less filament in the same time passing the nozzle )
I think it's worth finding a working setup and leave the numbers for print speed and EW unchanged afterwards.