Bottom Surface Flowrate

Thoughts about Raise3D, 3D printing and making in general.
Jetguy
Posts: 3107
Joined: Tue Mar 22, 2016 1:40 am
Location: In a van, down by the river

Re: Bottom Surface Flowrate

Postby Jetguy » Wed May 27, 2020 2:42 pm

Earlier on, you asked a good question, so lets see if I can try to answer that one.
How the slicer creates gcode- not the way you worded the question but what you basically asked.

You give the slicer the following variables
Layer height (basically nozzle to previous layer or nozzle to bed gap for first layer)
Extrusion width (note, you might give a slicer nozzle size, and based on that it auto calculates extrusion width on a formula of nozzle size to layer height)
Filament diameter- key aspect is this variable is used to create the individual extrusion lengths for any line of gcode
The STL file gives the outline shape and dimensions, and the slicer uses extrusion width to determine the placement of line paths within the outline shape of a given 2D layer.

So, first operation, the slicer cuts the logical STL file 3D model into 2D layer slices not unlike taking a ham and putting it onto a meat slicer.
Then we take that layer slice, and it's an outline shape. We use the extrusion width to draw a perimeter path that falls INSIDE the outline by 1/2 the extrusion width. Remember, there are no such thing as curves, so all curves are actually multi segmented polygon like straight lines.
Next, we generate the infill pattern of parallel lines side by side, space again based on extrusion width.

But here is the hard math part. You gave the slicer the ideal measured diameter of the incoming filament wire. The wire filament represents a cylinder of infinite length. So for each gcode segment (those short straight lines that make up the print, they contain 3 values) You have the XY target coordinate and last a linear length of filament commanded to be pushed into the extruder. That length is calculated based on extrusion width, layer height, and then that segment length (the length of the XY motion). Again, from those 3 values (height, width, and length) is a 3D space or volume. Volume in= volume out of the nozzle. We feed in 1.75mm (nominal) filament and get out a hot noodle the nozzle size. Again, this is why measuring and entering ACTUAL measured filament diameter of the incoming filament of a given spool is needed, because MOST filament is NOT 1.75mm exactly, more often it's about 1.8-1.83mm. That extra diameter matters because for every linear mm of filament pushed in, that's more volume of plastic coming out that expected if you left the slice thinking it was 1.75mm.
Worse, the flow rate tuning factor is so misunderstood. The original usage was such that if you followed the above suggestion to properly measure and tell the slicer actual filament diameter, then flow rate tuning should be less than 3% change from 100% plus or minus for fine tuning. Again, let me recap this most important step. A line of gcode is a segment, and a segment is a cylinder of a known width (extrusion width) height (layer height), and length (the length of the XY nozzle moved distance based on the distance of the previous gcode target position to this new target position) A cylinder has a volume, and that volume is then used to figure out how must distance of the 1.75mm (nominal) filament = the same volume. That distance is now the E extrusion distance in that line of gcode. What I'm getting a is, let's call that plus or minus 3% maximum flow rate change from 100% is to compensate for errors in what you measured the actual filament diameter to be VS what you told the slicer, or other minor geometric fudge factors to fine tune and compensate for. Really probably closer to 1% when done right.

But here lies the other physical side of the equation. The assumption is your printer follows the gcode exactly and precisely. The nozzle moves in XYZ just fine. The problem MOST printers have is the assumption it's following the extrusion distance right. The grip of the feeder mechanism and the steps per mm are setup to be reasonably close from the factory. Where this goes wrong is as different filaments are used (ABS VS PLA) well that wire filament is gripped slightly different in how far the teeth bite into the side of the filament resulting in the motor turning the same distance as commanded, but different actual lengths of filament moved. So Flowrate is traditionally used to compensate for that difference in the side hardness of the filament and how the extruder feeder grips it. That's where those crazy NON 100% flow rates you see defaulted into filament profiles in ideamaker are coming from!!!!!

