Simple way to print in "Real" multi-color without MMU or layer height based changes  

Page 2 / 4
  RSS
guy.k2
(@guy-k2)
Noble Member

Happy it is working. I tried to leave a comment on your github issue that shows the code segment edits, but was totally thwarted in getting formatting correctly working there

[edit Thanks rainer.s told me how to get the code commenting working on github]

in Marlin_main.cpp

=== in the case 600 statement

case 600: //Pause for filament change X[pos] Y[pos] Z[relative lift] E[initial retract] L[later retract distance for removal]

float e_shift_late = 0;
bool automatic = false;
bool suppressInitialMessage = false; //Kuo <---for M600 Q

#ifdef FILAMENTCHANGE_YPOS
y_position = FILAMENTCHANGE_YPOS ;
#endif
}

if(code_seen('Q')) //Kuo <---for M600 Q
{ //Kuo <---for M600 Q
suppressInitialMessage = true; //Kuo <---for M600 Q
} //Kuo <---for M600 Q

if (mmu_enabled && code_seen("AUTO"))
automatic = true;

gcode_M600(automatic, x_position, y_position, z_shift, e_shift_init, e_shift_late, suppressInitialMessage); //Kuo <---for M600 Q

=== in static void gcode_M600

static void gcode_M600(bool automatic, float x_position, float y_position, float z_shift, float e_shift, float /*e_shift_late*/, bool suppressInitialMessage) //Kuo <---for M600 Q

//Beep, manage nozzle heater and wait for user to start unload filament
if(!mmu_enabled) M600_wait_for_user(HotendTempBckp, suppressInitialMessage); //Kuo <---for M600 Q

=== in void gcode_M600

void M600_wait_for_user(float HotendTempBckp, bool suppressInitialMessage) { //Kuo <---for M600 Q
//kuo added suppressInitialMessage
KEEPALIVE_STATE(PAUSED_FOR_USER);

int counterBeep = 0;
unsigned long waiting_start_time = millis();
uint8_t wait_for_user_state = 0;

if (!suppressInitialMessage) lcd_display_message_fullscreen_P(_T(MSG_PRESS_TO_UNLOAD)); //Kuo <---for M600 Q

====================
in Marlin.h

void M600_load_filament();
void M600_load_filament_movements();
void M600_wait_for_user(float HotendTempBckp, bool suppressInitialMessage); //Kuo <---for M600 Q

Posted : 07/03/2019 6:11 pm
guy.k2
(@guy-k2)
Noble Member

A pull request has been submitted. We'll see if it gets anywhere.

If anyone wishes to compile their own...

https://github.com/guykuo/Prusa-Firmware/tree/M600-Q-Parameter-Enhancement

Posted : 09/03/2019 3:11 am
rainer.s
(@rainer-s)
Eminent Member

Thx a lot.. so thumbs pressed! 🙂

i updated my blog post as well to point to the Pull request and this thread.

Blog: https://schlosshan.eu
Thingiverse: https://www.thingiverse.com/rainers/collections/rainers-customizable-things
Prusaprinters: https://www.prusaprinters.org/social/6508-rainer/collections/6900
Happy printing ;-)...
Posted : 09/03/2019 8:14 am
ron
 ron
(@ron)
Estimable Member
Posted by: rainer.s

If you have any questions or feedback, let me know.

Rainer

Hello,

Thanx for sharing your technique.

I do not want to do multicolor but multimaterial. Then I tried to implemente it in PrusaSlicer 2.1RC. I tested it on a part which the base is made of ColorFabb XT and the top is made of ABS, then I have only one filament change. The print goes well, the speed limited by material volume speed is correct.

But the fan speed for the top is incorrect, it stays on values of the first material: 75% for the normal speed and 100% for the bridge speed instead of respectively 20 and 30%. I'm not familiar with MMU implementation in PrusaSlicer. Is it a bug or a limitation of your technique? It is strange that PrusaSlicer takes care of the speed but not fan speed for the second material.

 

This post was modified 3 months ago by ron
...
Posted : 06/09/2019 4:21 pm
guy.k2
(@guy-k2)
Noble Member

My branch for this is now even with 3.8.0 final. It is currently located at https://github.com/guykuo/Prusa-Firmware/tree/M600-Q-enhancement

Pretty much have given up on Prusa ever accepting this as a pull request.

Posted : 07/09/2019 6:18 pm
ron
 ron
(@ron)
Estimable Member

I opened and issue here: https://github.com/prusa3d/PrusaSlicer/issues/2886#issuecomment-529184715

