Skip to content

Commit

Permalink
Complete EM misconception section, various other tweaks
Browse files Browse the repository at this point in the history
  • Loading branch information
AndrewEllis93 committed Dec 12, 2022
1 parent 6944423 commit 8503717
Show file tree
Hide file tree
Showing 17 changed files with 147 additions and 54 deletions.
23 changes: 15 additions & 8 deletions articles/determining_max_volumetric_flow_rate.md
Original file line number Diff line number Diff line change
Expand Up @@ -98,18 +98,21 @@ If you use the CNC Kitchen method, you may need to temporarily increase your `m

You will follow a similar process to extruder calibration.

1. Heat your hotend.
1. Open your printer.cfg and find the `[extruder]` section. Set `max_extrude_only_distance` to 101 or higher and `RESTART`.\
*(+1 just helps avoid rounding error issues)*

2. Heat your hotend.
- :bulb: Temperature has a large impact on max flow rates.

- If you are going for absolute maximum flow rates, you may want to bump your temperatures. Some people print ABS at 250-270C for this reason. This is a tradeoff, however, as it can also cause oozing, overheating, or material degradation at slower speeds. I personally run higher temperatures for fast functional prints, and lower my temperatures (and volumetric limit) for more decorative prints.

2. Extrude a little bit to ensure your E motor is energized and holding.
3. Extrude a little bit to ensure your E motor is energized and holding.

3. Mark a 100mm length of filament.
4. Mark a 100mm length of filament.
- Use a bit of tape. Stick it at the 100mm mark on a ruler and transfer it to the filament. Using tape makes it quick & easy to mark between tests.
- Since this is a rough test, you can also measure at the reverse bowden inlet/spool. Just pull the slack out of the filament when marking and when measuring.

4. Extrude at increasing speeds.
5. Extrude at increasing speeds.
- At each interval, measure to ensure that ~100mm entered the extruder.
- The gcode uses mm/min, **not** mm/sec, so multiply your desired speed by 60.
- For example, the gcode to extrude at 5mm/sec is:
Expand All @@ -118,18 +121,22 @@ You will follow a similar process to extruder calibration.
G1 E100 F300 ; Extrude 100mm at 300mm/min (5mm/sec)
```

5. Keep increasing speeds and extruding until it starts dropping below 100mm\*. This is your max flow rate.
6. Keep increasing speeds and extruding until it starts dropping below 100mm\*. This is your max flow rate.