So you've really got to do a couple of things:
#1 check the printer with a given filament ensuring the current flow rate on the LCD is showing 100%, command 100mm of extrusion using the jog panel of the display and measure how much filament was actually extruded by drawing a line using a sharpie marker on the incoming filament above the extruder 100mm before starting the test, then how much actually extruded- the line should be right at the entrance to the extruder. This gives you an idea of the basic physical performance of the printer. Again, keys are ensuring the current flow rate which might have been left at a non 100% value by a previous print is actually at 100% before starting the test. If the machine extruded less than the 100mm commanded, then increase flow rate over 100% and try again until you get exactly 100%. This will give you a baseline compensation value for that filament and it WILL VARY between different filaments. Again, this is complex standalone not even using the slicer, you are simply using the printer and it's control panel.

#2 Then you have to again baseline your print profile including filament profile and enter that experimental information you just gathered. Mainly actual filament diameter of that specific spool of filament wire and the specific tuned flow rate for that filament to actually exude 100mm of filament when commanded 100mm of filament.

#3 Then you do that extrusion volume testing and finely tune the final floret value to get that perfect filled 100% solid print. We use 100% infill on that print because we cumulatively fill each layer and so even a less than 1% accumulates into either over or under extrusion very visibly allowing you to properly fine tune flow rate and see the result. Bottom line, that test gets you about 99.999% of the way to a best possible print in most cases.

What I'm trying to get you to understand is how flow rates in the slicer affect this math.
Flow rates beyond the basics above (example a layer flow rate or some other layer or feature specific value) effectively are changing the E lengths in the gcode from the "ideal".

Basically the 2 sides to this are:
Ensuring you give the slicer the physical information variables (nozzle size, filament actual wire diameter, one tuned flow rate info based on a test of 100mm commanded vs how much extruded ) such that it can create gcode that represents the ideal values (distances) to command the printer

Then the printer reading and using that gcode and actually moving and extruding that exact linear distance of the filament when commanded.

If those 2 are all working together, you get that ideal print. When they aren't, you start adjusting values in the slicer- hoping to compensate for errors the extruder is unable to print the commanded liner distance of filament and your print is either under or ever extruded.

Under extrusion stretches the hot noodle of plastic, results in poor layer bond, gaps between adjacent lines of extrusion, poor bed adhesion, just generally a bad print.

Over extrusion results in print deformation, eventually the nozzle plowing through the layers of the plastic leaving a plowed field look.

Compensating for under extrusion by changing "extrusion width" generally results in a printer error of dimensional accuracy because now the path of the nozzle is not spaced compared to the outline, and then again, in general, spacing to compensate for under extrusion just results in a less than ideal print.

Conversely, adjusting flow rate is also dangerous as if doing it for one layer or aspect only like first layer- can then cause volume errors and thus print errors in the rest of the print.

My thought is, entirely possible you attempted to use first layer slicing variables and flow rate and extrusion width to compensate for the fact that layer height set by the actual physical first layer nozzle to bed distance resulted in widely wrong values and further compensation efforts have just jacked up your tuning and understand of all of this to the opposite end of the spectrum. That may not be "the answer" that you nozzle gap to bed was the sole source of all of this, but again, it's a methodical understanding of the variables, how and what they do, why you adjust them that is needed. Just throwing adjustments willy nilly wasn't working.

Also, as if all that wasn't a pain in the rear enough- remember back when I said Ideamaker has some wonky flow rates stored in extrusion files? Yeah, so every print you've been probably making, your print files leave the printer in a state where it's no longer set to 100% flow rate in firmware. Unless that next print file or even your testing using the control panel corrects back to 100% flow rate, then you get errors in what you thought or commanded that extruder to do VS what it actually prints. Which is why I had to go and edit all my profiles, edit my starting and ending gcode in the slicer to ensure I started with 100% baseline flow rate, and then let any compensating factors change form that default 100%. Worse, you must edit the ending gcode- because as a principle of operation- the ending gcode should always return the machine to a baseline state. Tell you right now- I bought this up a LONG while ago and Raise 3D to my knowledge never fixed this in versions of ideamaker.