Don't know if Prusa will handle this if there is no  T{next_extruder} in the Tool change G-code.

I wonder what happen if we send a T{next_extruder} to the printer without MMU.

This post was modified 3 months ago 2 times by ron
...
Posted : 08/09/2019 10:16 am
ron
 ron
(@ron)
Estimable Member

T{next_extruder} is not harmful for the MK3S (firmware 3.7.2). But one knows if it will change in the future. Then for my need I added that command in the Tool change G-code to change material properly.

By adding T{next_extruder} :

  • you don't need anymore M104 S[temperature[next_extruder]]
  • you get the proper M106 Sx , M107 and M900 Kx commands.
...
Posted : 08/09/2019 9:58 pm
ron
 ron
(@ron)
Estimable Member

The issue is solved in PrusaSlicer 2.1.0-rc2

Here is my Tool change G-code. I avoid M600 before the first layer as I suppose the filament engaged is the good one.

;
;START_CUSTOM_TOOL_CHANGE LAYER [layer_z] / [layer_num]
{if layer_num >= 0}M600{endif}
T[next_extruder]
;END_CUSTOM_TOOL_CHANGE
;

If you don't send a first T0 before layer, you will get and error at the first changing tool, and your print fail:

Send: T1
Recv: ok
Not sending T1, that tool doesn't exist according to the printer profile or was reported as invalid by the firmware
Recv: echo:T1
Recv: Invalid extruder
T0 reported as invalid, reverting to T1
Not queuing T1, that tool doesn't exist according to the printer profile or was reported as invalid by the firmware
Recv: ok
...
Posted : 13/09/2019 3:31 pm
towlerg
(@towlerg)
Trusted Member

Totally new to 3d printing (haven't even bought a printer yet, I'll get a mini when the furor dies down). Your post addresses one of the things I want to do - make front panels with robust lettering. I don't understand your technique but I don't think you could explain it any clearer than you have.

I wonder if you could update your post using the latest Prusaslicer for a two colour print.

Thanks in advance, George

 

Posted : 02/11/2019 6:29 pm
towlerg
(@towlerg)
Trusted Member

Can't edit so I'll create a new post.

I kindda understood the issue you were having identifying which filament to load but for two colours I guess that's not an issue?

Which way up the the panel with the text printed? Touching the bed or the last thing printed?

Sorry if these questions seem dim but this is all new to me (and I'm heading into my dotage).

 

Posted : 02/11/2019 6:45 pm
rainer.s
(@rainer-s)
Eminent Member

@towlerg

Both can work fine...
If i have text on only one side i usually print it towards the bed.
but be careful, this requires a really well tuned live_Z! Too close and you might loose "contrast" as the colors blend together. Too high and it will look bad as well or you get problems with fine details...

The "message problem" is a "nice to have" but definitely not required to have, even if you print with more than 2 colors.

This post was modified 1 month ago by rainer.s
Blog: https://schlosshan.eu
Thingiverse: https://www.thingiverse.com/rainers/collections/rainers-customizable-things
Prusaprinters: https://www.prusaprinters.org/social/6508-rainer/collections/6900
Happy printing ;-)...
Posted : 11/11/2019 7:48 am
towlerg
(@towlerg)
Trusted Member

@rainer-s

I'm trying to understand your technique. I still haven't got my mini so I guessing but it seems you write a couple of layers of the text then swap filament and do a couple of layers of everything else, thus the printed part to it's final shape. I that anything like what you're doing?

Posted : 11/11/2019 11:49 am
rainer.s
(@rainer-s)
Eminent Member

@towlerg

basically the profile is using "virtual" extruders. even though you only have 1 real extruder on your printer and no MMU which could automatically switch the filament for you, the config is telling slic3r that there are 5 of them. now every time slic3r needs to change to a different filament/extruder it executes some gcode as the "tool change" command. this has been setup in a way that a M600 command ( amongst some other commands) will be sent to the printer. the M600 is the filament change command for our prusa printers. so instead of switching to a different "real" extruder of "filament" it will ask you for the next filament when needed.
this allows real multicolor printing as if you would have a MMU installed on your printer.
but obviously you probably want to avoid something that would require 500 tool/filament changes 😉
but if the multicolor part is only limited to a couple of layers / filament changes this works great.

Blog: https://schlosshan.eu
Thingiverse: https://www.thingiverse.com/rainers/collections/rainers-customizable-things
Prusaprinters: https://www.prusaprinters.org/social/6508-rainer/collections/6900
Happy printing ;-)...
Posted : 11/11/2019 11:56 am
wieman01
(@wieman01)
Estimable Member

