Flushing Volumes Calibration - V2 and new Gcode

Copyright Claim

Flushing Volumes Calibration - V2 and new Gcode

Boost
106
204
67

Print Profile(10)

All
X1 Carbon
P1S
P1P
X1
X1E
A1
A1 mini

up to 4x PLA - 0.4mm nozzle
up to 4x PLA - 0.4mm nozzle
Designer
3.8 h
4 plates
4.9(23)

UNTESTED - up to 4x PLA - 0.4mm nozzle - Volunteers wanted
UNTESTED - up to 4x PLA - 0.4mm nozzle - Volunteers wanted
Designer
2.4 h
4 plates
4.8(4)

up to 4x PETG ABS ASA - 0.4mm nozzle
up to 4x PETG ABS ASA - 0.4mm nozzle
Designer
3.9 h
4 plates
5.0(2)

8x PETG ABS ASA - 0.4mm nozzle
8x PETG ABS ASA - 0.4mm nozzle
Designer
9.4 h
8 plates
5.0(1)
Click to see more

Boost
106
204
67
6
426
255
Released

Description

What it is

V2 of my endeavour to improve multi color printing and depending on how far you choose to optimize:

  1. Basic information & why you may waste filament
  2. 3mf files to dial in flushing volumes for up to 16 filaments
    • this here is v2 with towers → version 1 has its advantages with Orca Slicer
  3. optionally an alternative filament change G-code that provides optimized changes and saves on filament

V1 and V2 calibration prints - advantages & disadvantages

V1

  • independent from nozzle size & filament
  • more precise measurements (2mm³ per mm)
  • currently only up to 1 fully loaded AMS
  • for Orca Slicer (Bambu Slicer only 1vs1 or diagonal)

V2

  • print profile needs to fit nozzle & filament
  • less precise measurement (50mm³ per mm)
  • calibrate up to 4 fully loaded AMS
  • Bambu Studio & Orca Slicer

 

G-code is tested or reported to work with:

  • BambuStudio 1.7.7.89 and 1.8.2.56
  • OrcaSlicer 1.7.0
  • Bambu Lab X1C (P1P, P1S, X1E should work as well)
  • any nozzle size (independent from it)

1. Basics information

The value “Flushing Volumes” set by the user in Bambu Studio is the amount of filament in mm³ that is to be pooped or be flushed into an object. → Attention, it does not go into the optional prime tower, despite that one is printing before any optional object that is bound to be flushed into!

The filament that goes into the prime tower finally is presented separately. It is an additional expense to prime the nozzle after the filament change. With a following retract and pressure advance active by default, a huge prime volume may not be needed anymore.

 

The printing sequence itself makes sense but has some consequences based on the attached calculations.

Once the filament is cut, there are around 107mm³ present between the nozzle and the cutting position and it can't be retracted by the extruder. If a secondary object to flush into “eats” more filament within the present layer than what is specified in the Flushing Volume for that change, no poop may be created. → Great to save filament via printing only a small prime tower (which is required for flush into object), but potentially not so great when it comes to reliability with losing oozed out material from the nozzle or when any retractions would have been required during the 107mm³ that followed.

In the Matrix

Until proper calibration prints are included in slicers, it may be useful to know what to look out for when choosing a flushing volumes calibration print.

  • Filling in all related entries in the flushing volumes matrix, according to the number of involved filaments is a must, but that is where some uploads already leave you stranded half way in - by not including all necessary combinations. Print profiles that only allow for diagonal testing with more than two filaments are of limited use.
  • Calibrating with as little filament as possible is nice. Prints that require guesswork, printing and re-printing until the outcome looks good enough are usually not very efficient nor precise. A measurable outcome ensures reliable results at little work.