User avatar
Vagulus
Posts: 189
Joined: Mon Mar 25, 2019 5:27 am

Re: Bottom Surface Flowrate

Postby Vagulus » Thu May 28, 2020 3:36 am

Hi Jetguy

This concept of "Extrusion Volume" sounds very like it will leads somewhere. We have already established that 'flowrate' in ideaMaker and 'Tune --> Feed Rate' in the firmware are a proverbial Garden Path. This sounds much more concrete. ;)

1. To my surprise a micrometer check of the filament I will use gave a quite consistent diameter with a mean value of 1.711 mm.

2. I have duplicated the Standard Issue Template 'Std - Pro2 - PLA' and will use the duplicate for the experiment.

3. I have created the STL of a 40x40x10 mm slab.

4. Clearance Setting

#2 THEN ensure you set the nozzle first layer mechanical homed gap
corresponding to your expected first layer height- now larger with the
lager nozzle.


This relates to your statement in the previous post,
You failed to also calibrate first layer nozzle gap when homed when
you changes nozzles. Yes, a MECHANICAL adjustment.


Given that I am testing 0.8 mm nozzles we haven't yet discussed 'First Layer Height' or any Layer Height for that matter. Do I use 0.64 mm being 80% of nozzle diameter?

Now for the Mechanical Adjustment:
What do you mean by "... set the nozzle first layer mechanical homed gap
corresponding to your expected first layer height ...
"? Standard Clearance is 0.2 mm for 0.4 mm nozzles - i.e. it is related to nozzle diameter not layer height. What do I set the clearance to - 0.4 (half the nozzle diameter) or 0.64 mm (First Layer Height)?
--------------------------------------------
God so loved the World that
He did not send a Committee

User avatar
Vagulus
Posts: 189
Joined: Mon Mar 25, 2019 5:27 am

Re: Bottom Surface Flowrate

Postby Vagulus » Thu May 28, 2020 3:51 am

Continues ...

5. You say to perform the test - presumably that means printing the 40x40x10 mm slab and looking at the top surface. I am going to assume here that this testing is iterative - that I print the slab; look at the surface and decide if it is under or over extruded; make some adjustment; print it again; and so on until satisfied. My question here is, "What do I adjust?"

Please, in answering this, use the Parameter Name given in the ideaMaker interface. Please don't say, "Change the rate! because I won't know precisely what you are saying.

6. You write:
#4 Then save that flow rate and other tuning details back into the
print profile and attempt to fine tune your actual part you are trying to
print.


Here's our dearly beloved 'flow rate' back again :?

Here I would expect to be transcribing the empirically devised parameters from the Experimental Template into my Working Template. It's best if we discuss that using ideaMaker's names as well.

I appreciate the effort you are putting into this and I hope I am actually getting the point.
--------------------------------------------
God so loved the World that
He did not send a Committee

User avatar
Vagulus
Posts: 189
Joined: Mon Mar 25, 2019 5:27 am

Re: Bottom Surface Flowrate

Postby Vagulus » Sat Jun 20, 2020 7:40 am

Hi Jetguy
Covid-19 didn't get me or anything - I have spent the past few weeks wrestling with the issue of printing with 0.8 mm nozzles. After a few days with acceptable results I think I can comfortably send you a copy of the template I have devised (attached). I am using eSun PLA+, bed temperature 50C and with a spray of a PVA-based adhesive.

One major issue remains: the matter of having support material the provides support but can still be readily removed from the model. My conclusion is that the solution lies with whoever wrote ideaMaker.

ideaMaker defines the offset from model to support in terms of Integer multiples of Layer Height. Using 0.8 mm dia. nozzles I have my layer height set to 0.64 mm. Zero offset obviously sticks the support to the model permanently and an offset of one layer height (0.64 mm) is too great. Using Slic3r I found an offset of about 0.3 mm to be satisfactory. That is about one layer height when you are using 0.4 mm dia. nozzles.

Would you be so kind as to give this template a workout and see if you can come up with a solution.

The other issues we were discussing were (mostly) resolved by attention to filament diameter of the batch in use (microns are critical) and printing head speeds.

