Skip to content

Commit

Permalink
big chungus update
Browse files Browse the repository at this point in the history
  • Loading branch information
AndrewEllis93 committed Apr 16, 2022
1 parent 95d79b5 commit 8ce58ab
Show file tree
Hide file tree
Showing 14 changed files with 178 additions and 79 deletions.
5 changes: 5 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,9 @@ This guide was originally written for the Voron community, however all of the tu
- Methods I'm Not a Fan Of
- Method
- The Relationship Between Pressure Advance & EM
- [PA / EM Oddities](/articles/pa_em_oddities.md)
- Slight Perimeter Gapping
- Slight Corner Gapping
- [Cooling and Layer Times](/articles/cooling_and_layer_times.md)
- Signs of Overheating
- How to Fix It
Expand All @@ -57,6 +60,8 @@ This guide was originally written for the Voron community, however all of the tu
- Approximate Values
- How Volumetric Flow Rate Relates to Print Speed
- Method
- Theory vs Reality
- Formulas
- [Determining Motor Currents](/articles/determining_motor_currents.md)
- Determining Initial `run_current`
- Determining Maximum `run_current`
Expand Down
13 changes: 10 additions & 3 deletions articles/build_surface_adhesion.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,12 @@

- **:warning: Thoroughly wash all build plates with dish soap and water** (and make sure to rinse thoroughly too).
- You should do this even for brand new surfaces.

- Isopropyl alcohol does not do a great job of cleaning oils. It mostly just spreads them around.

- I keep a spray bottle of (SLIGHTLY) soapy water next to my printer. Using a paper towel, I scrub with soapy water, then again with isopropyl alcohol (IPA) to remove the remaining soap residue.
- Soap is not needed for every print. You can use IPA most of the time, with occasional soap when it needs further refreshing.

- Soap is not necessary for every print. You can use IPA most of the time, with occasional soap when it needs further refreshing.


- User a proper first layer temperature.
Expand All @@ -30,8 +33,9 @@

- Instead of PEI (or to supplement your PEI), you can use adhesives like [:page_facing_up:Vision Miner Nano Polymer](https://smile.amazon.com/dp/B09JQWFVY3/ref=twister_B09JRGDWFT).
- (Not sponsored) This stuff is excellent.
- Dilute it 1:1 to 3:1 isopropyl alcohol to adhesive - it will last longer and is much easier to spread.

- There is a $19 50ml bottle on Amazon but it's not always in stock. 50ml goes a long way, especially if you dilute it.
- Dilute it 1:1 to 3:1 isopropyl alcohol to adhesive - it will last longer and is much easier to spread.
- It grips like crazy.
- (Though sometimes it grips *too* much. It can pull chunks out of glass or pull texture off of beds if too much is used. Less is more!)
- It doesn't leave sticky residue (it does leave some slight whitish coloring though, which can be easily cleaned with IPA)
Expand All @@ -42,10 +46,13 @@

- **Scuff it up** with a [:page_facing_up:kitchen scouring pad](https://www.scotch-brite.com/3M/en_US/scotch-brite/tools/~/Scotch-Brite-Heavy-Duty-Scour-Pad/?N=4337+3294529207+3294631680&rt=rud).

- Some people choose not to do this, to keep the glass-like surface finish on their prints. However, you will be sacrificing adhesion and may need to use brims and/or adhesives on occasion.

- ~800-1000 grit sandpaper, or even the scrubby side of a fresh sponge may also work.

- **This helps immensely**, much like how you would scuff/sand a surface before painting or gluing something to it.
- You can refresh the surface this way on occasion, just remember to wash it again afterwards.

- You can refresh the surface this way on occasion, just remember to wash it again afterwards.

## Textured PEI

Expand Down
76 changes: 45 additions & 31 deletions articles/determining_max_speeds_accels.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,48 +11,62 @@ You may be able to get higher performance out of your motors by increasing curre
For example my 2a 0.9° LDO motors top out around 450mm/s. My 2a 1.8° OMC motors topped out closer to 700-800mm/s.
## Method

Tune maximum speeds first, THEN tune accelerations separately.
Tune maximum accelerations first, THEN tune speeds second.

Note: input shaper will affect these values. You may need to run through this again if you enable or disable input shaper.

**1)** Add [:page_facing_up:this macro](/macros/TEST_SPEED.cfg) to your `printer.cfg` file.

**2)** If you are already pushing high accels, then lower your `max_accel` in your config to something closer to "stock" and `reload`.
- Reference the stock Voron configs for a reasonable starting point.
- Some wild guesses:
- Linear rail CoreXY: *3000mm/s²*
- Linear rod CoreXY: *2000mm/s²*
- Bed slinger: *1000mm/s²*
- `max_accel` needs to be high enough to actually *reach* full speed in a given print volume, but low enough to not risk causing skipping on its own. **This is purely to isolate variables.** You will come back and tune actual max accels later *(step 8)*.
- You can use the "acceleration" graphing calculator at the bottom of the page [:page_facing_up:here](https://blog.prusaprinters.org/calculator_3416/) to verify that you will be reaching max speed.
- For example, for a 300mm linear rail CoreXY printer:
- Note that the test pattern is **inset 20mm by default** (to help avoid collisions). Hence the distance of **260mm** *(300-20\*2)*.
- The **blue line** shows that a max speed of 500mm/s is actually being reached and maintained.
- ![](/images/TEST_SPEED_Calc.png)
- This graph also shows (the **yellow line**) that we would max out a bit under **900mm/s** at this acceleration/distance.


**3)** Run the `TEST_SPEED` macro using the [:pushpin:instructions below](/articles/determining_max_speeds_accels.md#usage-of-the-test_speed-macro) with increasing speeds [:pushpin:until you experience skipping.](#determining-if-skipping-occured)
**2)** If you are have increased your `max_velocity`, lower it back to the original value (check the stock configs for your printer) and `RELOAD`.