2. Dialing in flushing volumes

  • Download & open one of the provided print profiles. → The calibration prints are independent of the used filament change G-code, Bambu Lab's stock code is the preset within the files.

    The files contain various towers. Every 5mm in height a small ridge indicates where a filament change occurs. These 5mm high sections consist of 25 layers, each layer consumes 10mm³ of filament while the single layer base of a tower takes around 400mm³. Modifiers govern the color changes. → 100mm³ roughly equals to 42mm of filament (diameter 1.75mm) in length.
  • In the Filament Tab, make the necessary changes to have it print your individual filaments.
  • In order to get repeatable and measureable results, make sure the concerned flushing volumes are set to an easy value like 100 mm³ (and for good measure the multiplier is 1.00). → A value of 50mm³ allows to observe the resulting color break / mixing of filaments from the very start but may also lead to problems.
  • It is strongly suggested to NOT alter any other settings from the provided .3mf
  • Print it.
  • Via measuring from the start of a section to where the printed section becomes visually flawless in color, the necessary amount of flushing volume for a specific change can be calculated. Formula:
  • The flushing volume tested for in each section is 250mm³. If you find that not to be enough, simply set an initial flushing volume appropriately higher and add it accordingly.
    • Despite setting 0 mm³ of flushing volume there still may be filament dangling from the nozzle after the new filament was pushed into the hotend. Apart from potential oozing, this seems to be a consequence of the AMS's internal code to deliver the filament to the nozzle. → There is nothing I can do about that lost approximately 5mm³ for now.
  • The newly calculated flushing volume in mm³ for the specific material change can now be set in the slicer dialogue.

3. Optimized filament change & save filament

Under “Printer settings” → “Machine G-code” → “Change filament G-code”

  • delete (maybe save it somewhere else) the old change filament G-code in the slicer
  • copy & paste the content from the AMS_filament_change_code_vX.X.X_by_AMT.txt file provided in the source files
  • hit save (as a new user preset) and restart the slicer

From now on the printer will:

  • perform faster filament changes by
    • moving directly from printing to cutting the filament
    • just heating the nozzle to the hotter printing temp of both filaments (either it already has that temp or needs it for the next filament anyway)
  • switch on the printhead light while changing, so you can see what happens back there
  • produce consecutive poops (200mm³ to 275mm³ each) if a flushing volume is greater than 400mm³
  • save a bit of filament on each filament change → please read further down in the “To snuffle a nozzle” section

If you want to know exactly what is going on in the code, what each command is supposed to do or even tweak it a bit yourself, I made lots of annotations.

 

Side note:

If you're using a small nozzle like 0.2mm, double check the set “Max. volumetric speed” (Bambu Lab's variable name, otherwise known as “max. volumetric flow rate”) of your filaments. It regularly becomes a bottleneck that adds several hours to a print.

To snuffle a nozzle

Bambu Lab understandably leaned more towards a stable process under a wide variety of circumstances rather than optimizing for filament efficiency.

Besides the filament specific flushing volumes there also is the option to reduce the constantly lost few mm³ during the filament cutting operation by retracting filament before it is cut. The maximum amount of additionally saved filament by pulling filament back from the melting zone is limited by the length of the filament that already became gooie due to the heat influx.

With a length of approximately 25mm (heated part of the stock Bambu Lab hotend + transition zone) the safe length to retain at each and every filament change could well be 20mm => 48mm³.

Because this maximum length might lead to trouble along the way, the values in the given G-code are set relatively low to:

  • 6.24mm → 15mm³ for PLA & PLA-CF,
  • 8.32mm → 20mm³ for PETG, ABS & ASA,
  • 12.47mm → 30mm³ for PA, PA-CF, PC and PET-CF
  • none for unknown types of filament

If you want to play around with these values, please go for it and report back, more feedback may result in greater savings for all.

A fair warning though: Risking molten filament becoming a problem up in the cold end is a realistic mishap and one would have to save a lot of purging material to offset even one failed print.

Yes, this additional modification is not interpreted by the slicer. The retracted amount seems to go unnoticed within the slicers estimation.

Trivia

The lower recommended flush volume of 107mm³ is based on the hotend volume from the nozzle to the filament cutting blade.

  • Formula: (PI * (1.75mm / 2) ^2) * 44.5mm = 107mm³

A good reason to not set the flushing volumes too low is the wiping process. If there is not enough mass dangling from the nozzle below the wiper, the chances of flinging that material back into the area of operation is greatly increased.