1. How much filament material is melted and deposited is a function of the drive-wheel rpm and the diameter of the filament. This 'flowrate' is calculated by ideaMaker taking in to account the speed of the printing head. The user has no control here except making sure that ideaMaker is working from accurate information. This is the old Software Engineering axiom "GIGO" (Garbage In, Garbage Out). If ideaMaker thinks the filament is 1.75 mm in diameter and it is in fact 1.699 mm in diameter then the flowrate will be out of whack. Hence the need to get accurate information. I take ten measurements of a new batch of filament with a micrometer and feed the average into ideaMaker in microns. That's a bit of a fuss but it made a profound difference.

2. I took a copy of a standard template and changed the nozzle size. ideaMaker came up with print head speeds more than twice what has proven to work effectively. Believe me there was a lot of wasted time and filament before I corrected that matter.

Anyway, this template works alright apart from the support/model interface. The surface finish leaves a little to be desired but at the moment I am happy with the results I am getting and I am finally getting some work done.

Stay well

Thanks

Stay well
Attachments
08 Standard-export.bin
(20.68 KiB) Downloaded 28 times
--------------------------------------------
God so loved the World that
He did not send a Committee

Jetguy
Posts: 3107
Joined: Tue Mar 22, 2016 1:40 am
Location: In a van, down by the river

Re: Bottom Surface Flowrate

Postby Jetguy » Wed Jul 01, 2020 7:15 pm

Vagulus wrote:Hi Jetguy
One major issue remains: the matter of having support material the provides support but can still be readily removed from the model. My conclusion is that the solution lies with whoever wrote ideaMaker.

Let's define and make sure we understand the 3 variables that affect a layer to previous layer bond -examples- breakaway support and raft, where we intentionally want to make a weak layer bond. Those 3 variables are the gap or height the nozzle is compared to the previous layer AND how hot the new layer being put down is (extrusion temperature), AND how much time the previous layer has had to cool and solidify (how large the object layer is, overall speed, and other factors) before the new layer is put on top.

ideaMaker defines the offset from model to support in terms of Integer multiples of Layer Height. Using 0.8 mm dia. nozzles I have my layer height set to 0.64 mm. Zero offset obviously sticks the support to the model permanently and an offset of one layer height (0.64 mm) is too great. Using Slic3r I found an offset of about 0.3 mm to be satisfactory. That is about one layer height when you are using 0.4 mm dia. nozzles.

So yes, a full layer height on a large nozzle has greater implications. The larger hot noodle of plastic being put down ALSO has a different contact patch and worse, holds more heat for longer time thus does NOT solidify as fast as a smaller nozzle print. You CANNOT just focus on one variable here and get the results you want. YOU MUST take into account ALL factors, specifically properly calibrate a much more exact extrusion temperature, focus much more on minimum layer time and speed, and last, yes, be conscience of layer gap.

The point I'm trying to make here is what works for one print does not work for another print. A small print has shorter layer time, and with a larger nozzle, even MORE cooling is required to get that layer to solidfy. Conversely, if you want to make a breakaway layer, you now need to intentionally make a weak layer bond. You then use the 3 variables- extrude at a LOWER temperature for a given plastic, print slower and or more copies of smaller objects to increase layer time and thus time for cooling of that layer, and then last, we fine tune the intetional layer gap so as not to have the layer distort from too large of a gap, but also, not smash the current layer into the previous layer thus inceasing the layer bond.

The number one mistake I see is a user printing something relatively small (say and object less than 50mm, maybe even 30mm in any one direction), one copy, and thus limited layer time, nary concept one of lowering extrusion temp or how to even tune extrusion temp, and then wondering why raft or support is now fused into the model. They stupidly increase the gap to just insane values so literally we are no longer supporting the layer, and wonder why their print is still crappy. Worse, nary the concept of making a couple of copies of the object on the build plate at a print and how that can make a print from being a problem to magically printing as desired.