**3)** Fully heat soak your printer.
- Ideally the test should be run at the same chamber temps as your actual printing conditions.

**4)** Run the `TEST_SPEED` macro using the [:pushpin:instructions below](/articles/determining_max_speeds_accels.md#usage-of-the-test_speed-macro) with increasing accelerations [:pushpin:until you experience skipping.](#determining-if-skipping-occured)
- Start with a small number of iterations.
- Example: `TEST_SPEED SPEED=350 ITERATIONS=2`
- Once you experience skipping, back the speed down and try again until you no longer get any skipping.
- Example: `TEST_SPEED ACCEL=5000 ITERATIONS=2`

- Once you experience skipping, back the acceleration down and try again until you no longer get any skipping.

**5)** Once you have found a rough maximum, run the test again with a large number of iterations.

**4)** Once you have found a rough maximum, run the test again with a large number of iterations.
- This is essentially an extended torture test.
- Example: `TEST_SPEED SPEED=400 ITERATIONS=50`
- Example: `TEST_SPEED ACCEL=5000 ITERATIONS=50`

- If you experience any skipping during extended tests, back the speed down again.

**5)** *Use a slightly lower value than your results.*
**6)** *Use a slightly lower value than your results.*
- Sometimes a maximum that works perfectly, even in extended torture tests, can skip during actual prints. Go a bit lower for a margin of safety.

**6)** Save your new maximum velocity to `max_velocity` in your config.
**7)** Save your new maximum acceleration to `max_accel` in your config and `RELOAD`.
- Set your `max_accel_to_decel` to *half* of this value.

**7)** Return your `max_accel` in your config to its previous value. *(changed in step 2)* and then `reload`.
**8)** Use the "acceleration" graphing calculator at the bottom of the page [:page_facing_up:here](https://blog.prusaprinters.org/calculator_3416/) to find the theoretical maximum speed for your acceleration/print area. Remember it for the next step.

**8)** Repeat the process, this time increasing accelerations rather than speeds.
- Example: `TEST_SPEED ACCEL=400 ITERATIONS=2`
- This is only a *theoretical* maximum. I will explain more in the next step.

**9)** Save your new maximum acceleration to `max_accel` in your config and `reload`.
- Set your `max_accel_to_decel` to *half* of this value.
- For example, for a 300mm printer*, with a max accel of 3500:

- \* Note that the test pattern is **inset 20mm by default** to help avoid collisions. Hence the distance of **260mm** *(300-20\*2)*.

- The "desired speed" field is arbitrary for our purposes. Enter anything or use the default.

- This **yellow line** shows that we would theoretically max out a bit over **900mm/s** at this acceleration/distance.
- ![](/images/TEST_SPEED_Calc.png)


- The **blue line** just shows how far a given speed would be maintained (400mm/s in this example - arbitrarily chosen)

**8)** Repeat the process (steps 1-6), this time increasing speeds rather than accelerations.
- Keep in mind that you can **only go up to the theoretical maximum value you found in the previous step.**
- In most cases, this is very high and a non-issue.

