diff options
author | Dmitry Butyugin <dmbutyugin@google.com> | 2020-12-17 23:44:46 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-12-17 17:44:46 -0500 |
commit | 4a41d228eb8e486919587c9f7e4f79c934572529 (patch) | |
tree | 6cccd86756998e521f2217509fadf67f54493c14 /docs/Resonance_Compensation.md | |
parent | 85300a4aadaaf2fbb0aadc01d6ed273b6ecb1215 (diff) | |
download | kutter-4a41d228eb8e486919587c9f7e4f79c934572529.tar.gz kutter-4a41d228eb8e486919587c9f7e4f79c934572529.tar.xz kutter-4a41d228eb8e486919587c9f7e4f79c934572529.zip |
docs: Input Shaper and Resonances docs improvements (#3627)
Signed-off-by: Dmitry Butyugin <dmbutyugin@google.com>
Diffstat (limited to 'docs/Resonance_Compensation.md')
-rw-r--r-- | docs/Resonance_Compensation.md | 102 |
1 files changed, 59 insertions, 43 deletions
diff --git a/docs/Resonance_Compensation.md b/docs/Resonance_Compensation.md index 2a1e8a67..f9d3fb0a 100644 --- a/docs/Resonance_Compensation.md +++ b/docs/Resonance_Compensation.md @@ -9,19 +9,19 @@ printed surface as a subtle 'echo': ||| Ringing is caused by mechanical vibrations in the printer due to quick changes -of the printing direction. +of the printing direction. Note that ringing usually has mechanical origins: +insufficiently rigid printer frame, non-tight or too springy belts, alignment +issues of mechanical parts, heavy moving mass, etc. Those should be checked +and fixed first, if possible. + + [Input shaping](https://en.wikipedia.org/wiki/Input_shaping) is an open-loop control technique which creates a commanding signal that cancels its -own vibrations. - -**Warning**: Input Shaping support is experimental. You should consider using it -only if you already have ghosting and ringing in prints, otherwise it is not -advised to enable it. Input shaping requires some tuning and measurements -before it can be enabled. +own vibrations. Input shaping requires some tuning and measurements before it +can be enabled. Besides ringing, Input Shaping typically reduces the vibrations +and shaking of the printer in general, and may also improve the reliability +of the stealthChop mode of Trinamic stepper drivers. -Note that ringing usually has mechanical origins: insufficiently rigid printer -frame, non-tight or too springy belts, alignment issues of mechanical parts, -heavy moving mass, etc. Those should be checked and fixed first. Tuning =========================== @@ -36,9 +36,13 @@ Slice the ringing test model, which can be found in * Suggested layer height is 0.2 or 0.25 mm. * Infill and top layers can be set to 0. * Use 1-2 perimeters, or even better the smooth vase mode with 1-2 mm base. - * Use sufficiently high speed, around 80-100 mm/sec, for *external* perimeters. - * Make sure that the minimum layer time is *at most* 3 seconds. + * Use sufficiently high speed, around 80-100 mm/sec, for **external** perimeters. + * Make sure that the minimum layer time is **at most** 3 seconds. * Make sure any "dynamic acceleration control" is disabled in the slicer. + * Do not turn the model. The model has X and Y marks at the back of the model. + Note the unusual location of the marks vs. the axes of the printer - it is + not a mistake. The marks can be used later in the tuning process as a + reference, because they show which axis the measurements correspond to. ## Ringing frequency @@ -48,36 +52,44 @@ First, measure the **ringing frequency**. `printer.cfg` to 7000. Note that this is only needed for tuning, and more proper value will be selected in the corresponding [section](#selecting-max_accel). -2. Restart the firmware: `RESTART`. -3. Disable Pressure Advance: `SET_PRESSURE_ADVANCE ADVANCE=0`. -4. If you have already added `[input_shaper]` section to the printer.cfg, +2. If `square_corner_velocity` parameter was changed, revert it back to 5.0. + It is not advised to increase it when using the input shaper because it can + cause more smoothing in parts - it is better to use higher acceleration + value instead. +3. Restart the firmware: `RESTART`. +4. Disable Pressure Advance: `SET_PRESSURE_ADVANCE ADVANCE=0`. +5. If you have already added `[input_shaper]` section to the printer.cfg, execute `SET_INPUT_SHAPER SHAPER_FREQ_X=0 SHAPER_FREQ_Y=0` command. If you get "Unknown command" error, you can safely ignore it at this point and continue with the measurements. -5. Execute the command +6. Execute the command `TUNING_TOWER COMMAND=SET_VELOCITY_LIMIT PARAMETER=ACCEL START=1250 FACTOR=100 BAND=5`. Basically, we try to make ringing more pronounced by setting different large - values for acceleration. -6. Print the test model sliced with the suggested parameters. -7. You can stop the print earlier if the ringing is clearly visible and you see + values for acceleration. This command will increase the acceleration every + 5 mm starting from 1500 mm/sec^2: 1500 mm/sec^2, 2000 mm/sec^2, 2500 mm/sec^2 + and so forth up until 7000 mm/sec^2 at the last band. +7. Print the test model sliced with the suggested parameters. +8. You can stop the print earlier if the ringing is clearly visible and you see that acceleration gets too high for your printer (e.g. printer shakes too much or starts skipping steps). -8. Measure the distance *D* (in mm) between *N* oscillations for X axis near - the notches, preferably skipping the first oscillation or two. Pay attention - to the notches X axis corresponds to - the test model has large 'X' and 'Y' - marks on the back side for convenience. Note that 'X' mark is on Y axis and - vice versa, it is not a mistake - ringing of X axis shows *along* Y axis. - To measure the distance between oscillations more easily, mark the - oscillations first, then measure the distance between the marks with a ruler - or calipers: +9. Use X and Y marks at the back of the model for reference. The measurements + from the side with X mark should be used for X axis *configuration*, and + Y mark - for Y axis configuration. Measure the distance *D* (in mm) between + several oscillations on the part with X mark, near the notches, preferably + skipping the first oscillation or two. To measure the distance between + oscillations more easily, mark the oscillations first, then measure the + distance between the marks with a ruler or calipers: ||| -9. Compute the ringing frequency = *V* · *N* / *D* (Hz) where *V* is the - velocity for outer perimeters (mm/sec). For the example above, we marked 6 - oscillations, and the test was printed at 100 mm/sec velocity, so the - frequency is 100 * 6 / 12.14 ≈ 49.4 Hz. -10. Do (8) - (9) for Y axis as well. +10. Count how many oscillations *N* the measured distance *D* corresponds to. + If you are unsure how to count the oscillations, refer to the picture + above, which shows *N* = 6 oscillations. +11. Compute the ringing frequency of X axis as *V* · *N* / *D* (Hz), + where *V* is the velocity for outer perimeters (mm/sec). For the example + above, we marked 6 oscillations, and the test was printed at 100 mm/sec + velocity, so the frequency is 100 * 6 / 12.14 ≈ 49.4 Hz. +12. Do (9) - (11) for Y mark as well. Note that ringing on the test print should follow the pattern of the curved notches, as in the picture above. If it doesn't, then this defect is not really @@ -123,8 +135,8 @@ After the ringing frequencies for X and Y axes are measured, you can add the following section to your `printer.cfg`: ``` [input_shaper] -shaper_freq_x: ... -shaper_freq_y: ... +shaper_freq_x: ... # frequency for the X mark of the test model +shaper_freq_y: ... # frequency for the Y mark of the test model ``` For the example above, we get shaper_freq_x/y = 49.4. @@ -195,14 +207,15 @@ A few notes on shaper selection: ## Selecting max_accel You should have a printed test for the shaper you chose from the previous step -(if you don't, print the test model with the pressure advance disabled +(if you don't, print the test model sliced with the +[suggested parameters](#tuning) with the pressure advance disabled `SET_PRESSURE_ADVANCE ADVANCE=0` and with the tuning tower enabled as `TUNING_TOWER COMMAND=SET_VELOCITY_LIMIT PARAMETER=ACCEL START=1250 FACTOR=100 BAND=5`). Note that at very high accelerations, depending on the resonance frequency and the input shaper you chose (e.g. EI shaper creates more smoothing than MZV), input shaping may cause too much smoothing and rounding of the parts. So, max_accel should be chosen such as to prevent that. Another parameter that can -impact smoothing is square_corner_velocity, so it is not advisable to increase +impact smoothing is `square_corner_velocity`, so it is not advisable to increase it above the default 5 mm/sec to prevent increased smoothing. In order to select a suitable max_accel value, inspect the model for the chosen @@ -214,8 +227,8 @@ in the wall (0.15 mm):  -As the acceleration increases, so does the smoothing, and the actual gap -widens: +As the acceleration increases, so does the smoothing, and the actual gap in +the print widens:  @@ -269,7 +282,7 @@ to 7000 already, complete the following steps for each of the axes X and Y: 1. Make sure Pressure Advance is disabled: `SET_PRESSURE_ADVANCE ADVANCE=0`. 2. Execute `SET_INPUT_SHAPER SHAPER_TYPE=ZV`. -2. From the existing ringing test model with your chosen input shaper select +3. From the existing ringing test model with your chosen input shaper select the acceleration that shows ringing sufficiently well, and set it with: `SET_VELOCITY_LIMIT ACCEL=...`. 4. Calculate the necessary parameters for the `TUNING_TOWER` command to tune @@ -320,9 +333,9 @@ between the oscillations is not stable, you may still be able to take advantage of input shaping techniques, but the results may not be as good as with proper measurements of the frequencies, and will require a bit more tuning and printing the test model. Note that another possibility is to purchase and install an -accelerometer and measure the resonances with it (there is a separate -[branch](https://github.com/dmbutyugin/klipper/blob/adxl345-spi/docs/Measuring_Resonances.md) -with ADXL345 support) - but this option requires some crimping and soldering. +accelerometer and measure the resonances with it (refer to the +[docs](Measuring_Resonances.md) describing the required hardware and the setup +process) - but this option requires some crimping and soldering. For tuning, add empty `[input_shaper]` section to your `printer.cfg`. Then, @@ -396,7 +409,10 @@ between the oscillations is not stable, it might mean that the printer has several resonance frequencies on the same axis. One may try to follow the tuning process described in [Unreliable measurements of ringing frequencies](#unreliable-measurements-of-ringing-frequencies) -section and still get something out of the input shaping technique. +section and still get something out of the input shaping technique. Another +possibility is to install an accelerometer, [measure](Measuring_Resonances.md) +the resonances with it, and auto-tune the input shaper using the results of +those measurements. ### After enabling [input_shaper], I get too smoothed printed parts and fine details are lost |