Your coins are that kind of example that printing one set stacked might not work, but 4 sets arranged on the build plate results in totally different results (no longer fused to the support layer) all because we have no forced a much longer layer total time before the next layer is now printed on top


Would you be so kind as to give this template a workout and see if you can come up with a solution.
I would, as soon as I finish fixing my N1.

The other issues we were discussing were (mostly) resolved by attention to filament diameter of the batch in use (microns are critical) and printing head speeds.

1. How much filament material is melted and deposited is a function of the drive-wheel rpm and the diameter of the filament.
Stop, do not think in terms of RPM. It's VERY important to get this- all gcode is DISTANCES. There are distances in gcode, not RPM.
Example, a line of gcode looks like G1 X25 Y100 E3.4 F6000
G1 is the command, X25 is the target position in X, meaning X=25mm from 0. Y100 is 100mm in Y, E is 3.4mm linear mm of filament fed into the extruder. F6000 is 6000mm/minute or 100mm/s. Now, the kicker- understanding if we started at 0 on the previous line X0 Y0 E0, then we are moving in a diagonal line to coordinate X20 Y100 and while doing that move, we also extrude 3.4mm of filament. So giant hint- speed is NOT the same for all 3 axis is it? The longest move is 100mm, the shortest move is 3.4mm, they ALL start and stop at the same time.
So, there is ONLY one speed listed, how does that work? The answer again is, all distances START and STOP at the same time, and a speed limit of 100mm/s, meaning that the LONGEST distance then determines the overall speed. So the longest distance is 100mm so that defines the top speed of the total move, so the moves takes 1 second. But for X we move 20mm in one second, and E, we move 3.4mm in one second.