Hello,

I have been watching this thread for a while and I am exciting you guys got this far to print multi-color on a Prusa device.

Once thing that puzzles me - and I am hoping you can help clear it up a little - is why I cannot use the "next_extruder" placeholder without Prusa Slicer complaining about it but you, Rainer, can! 😀 What magic did you do? I was under the impression this placeholder is not supported yet.

Also when I load your profiles, I see a section under "Printer Settings" that reads "Single extruder MM setup". When I add an extra extruder using my own profile it does not show for whatever reason.

If you don't mind explaining in a few words (don't want to take up too much of your precious time) what you have done, it would be great. I am just curious how this works, then I'll shut up.

Big thank you for this thread!

3D Druck für Einsteiger leicht gemacht: www.3d-druck-lernen.de...
Posted : 13/11/2019 9:41 pm
rainer.s
(@rainer-s)
Eminent Member

@wieman01

Have you enabled "expert" under Configuration=>Mode ?
Then under "Printer Settings" => "General"=>"Capabilities" you have to increase the number of extruders to >1
plus all the gcode related changes i did in my profile...

This post was modified 4 weeks ago by rainer.s
Blog: https://schlosshan.eu
Thingiverse: https://www.thingiverse.com/rainers/collections/rainers-customizable-things
Prusaprinters: https://www.prusaprinters.org/social/6508-rainer/collections/6900
Happy printing ;-)...
Posted : 14/11/2019 6:05 am
wieman01
(@wieman01)
Estimable Member
Posted by: @rainer-s

@wieman01

Have you enabled "expert" under Configuration=>Mode ?
Then under "Printer Settings" => "General"=>"Capabilities" you have to increase the number of extruders to >1
plus all the gcode related changes i did in my profile...

Thanks for getting back to me.

Yes, I exclusively work in the expert mode. I increased the number of extruders, however, section "Single extruder MM setup" won't show.

The "next_extruder" command does work only when I load your profiles. If I set up my own G-code from scratch the slicer would complain. Did you do anything else to make the placeholder work for you?

I will further look into this today. I just want to reproduce the steps you did to understand what I am dealing with here and to learn something new and maybe tweak the code a little bit where possible. 😀 

 

3D Druck für Einsteiger leicht gemacht: www.3d-druck-lernen.de...
Posted : 14/11/2019 6:46 am
rainer.s
(@rainer-s)
Eminent Member

@wieman01

strange..
i had it on my list for quite some time to re-create the profile under the latest slic3r version.. so i'll check that when i find some time.

Blog: https://schlosshan.eu
Thingiverse: https://www.thingiverse.com/rainers/collections/rainers-customizable-things
Prusaprinters: https://www.prusaprinters.org/social/6508-rainer/collections/6900
Happy printing ;-)...
Posted : 14/11/2019 6:48 am
towlerg liked
wieman01
(@wieman01)
Estimable Member

Thank you, Rainer. And don't worry about the "Single extruder MM setup" section, I found it. The "next_extruder" thing is what really bugs me.

3D Druck für Einsteiger leicht gemacht: www.3d-druck-lernen.de...
Posted : 14/11/2019 9:24 am
wieman01
(@wieman01)
Estimable Member

Rainer,

Please don't spend anymore time on this, I am onto something. I am making progress... I'll get back to you if I have a solution or further questions if that is okay.

3D Druck für Einsteiger leicht gemacht: www.3d-druck-lernen.de...
Posted : 14/11/2019 10:34 am
towlerg
(@towlerg)
Trusted Member

"i had it on my list for quite some time to re-create the profile under the latest slic3r version.. so i'll check that when i find some time." That was the next question on my list.

So that the solution is generalised, rather than create a new config file perhaps it would be more useful to list the GCode changes.

Also, I think I understand how the virtual extruders works but I'd still like to be absolutely clear about the basic principle. Rather than print a whole layer(s) in a different colour which the slicer allows, you create a .STL with just the text and another STL with just the background and print them so that the thickness is the same across the whole object. During printing of the second colour, do you need to avoid passing the over the area of the first colour? ie when the extruder head is traveling (not extruding) does it clear the 2 or 3 layers you previously deposited?

Sorry to ask so many bone questions but as I say, this is all very new to me. 

Posted : 14/11/2019 11:16 am
Page 2 / 4
Share:

Please Login or Register