- In some cases, however, you may be wondering why you can achieve seemingly "infinite" speeds. This probably means that your speed you are requesting is not actually able to be reached!

- Once again, run an extended "torture test" once you find your rough limit.
- Example: `TEST_SPEED SPEED=450 ITERATIONS=50`

**9)** Save your new maximum speed to `max_velocity` in your config and `RELOAD`.
## Usage of the TEST_SPEED Macro

The macro is available [:page_facing_up:here.](/macros/TEST_SPEED.cfg)
Expand All @@ -77,22 +91,22 @@ You will [:pushpin:watch, listen, and compare the terminal output from before/af
`max_velocity` and `max_accel` from your config.
### Examples

- `TEST_SPEED SPEED=350 ITERATIONS=50`
- `TEST_SPEED SPEED=400 ITERATIONS=50`

- `TEST_SPEED ACCEL=10000 ITERATIONS=50`

### Determining if Skipping Occured

**1.** Watch and listen.
- Often, the skipping will be very obvious. Your toolhead may start shuddering and making erratic movements and loud noises.
- **Even if no skipping occurs, your motors might start to make loud resonant noises.** This can be an indication that you are near the limit, and should consider backing off a bit.

**2.** If there was no apparent major skipping, check for minor skipping:

- Inspect the g-code terminal output:
- Compare the numbers for the X and Y steppers for the first and second homing.
- ![](/images/TEST_SPEED_Compare.png)
- These numbers represent the microstep position of the toolhead at X/Y max position.
- These numbers represent the microstep position of the toolhead at X/Y max position.

- Ensure that the difference between these numbers **has not exceeded a full step.**
- For example, I am running `microsteps` of **32** for my A and B motors. I would ensure that the values for each axis have not changed by more than **32**.
- If the number has deviated more than this, that means that the corresponding axis has likely skipped.
Expand Down
75 changes: 57 additions & 18 deletions articles/determining_max_volumetric_flow_rate.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,21 @@

Volumetric flow rate indicates how much plastic that your hotend/extruder can extrude per second.

Volumetric flow is expressed in mm<sup>3</sup>/sec (cubic millimeters per second).
Volumetric flow is expressed in mm<sup>3</sup>/s (cubic millimeters per second).
## Why?
You can use this volumetric flow rate **to determine how fast your hotend/extruder is able to print.**

- See [:pushpin:this section](/articles/determining_max_volumetric_flow_rate.md#how-volumetric-flow-rate-relates-to-print-speed) to determine what maximum speeds you can print at with a given flow rate.
- See [:pushpin:the next section](/articles/determining_max_volumetric_flow_rate.md#approximate-values) for approximate values for certain hotends.
- See the [:pushpin:"how flow rate relates to speed"](/articles/determining_max_volumetric_flow_rate.md#how-volumetric-flow-rate-relates-to-print-speed) section to determine what maximum speeds you can print at with a given flow rate.

- See the [:pushpin:"approximate values"](/articles/determining_max_volumetric_flow_rate.md#approximate-values) section for approximate values for certain hotends.

- Some slicers (including Prusa Slicer/SuperSlicer) let you configure this limit to ensure that you never outrun your hotend.

- This means that you can change layer heights, nozzle sizes, line widths, and speeds without worrying about outrunning your hotend.

- You can also set any print speeds to a high "absolute maximum" speed (like infill) and let it be limited by the volumetric flow limit. This essentially prints at the maximum speed your hotend will allow:
- This is utilized by my published SuperSlicer profile (see the [:page_facing_up:"Volumetric Speed / Auto Speed" section](https://github.com/AndrewEllis93/Ellis-PIF-Profile#volumetric-speed--auto-speed) for more information.)
- This is utilized by my published SuperSlicer profile (see its [:page_facing_up:"Volumetric Speed Limiting"](https://github.com/AndrewEllis93/Ellis-PIF-Profile#volumetric-speed-limiting) section for more information.)

- ![](/images/Volumetric-SS.png)
## Approximate Values

Expand All @@ -24,7 +29,7 @@ You can use this volumetric flow rate **to determine how fast your hotend/extrud
| Mosquito| 20
| Mosquito Magnum| 30

You should be okay using an approximate value and just lowering it if you have any issues.
You should (generally) be okay using an approximate value and just lowering it if you have any issues.

These are approximate values **assuming a standard brass 0.4mm nozzle.**

Expand All @@ -34,7 +39,7 @@ Nozzle properties may affect these numbers. For example:
- Plated copper and tungsten carbide have higher thermal conductivity and might allow a bit higher flow rate.
- Bondtech CHT nozzles use a different internal geometry that allows higher flow rates.

*If you want to get more scientific, test with a specific nozzle or setup, or your hotend just isn't listed, see [here](/articles/determining_max_volumetric_flow_rate.md#method) for a testing method.*
*If you want to get more scientific, test with a specific nozzle or setup, or your hotend just isn't listed, see [:pushpin:here](/articles/determining_max_volumetric_flow_rate.md#method) for a testing method.*

## How Volumetric Flow Rate Relates to Print Speed

Expand All @@ -50,27 +55,61 @@ For example, if your hotend is capable of 24mm<sup>3</sup>/sec, and you are prin
- **24 / 0.4 / 0.2 = Maximum print speed of 300mm/sec**

## Method

You will follow a similar process to extruder calibration.

This is a rough calculation. Maximum volumetric flow rate can change with a number of factors, like temperatures, material, and nozzle type.
**1)** Heat your hotend.

You should set your limit slightly lower in the slicer for margin of safety, and to avoid having to re-tune for different filaments that don't flow as nicely.
**2)** Extrude a little bit to ensure your E motor is energized and holding.

**1)** Heat your hotend. \
**2)** Extrude a little bit to ensure your E motor is energized and holding.\
**3)** Mark a 120mm length of filament going into your extruder.\
**4)** Extrude at increasing speeds. At each interval, measure to ensure that exactly 100mm entered the extruder.
**3)** Mark a 120mm length of filament going into your extruder.

For example, the gcode to extrude at 5mm/sec is:
**4)** Extrude at increasing speeds.
- At each interval, measure to ensure that exactly 100mm* entered the extruder.

- For example, the gcode to extrude at 5mm/sec is:
```
M83 ; Relative extrusion mode
G1 E100 F300 ; Extrude 100mm at 5mm/sec
G1 E100 F300 ; Extrude 100mm at 5mm/sec*
```
Remember the the F speed is in mm/min, **not** mm/sec, so multiply your desired speed by 60.
\* *Remember the the F speed is in mm/min, **not** mm/sec, so multiply your desired speed by 60.*

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

- \* See the [:pushpin:"theory vs reality"](/articles/determining_max_volumetric_flow_rate.md#theory-vs-reality) section.

**6)** Convert the maximum extrusion speed you found to volumetric speed using the below [:pushpin:formulas](/articles/determining_max_volumetric_flow_rate.md#formulas).

**7)** Set your new value in your slicer (in SuperSlicer, ctrl+f, search for "max_volumetric_speed").

- You should set your limit slightly lower in the slicer for margin of safety.

- Keep in mind that maximum volumetric flow rate can change with a number of factors, like temperatures, material, and nozzle type.

- This value will work with most filaments. Sometimes, however, you may find a particular filament that doesn't flow as nicely. For these, (in PS/SS at least) you can set a volumetric flow override in that filament's "Filament Overrides" section.
## Theory vs Reality
Stephan from CNC Kitchen did some flow rate testing. He has a great article and video [:page_facing_up:here](https://www.cnckitchen.com/blog/flow-rate-benchmarking-of-a-hotend).

I don't want to steal his work, so here's an artist's rendition:

![](/images/extrusion-dropoff.png)

*(you should really just visit the link)*


The main takeaway from this is that there is that **the closer you get to the absolute limit of your hotend (extruder skipping) , the more and more you will underextrude**.

Many people will actually set a higher volumetric flow rate limit, a bit past the point where this dropoff starts.

- For example, it doesn't really matter if you underextrude a few percent in infill. You can push infill speeds and just let them be capped by your volumetric flow limit (assuming your infill line widths are thick enough to compensate).

- It's up to you where your comfort zone is. Using the test above:
- **Stopping at 100mm:** guarantees that you will never underextrude due to speeds.

- **Stopping before skipping starts:** you can use this number and push speeds for things like infill, BUT you will need to be more vigilant about what speeds you are printing other features (such as perimeters) to prevent underextrusion and line gaps.

- The numbers in the [:pushpin:"approximate values"](/articles/determining_max_volumetric_flow_rate.md#approximate-values) section are **somewhere in the middle** of the two extremes.

**5)** Keep increasing speeds and extruding until it starts dropping below 100mm. This is your max flow rate. \
**6)** Convert your extrusion speed to volumetric speed using the below formulas. \
**7)** Enter a slightly lower volumetric speed into the slicer.

## Formulas

Expand Down
Loading

0 comments on commit 8ce58ab

Please sign in to comment.