This 'flowrate' is calculated by ideaMaker taking in to account the speed of the printing head.
Completely and utterly incorrect. Flow rate is a multiplier or modifier value. Often fixed value (example a filament profile having a 90% flowrate for a given filament) for large portions of the print. It is primarily used for fine tuning mistakes in overall volume of plastic (example, slicer was given 1.75mm diameter filament value, but actual filament wire used was 1.83mm. What actually happens is your slicer thinks in 3D. A line segment as seen in preview is a 3D object wwith height, length, and width- thus a logical volume of space. The slicer then uses the info you gave it about the filament (diameter) to then calculate how much linear distance filament = that volume of that line segment. (Remember that 3.4mm E value in the above segment 100mm long example gcode)
Gcode preview showing segments.jpg

The user has no control here except making sure that ideaMaker is working from accurate information. This is the old Software Engineering axiom "GIGO" (Garbage In, Garbage Out). If ideaMaker thinks the filament is 1.75 mm in diameter and it is in fact 1.699 mm in diameter then the flowrate [color=#0000FF]E distance values in resulting lines of gcode[/color] will be out of whack. Hence the need to get accurate information. I take ten measurements of a new batch of filament with a micrometer and feed the average into ideaMaker in microns. That's a bit of a fuss but it made a profound difference.
Yes, it will. A tiny error of just 0.1mm diameter on filament, for every linear mm of filament adds up to a large amount of volume (in relative terms). Again, the slicer uses filament diameter in the math used to make every single line of gcode and determine the E length distances.
Flowrate then modifies HOW the firmware executes E distances values, multiplied by that percentage.


l
Last edited by Jetguy on Wed Jul 01, 2020 7:58 pm, edited 2 times in total.

Jetguy
Posts: 3107
Joined: Tue Mar 22, 2016 1:40 am
Location: In a van, down by the river

Re: Bottom Surface Flowrate

Postby Jetguy » Wed Jul 01, 2020 7:20 pm

I just want to make it clear.
I am NEVER impressed with Ideamaker. It was an OK bare minimum slicer in the beginning.
Then they started listening to ever Joe and Jane user and adding features poorly, and causes so many problems I just cannot even stand to use it anymore. So yes, the support and gap options, dozens of other issues throughout.
And yes, they put flowrate percentages on everything, some affect the global flowrate multiplier, some put in the gcode as the M221 command, others just modify the E lengths before the gcode file is made, some overlap and override, it's a flipping disaster.

Jetguy
Posts: 3107
Joined: Tue Mar 22, 2016 1:40 am
Location: In a van, down by the river

Re: Bottom Surface Flowrate

Postby Jetguy » Wed Jul 01, 2020 8:20 pm

Temperature tuning as a topic.
Plastic has a range of temperature that we often work in.
One example is that many plastics have a temperature that is not melting, but the material loses mechanical strength and becomes like a cooked noodle rather than semi rigid solid filament. That is the glass transition temp and the lowest of the temp range.
Then we have melting temp the point the plastic actually becomes liquid and can flow. This too is at the lower of a range of temperature.
WE DO NOT PRINT AT MELTING TEMP!!!! Important concept moment.
If we just barely melt the plastic just enough to flow through the nozzle, it then does not have enough heat energy to then bond to the bed surface or a previous layer!!! AKA we might be extruding- we are not 3d printing!!!
We then increase the temperature slightly above melting- again a range here, so that it's melted and hotter than melted, so that it will deform and heat and melt into and bond to a previous layer.
TOO MUCH HEAT- as we go higher in the temp range, we put in so much heat, the plastic now retains too much heat after flowing out the nozzle and thus melts and deforms the previous layer causing drooping and sagging, poor overhang performance, solid fusing to previous support material and other problems where we need the plastic to solidify and not melt surrounding plastic.
Even more heat eventually, we degrade the plastic and cause blockages and burning dripping mess of the plastic.

Last, depending on the plastic, there is also a cooling cycle where it goes from liquid back to solid. Depending on a bunch of factors, this is very plastic specific and also depends on the cooling air, nozzle size, layer height, and dozens of other factors. Bottom line, bigger is slower to solidify, more prone to retaining heat and bonding better to previous layers (good when going for a strong part- bad when it's a raft layer or support brekaway layer).


Point being, there is a range and it's up to you the user to dial this in on test prints for a given nozzle size and plastic.
You are both tuning to put in enough heat to make the best layer bond, but not too much heat that the solidification process is slowed and your print deforms and droops- or in the case of
A bigger nozzle puts out more plastic volume, the larger plastic noodle being put down, the more time it's going to take before that cools and becomes solid.

So how to tune?
I tune by finding the lowest temp the extruder can feed. That's where you are finding that true melting vs not melting temp. Then raise slightly higher (5-15C) and that's starting temp testing printing temp. Then we are looking for that range where 5-10C cooler results in a very dry or dull print finish and weak layer bonds. Going hotter results in stronger layer bond and a shinier surface. Going too hot results in a very strong layer bond but poor overhangs drooping and supports bond too well and raft is impossible to remove.
Again dull finish- cold end range of printing. Possibly add 5-10C hotter.
Shiny finish- too hot, subtract until you get dull finish, then add upwards in no more than 10C test increments.


Now keep in mind all I previously said.
Let's say you have a stacked print, you are trying to make a poor layer bond and that is sticking too well.
First step is trying printing multiple copies. This increases layer time, thus increasing cooling time BEFORE a hot layer is printed on top of the previous layer. This solves the problem a lot of times.

If that's not getting the result, then fine tune extrusion temperature towards the colder end of the range. Now we are putting less heat into the plastic, thus less layer bonding, thus less cooling time required. Problem is, this is a balance, we hurt overall print quality and strength depending on where we are in the range of temps.

Last- then we start trying to figure out this layer gap thing.

User avatar
Vagulus
Posts: 189
Joined: Mon Mar 25, 2019 5:27 am

Re: Bottom Surface Flowrate

Postby Vagulus » Tue Jul 07, 2020 10:49 pm

Wow! :roll: Thanks for all that.

I am just getting back to this and it will take a while to digest all you have written (and finally get my Pro2 working with both extruders :evil: ) then I'll start tuning as you suggest.

As the nice man said, "I'll be back!" ;)
--------------------------------------------
God so loved the World that
He did not send a Committee


Return to “General”

Who is online

Users browsing this forum: No registered users and 1 guest