During my trials I found no noticeable difference between purging material at a constant extrusion vs. in a pulsating manner or with little pulses, so constant without slow downs it is.

Troubleshooting

If you get an error, reading something like “machine_start_gcode Parsing error at line…”, you very likely inserted the code at the wrong place. Try again by restoring the start gcode and only replace the code in the “Change filament G-codesection with the one given here.

The here suggested calibration print does the job just good enough, I would prefer a proper & more precise calibration pattern generated by the slicer as well. → If you find yourself here, that probably means still nothing better exist…

The alternative G-code does not do wonders as well, it only is an improvement in details. If your printers poop was an absolute mess before, it very likely will be that way with my code too.

If you have found a bug in my code or would want to have a certain feature, simply tell me about it. I will see what I can do.

Disclaimer

Remember, using my code happens at your own risk. There is a lot to cover when it comes to creating a reliable process over a wide range of (even seemingly identical) machines and materials. - I am not Bambu Lab, instead just a next best dork online who thinks he can improve some stuff and spare you the hassle of doing it. A future firmware or slicer update may result in this code not working properly. Keep that in mind and test/use it with care.

Comment & Rating (67)

Please fill in your opinion
(0/5000)

Print Profile
up to 4x PLA - 0.4mm nozzle
Read the instructions… I didn’t which meant that this came out perfect with no color fading and I had to print again. :-)
The designer has replied
1
Reply
Can someone explain flushing from basic PLA to PLA+ I get a clean line and a faded going in reverse?
0
Reply
Replying to @Simple3D :
This is down to the pigments that are the coloring agents in filaments and the bit of sticking & mixing that happens within the hotend. – It is not specific to PLA vs PLA+. In the pictures I used you may recognize the same with red-green-red while I used PETG. Think of it like this: Putting a drop of red wall paint in a bit of white paint will stain it all, but putting several drops of white into the same amount of red wall paint will very likely go unnoticed. In your case the carbon black (cheap) simply is way more potent or numerous than the orange (expensive benzimidazolone pigments?).
0
Reply
Hello - Finally got around to trying your towers and gcode - all looks very impressive. Currently printing the tower with 100mm3 lengths. In your calculation formula you say 50 (I did get a bit confused about whether I should use 100 - but I understand now) . Will rerun the tests with the same filaments with your updated gcode too. Will be interesting to see how the values determined compare against the BS auto calculated values - will have to try and work out how best to record all of this information and keep track of it so that it is easy to re-apply when swapping filaments around AMS's, both the BL RFID filaments, plus non BL filaments. One other interesting point to note is in the new Beta Bambu Studio Beta 1.8.0.62 they have now separated out the filament usage for the prime tower - which is a good move forward - so you will probably want to update your wording to reflect this at some point. Finally I bought one of those Nix Mini 3 paint colour scanners - with a view to using it for filament colour testing - but I guess it might also be possible to use it to give a more scientific confirmation that flushing is completed with the right design of test model.
(Edited)
The designer has replied
0
Reply
Test results - took a while to figure out how it works and a little tricky to be accurate about where the colour change starts to occur - might try your V1 too. Think I was able to determine though that 100 was sufficient for most changes other than from Blacks. Don't quite understand why my first transition to white via light via light blue gradient filament (Which I guess wasn't a very good choice for a test filament) from black is a slightly orange hue to it. I did print some orange yesterday - but have done black and white before this test print - so surprised that some must be hanging around in the nozzle. Have included new derived lengths, plus what I would have used - based on auto calculate 0.5 multiplier - and it is showing 7 lengths can go a fair bit bit lower - particularly moving out of the blacks. The other 5 are close to 100 - so I can't apply any sort of general rule. Also got one bit of filament dragged into the tower - which I don't usually get. Now onto trying the new Gcode.
0
Reply
Replying to @Ukdavewood :
Nice testing & thx for your commentary so far. I am struggling a bit in writing better instructions for the procedure and its attached details/possibilities… The pigments in the filaments cause very different behavior during flushing. Some give a result of mixed colors over a certain length others show a direct color break with slight contamination afterwards for several mm³ (see attached picture result from V1 below). With my filaments, the BL auto calc. values are usually way off. -> For filaments I may use again, I do record my tested combinations in an MS Excel matrix - analogue to the flushing volumes tab. A small color scanner may be a bit challenged to determine something like a “color okay” threshold. V2 is sufficient to identify when a color became pure. To determine where the color starts to change, how it mixes and when it became pure, V1 is far superior in visualizing the full process. – With its printed rectangles I played around with making pictures and analyzing them in GIMP via color isolation and other tools to differentiate between colors. Good lighting and imaging provided, it seemed like the cheapest scientific approach to me. A general rule for the flushing volumes indeed is not applicable. That is why I do recommend leaving the multiplier at 1.00 and determining the needed flushing volumes with measurable results instead. Mixing pigmented thermoplastics most of the time is hard to predict but (done right) easy to measure. Regarding your orange hue, impurities hanging around in the nozzle for a decent while may seem rare but with injection molding machines it is common to flush the systems with specific material and/or disassemble the entire thing and clean it meticulously before processing other stuff. - Once the new version of BS left the beta state and is out for at least a week, I will update the wording. Filament dragged from the poop chute onto the built plate becomes more likely if the flushing volume is low (section “Trivia”) -> indeed likely during testing with low values. Thanks again, I am looking forward to potentially read about your testing & results with the V1 calibration as well :-)
0
Reply
Replying to @AMT_MW :
Thanks for the response. Will try V1 too - then see what the scanner makes of analysing the squares. Once I have a few more results will do a few more comparisons - for the sake of automation will see potentially write something to patch the config 3mf files with any definitive values - to override the auto calculated values.
1
Reply
Good model to minimise poop, even on a A1 Mini.
1
Reply
Boosted
Print Profile
UNTESTED - up to 4x PLA - 0.4mm nozzle - Volunteers wanted
great print
(Edited)
1
Reply
Print Profile
8x PETG ABS ASA - 0.4mm nozzle
carefully designed gcode. thanks for all the hard work. printed this model with very little purge
1
Reply
Print Profile
up to 4x PLA - 0.4mm nozzle
very helpful
1
Reply
Print Profile
up to 4x PETG ABS ASA - 0.4mm nozzle
Great model and incredibly useful for its purpose. Also I have been using the designer’s filament change gcode and always have massive amount of time saved. Kepp doing what you are doing!
1
Reply
Print Profile
UNTESTED - up to 4x PLA - 0.4mm nozzle - Volunteers wanted
nice calibration test
1
Reply
Print Profile
up to 4x PLA - 0.4mm nozzle
0
Reply
Hi Could you share why not to use with Silk PLA? Is there a risk of damage to a part on the P1S? I wanted to try and use this to blend a few colors together on purpose (Jayo Silk PLA)
The designer has replied
1
Reply
Just curious, where does that statement come from? Calibration prints: I can’t think of a reason why the print files shouldn’t work with PLA Silk. My custom g-Code: Since Bambu Studio labels PLA Silk, Metal, Matte, … as “filament_type = PLA” my code treats it as every other PLA, retracting 6.24mm of filament length (≈15mm³) before cutting. I did not test PLA Silk but would not expect any problems using it in conjunction with my code. To give more of the picture: Bambu Lab tested a different flavor of this retraction approach (by Leon Fisher-Skipper) that retracted roughly three times the length with PLA before cutting and found some issues - especially when using PLA Silk - resulting from softened material reaching the cutting zone. Link: https://github.com/bambulab/BambuStudio/pull/3100 As pointed out in the description, my included values are conservative - leaving it up to the individual user to inch closer to a potential edge.
0
Reply
Replying to @AMT_MW :
Thanks for the reply! I will give it a try with Jayo Silk PLA and other Amozon purchases.
0
Reply

License

This work is licensed under a Standard Digital File License.

You shall not share, sub-license, sell, rent, host, transfer, or distribute in any way the digital or 3D printed versions of this object, nor any other derivative work of this object in its digital or physical format (including - but not limited to - remixes of this object, and hosting on other digital platforms). The objects may not be used without permission in any way whatsoever in which you charge money, or collect fees.