- \* See the [:pushpin: "Flow Dropoff"](#flow-dropoff) section and determine your personal dropoff tolerance. I personally try to stay under 2-3% dropoff.

6. Convert the maximum extrusion speed you found to volumetric speed using the [:pushpin: formulas](#formulas).
7. Convert the maximum extrusion speed you found to volumetric speed using the [:pushpin: formulas](#formulas).
- Example: You reached your personal [:pushpin: flow dropoff](#flow-dropoff) tolerance of 2% at **F600** extrusion speed.
- 600mm/min / 60 = 10mm/sec.
- 10mm/sec * 2.4 = **Flow rate of 24mm<sup>3</sup>/sec**.

7. Try extruding a longer distance (say 200-300mm). Ensure that your printer can sustain this flow rate.
8. Try extruding a longer distance (say 200-300mm). Ensure that your printer can sustain this flow rate.

9. Choose a **slightly lower value than your results**.
- Real-world flow rates will be a bit less than your synthetic results.
- Real prints have more resistance to overcome - they have to press against the previous layer, whereas we only tested an ideal scenario with zero resistance.

8. Set your new value in your slicer.
10. Set your new value in your slicer.
- :warning: **In Prusa Slicer, this *must* be managed in the filament settings.** The setting in the "auto speed" section only applies in specific circumstances in PS.

- In SuperSlicer, you should set the volumetric limit in your print profile to a lower "default" value.
Expand Down
2 changes: 1 addition & 1 deletion articles/first_layer_squish.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ I'm going to call it "squish" to be unambiguous. "Z offset" and "z height" can b
> - If using probe as endstop (also known as "virtual endstop"), see [:page_facing_up: here](https://www.klipper3d.org/Probe_Calibrate.html#calibrating-probe-z-offset).
> - If using dedicated Z endstop, follow the same instructions but use `Z_ENDSTOP_CALIBRATE` instead of `PROBE_CALIBRATE`.
> - ![]({{ "/assets/img/voron_small.png" | absolute_url }}) **Vorons**: See [:page_facing_up: here](https://docs.vorondesign.com/community/howto/120decibell/z_endstop_configuration.html#initial-calibration).
> - ![]({{ "/assets/img/marlin_small.png" | absolute_url }}) **Marlin**: Baby stepping must be [:page_facing_up: enabled in firmware](https://github.com/MarlinFirmware/Marlin/blob/bugfix-2.1.x/Marlin/Configuration_adv.h#L2057). (Most printers have it enabled by default).
> - ![]({{ "/assets/img/marlin_small.png" | absolute_url }}) **Marlin**: Baby stepping must be [:page_facing_up: enabled in firmware](https://marlinfw.org/docs/configuration/configuration.html#babystepping). (Most printers have it enabled by default).
![]({{ "/assets/img/voron.png" | absolute_url }}) **Vorons**: See the [:page_facing_up: Thermal Drift](./troubleshooting/first_layer_squish_consistency_issues/thermal_drift.md) article, **even if you are not having any issues.** Thermal drift is in important thing to know about with larger enclosed printers.

Expand Down
Binary file added articles/images/misconceptions/0.4mm_0.2mm.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added articles/images/misconceptions/0.6mm_0.2mm.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added articles/images/misconceptions/overlap_voids.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added articles/images/misconceptions/voids.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion articles/index_troubleshooting.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ has_children: true
- :warning:Thermal Drift
- First Layer Conistency
- Squish Consistency (Between Prints)
[![](/images/first_layer_squish/FirstLayer-Squares-1.png)](/images/first_layer_squish/FirstLayer-Squares-1.png){:target="_blank"}
[![](./images/first_layer_squish/FirstLayer-Squares-1.png)](./images/first_layer_squish/FirstLayer-Squares-1.png){:target="_blank"}

## [Layer Shifting](./troubleshooting/layer_shifting.md)
- Mechanical
Expand Down
132 changes: 98 additions & 34 deletions articles/misconceptions.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,46 @@ nav_order: 9

This is just a list of things that I often see floating around that are, in my opinion, misconceptions or bad advice.

## Two 0.4mm Perimeters = 0.8mm
## Tuning Extrusion Multiplier By Measuring 1-2 Cube Walls

When measuring two walls, you run into the [:pushpin: issue described above](#two-04mm-perimeters--08mm). Two walls does **NOT equal line width * 2**!

In both cases, you are also measuring **layer wobble and inconsistent extrusion**, which all printers and filaments have in some degree. You will always be measuring the bit that sticks out most.

{% comment %}

Please excuse the upcoming vomit I used to bodge this table's widths/spacing

{% endcomment %}


| <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;**Layer Wobble** &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><br> | <br>**Inconsistent Extrusion /**<br>&nbsp;&nbsp;&nbsp;&nbsp;**Filament Diameter Fluctuations**&nbsp;&nbsp;&nbsp;&nbsp;<br><br> |
| :-----------: | :-----------: |
| <br>[![](./images/misconceptions/layer_wobble_marked.png)](./images/misconceptions/layer_wobble_marked.png){:target="_blank"}<br><br> | [![](./images/misconceptions/extrusion_inconsistency_marked.png)](./images/misconceptions/extrusion_inconsistency_marked.png){:target="_blank"} |

- Your measurement will basically **always** be a bit too large because of this!

- Additionally, when making small measurements like this, **small errors become big errors**:

- For example, the difference between 0.42mm and 0.4mm, an only 0.**0**2mm difference, is about **5%**.

- **That's a huge adjustment!** It's very easy to measure 0.02mm off - due to consumer-grade calipers, where you measure, how much layer wobble you have, how much pressure you use, the diameter fluctuations of your filament, what you ate for breakfast, etc...

- You should always make dimensional adjustments based on **larger objects**, where minor errors are proportionally much smaller.*

- *I actually don't like adjusting extrusion multiplier based on measurements at all.\
I don't think it makes sense to have a gappy or rough print just to compensate for dimensions.\
See [:page_facing_up: here](./extrusion_multiplier.md) for how I do it - tune for a perfect top surface, and then adjust slicer settings like shrinkage compensation and horizontal expansion, as needed, to tweak dimensions.*

**This method is, much to my chagrin, extremely prevalent:**
- [https://teachingtechyt.github.io/calibration.html#flow](https://teachingtechyt.github.io/calibration.html#flow)
- [https://help.prusa3d.com/article/extrusion-multiplier-calibration_2257](https://help.prusa3d.com/article/extrusion-multiplier-calibration_2257)\
Even Prusa recommends it!
- [https://3dprintbeginner.com/flow-rate-calibration/](https://3dprintbeginner.com/flow-rate-calibration/)

<sup>Send help. I'm going insane.</sup>

## "Two 0.4mm Perimeters = 0.8mm"

The title is just an example, this applies to any line width or perimeter count.

Expand Down Expand Up @@ -51,69 +90,94 @@ You would put a **spacing** *(or "width & spacing combo" for external perimeters
- Then two lines would equal 0.8mm, three lines would equal 1.2mm, and so on.


## Tuning Extrusion Multiplier By Measuring 1-2 Cube Walls
## "You Shouldn't Tune Extrusion Multiplier, The Slicer Knows Best"
..."e-steps / extruder calibration is all you need to do"

When measuring two walls, you run into the [:pushpin: issue described above](#two-04mm-perimeters--08mm). Two walls does **NOT equal line width * 2**!
<sup>This section was created by heavily referencing [:page_facing_up: Slic3r Flow Math documentation](https://manual.slic3r.org/advanced/flow-math). Prusa Slicer is a fork of Slic3r, and SuperSlicer is a fork of Prusa Slicer. They both use this math as their basis. Other major slicers also use the same math.</sup>

In both cases, you are also measuring **layer wobble and inconsistent extrusion**, which all printers and filaments have in some degree. You will always be measuring the bit that sticks out most.
In a perfect world, the slicer would be perfect, and know exactly how much plastic to extrude. But - nothing can ever be simple, can it?

{% comment %}
### The Assumptions

Please excuse the upcoming vomit I used to bodge this table's widths/spacing
Slicers make some assumptions.\
The first major assumption they make is that extrusion comes out in this exact shape:
- [![](./images/misconceptions/slic3r_cross-section.png)](./images/misconceptions/slic3r_cross-section.png){:target="_blank"}\
[Source](https://manual.slic3r.org/advanced/flow-math)

{% endcomment %}
- The cross-sectional area of this shape is calculated using the formula shown.\
To calculate the volume of plastic needed for a given extrusion line, this cross-sectional area is then multiplied by the length.

Based on the first assumption, a second assumption is then made.

| <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;**Layer Wobble** &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><br> | <br>**Inconsistent Extrusion /**<br>&nbsp;&nbsp;&nbsp;&nbsp;**Filament Diameter Fluctuations**&nbsp;&nbsp;&nbsp;&nbsp;<br><br> |
| :-----------: | :-----------: |
| <br>[![](./images/misconceptions/layer_wobble_marked.png)](./images/misconceptions/layer_wobble_marked.png){:target="_blank"}<br><br> | [![](./images/misconceptions/extrusion_inconsistency_marked.png)](./images/misconceptions/extrusion_inconsistency_marked.png){:target="_blank"} |
- If the extrusion lines did not overlap, you would get voids (highlighted).

- Your measurement will basically **always** be a bit too large because of this!
- [![](./images/misconceptions/voids.png)](./images/misconceptions/voids.png){:target="_blank"}

- Additionally, when making small measurements like this, **small errors become big errors**:
- To fill this space, the lines are instead set to overlap a bit. The colliding plastic is forced out, with the intent of filling these voids.\
The assumption made is that we need to overlap the paths so that the overlapping area equals the void area (of these *theoretical* cross-sections):
- [![](./images/misconceptions/overlap_voids.png)](./images/misconceptions/overlap_voids.png){:target="_blank"}

- For example, the difference between 0.42mm and 0.4mm, an only 0.**0**2mm difference, is about **5%**.
This all provides a convenient and "good enough" model - but it of course ignores countless variables and unknowns (internal stresses, viscosity, extrusion speed, temperatures, the size and location of the unavoidable air gaps, etc.)

- **That's a huge adjustment!** It's very easy to measure 0.02mm off - due to consumer-grade calipers, where you measure, how much layer wobble you have, how much pressure you use, the diameter fluctuations of your filament, what you ate for breakfast, etc...
### A Bit of Guesswork
This is an excerpt from the Slic3r documentation.
- [![](./images/misconceptions/slic3r_spacing_text.png)](./images/misconceptions/slic3r_spacing_text.png){:target="_blank"}\
[Source](https://manual.slic3r.org/advanced/flow-math)
- As you can see, there was basically a bit of guesswork done, and it was chosen to lean on the side of **overextrusion**.

- You should always make dimensional adjustments based on **larger objects**, where minor errors are proportionally much smaller.*
### Demonstration

\* *I actually don't like adjusting extrusion multiplier based on measurements at all. But that's more debatable.\
In my opinion, it's best to print an object with 100% solid infill and tune extrusion multiplier until it fills perfectly without going over. See [:page_facing_up: here](./extrusion_multiplier.md) for specific instructions. Then adjust things like shrinkage compensation in the slicer.\
I don't think it makes sense to have a gappy or rough print just to compensate for dimensions.*
These examples will use a 0.4mm nozzle, and 0.2mm layer height.

**This method is, much to my chagrin, extremely prevalent:**
- [https://teachingtechyt.github.io/calibration.html#flow](https://teachingtechyt.github.io/calibration.html#flow)\
You may notice this guide popping up a lot on this page, as I add more sections....
- [https://help.prusa3d.com/article/extrusion-multiplier-calibration_2257](https://help.prusa3d.com/article/extrusion-multiplier-calibration_2257)\
Even Prusa recommends it!
- [https://3dprintbeginner.com/flow-rate-calibration/](https://3dprintbeginner.com/flow-rate-calibration/)
This shape is actually *impossible* at layer widths below `nozzle size + layer height`.

<sup>Send help. I'm going insane.</sup>
- At the very common line width of 0.4mm (100%), that assumption would look like this:

- [![](./images/misconceptions/0.4mm_0.2mm.png)](./images/misconceptions/0.4mm_0.2mm.png){:target="_blank"}

- See the problem?\
At most common line widths, **this assumption would mean that the extrusion does not even cover the nozzle orifice.** It's **physically impossible** for the filament to "jump" out of the nozzle and create that gap!

- The only way to cover that orifice would be to increase your extrusion width to `nozzle size + layer height` - in this example, that would be 0.6mm (150%).

- [![](./images/misconceptions/0.6mm_0.2mm.png)](./images/misconceptions/0.6mm_0.2mm.png){:target="_blank"}
- Most people don't use line widths this thick, and certainly not for *all* features.

## Tuning Extrusion Multiplier is a Bodge
- To contribute some of my own speculation, I would think that a "0.4mm" (100%) line would look something a bit more like this:
- [![](./images/misconceptions/cross_section_speculation.png)](./images/misconceptions/cross_section_speculation.png){:target="_blank"}
- Just to reinforce: this is **only speculation**. I tried to show some die swell, and to consider that the nozzle orifice must be covered.
- If this were true, that would likely mean more material at the top than at the bottom, and would create larger air gaps at the bottom.

The gap between theory and reality is often larger in reality than it is in theory.
To sum up - we really can't predict **exactly** what the cross section will look like. We also can't say exactly where there will be inevitable air gaps, and how large they will be.

More info to come...
Because of all of this, we can't predict **exactly** how much plastic to extrude. Even if we did know the exact cross section through observation, it could entirely change as soon as you change any one variable.

Slicers just use a convenient and "close enough" model to predict it.

That can only mean one thing - **we have to tweak the extrusion multiplier a bit** based on real-world results, the properties of our specific material, our own temperatures and speeds, and all of the other unknown variables - not just implicitly trust that the slicer's flow model is perfect.

Sorry Angus (Maker's Muse), I love your videos but I have to [:page_facing_up: disagree with you here](https://youtu.be/YPAXeBuq9qU?t=869)!

## "Never Use Cooling for ABS"
While this is valid advice for unenclosed printers, it's not a universal rule.

ABS often needs some cooling. In warmer enclosures, it can need *significant* cooling.\
That's actually one of the advantages of a good enclosure - that you *can* use cooling!

See [:page_facing_up: Cooling and Layer Times](./cooling_and_layer_times.md).

## Using Paper to Set Z Offset

It's fine to get a very rough starting point - but paper is otherwise not to be used for absolute measurements, only relative ones.

More info to come...
*(More info to come...)*


{% comment %}

## "You Should use 100% Extrusion Multiplier"

- https://youtu.be/YPAXeBuq9qU?t=869

## Calibrating Belted Axis Steps

- https://youtu.be/YPAXeBuq9qU?t=166 *(you might notice that this is the third time this video has appeared on this list...)*
- https://youtu.be/YPAXeBuq9qU?t=166
- https://teachingtechyt.github.io/calibration.html#xyzsteps
- https://all3dp.com/2/how-to-calibrate-a-3d-printer-simply-explained/
- https://www.3dbeginners.com/how-to-calibrate-a-3d-printer/
Expand Down
2 changes: 1 addition & 1 deletion articles/pressure_linear_advance/introduction.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ grand_parent: Tuning

{: .prereqs}
> - You should [:page_facing_up: calibrate your extruder](https://docs.vorondesign.com/build/startup/#extruder-calibration-e-steps) first.
> - ![]({{ "/assets/img/marlin_small.png" | absolute_url }}) **Marlin**: Linear advance must be [:page_facing_up: enabled in firmware](https://github.com/MarlinFirmware/Marlin/blob/bugfix-2.1.x/Marlin/Configuration_adv.h#L2104). Not all printers have it enabled by default.
> - ![]({{ "/assets/img/marlin_small.png" | absolute_url }}) **Marlin**: Linear advance must be [:page_facing_up: enabled in firmware](https://marlinfw.org/docs/configuration/configuration.html#linear-advance). Not all printers have it enabled by default.
---
<details open markdown="block">
Expand Down
5 changes: 4 additions & 1 deletion articles/troubleshooting/bulging.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,10 @@ It can also help with extrusion / layer consistency.
- [![](./images/bulging/external_first_1.png)](./images/bulging/external_first_1.png){:target="_blank"}
- [![](./images/bulging/external_first_2.png)](./images/bulging/external_first_2.png){:target="_blank"}

- :warning: This can negatively affect *extreme* overhangs, and occasionally cause some other oddities, so just keep it in mind when troubleshooting. It's generally okay for daily use, though.
- :warning: With external perimeters first, it's especially important to ensure that you have a good [:page_facing_up: stepover](../stepover.md) for your overhangs. It's less resistant to poor stepover.

- External perimeters first can still negatively affect *extreme* overhangs, and occasionally cause some other oddities, so just keep it in mind when troubleshooting. It's generally okay for daily use, though.

- [![](./images/bulging/external_first_3.png)](./images/bulging/external_first_3.png){:target="_blank"}

## Bulging Layers
Expand Down
Loading

0 comments on commit 8503717

Please sign in to comment.