docs: Update Resonance_Compensation.md to recommend SET_VELOCITY_LIMIT

It's no longer necessary to update the printer.cfg file to alter the
max_accel and square_corner_velocity parameters.  Update the
Resonance_Compensation.md document to reflect this.

Also, recommend using STEP_DELTA in the TUNING_TOWER commands.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
This commit is contained in:
Kevin O'Connor 2022-01-28 19:04:10 -05:00
parent a7b01857f5
commit 9c4172784a
1 changed files with 64 additions and 74 deletions

View File

@ -23,9 +23,8 @@ of the stealthChop mode of Trinamic stepper drivers.
## Tuning ## Tuning
Basic tuning requires measuring the ringing frequencies of the printer and Basic tuning requires measuring the ringing frequencies of the printer
adding a few parameters to `printer.cfg` file. by printing a test model.
Slice the ringing test model, which can be found in Slice the ringing test model, which can be found in
[docs/prints/ringing_tower.stl](prints/ringing_tower.stl), in the slicer: [docs/prints/ringing_tower.stl](prints/ringing_tower.stl), in the slicer:
@ -45,31 +44,28 @@ Slice the ringing test model, which can be found in
First, measure the **ringing frequency**. First, measure the **ringing frequency**.
1. Increase `max_accel` and `max_accel_to_decel` parameters in your 1. If `square_corner_velocity` parameter was changed, revert it back
`printer.cfg` to 7000. Note that this is only needed for tuning, and more to 5.0. It is not advised to increase it when using input shaper
proper value will be selected in the corresponding because it can cause more smoothing in parts - it is better to use
[section](#selecting-max_accel). higher acceleration value instead.
2. If `square_corner_velocity` parameter was changed, revert it back to 5.0. 2. Increase `max_accel_to_decel` by issuing the following command:
It is not advised to increase it when using the input shaper because it can `SET_VELOCITY_LIMIT ACCEL_TO_DECEL=7000`
cause more smoothing in parts - it is better to use higher acceleration 3. Disable Pressure Advance: `SET_PRESSURE_ADVANCE ADVANCE=0`
value instead. 4. If you have already added `[input_shaper]` section to the printer.cfg,
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 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 get "Unknown command" error, you can safely ignore it at this point and
continue with the measurements. continue with the measurements.
6. Execute the command 5. Execute the command:
`TUNING_TOWER COMMAND=SET_VELOCITY_LIMIT PARAMETER=ACCEL START=1250 FACTOR=100 BAND=5`. `TUNING_TOWER COMMAND=SET_VELOCITY_LIMIT PARAMETER=ACCEL START=1500 STEP_DELTA=500 STEP_HEIGHT=5`
Basically, we try to make ringing more pronounced by setting different large Basically, we try to make ringing more pronounced by setting different large
values for acceleration. This command will increase the acceleration every 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 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. and so forth up until 7000 mm/sec^2 at the last band.
7. Print the test model sliced with the suggested parameters. 6. 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 7. 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 that acceleration gets too high for your printer (e.g. printer shakes too
much or starts skipping steps). much or starts skipping steps).
9. Use X and Y marks at the back of the model for reference. The measurements 8. 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 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 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 several oscillations on the part with X mark, near the notches, preferably
@ -79,14 +75,14 @@ First, measure the **ringing frequency**.
|![Mark ringing](img/ringing-mark.jpg)|![Measure ringing](img/ringing-measure.jpg)| |![Mark ringing](img/ringing-mark.jpg)|![Measure ringing](img/ringing-measure.jpg)|
10. Count how many oscillations *N* the measured distance *D* corresponds to. 9. Count how many oscillations *N* the measured distance *D* corresponds to.
If you are unsure how to count the oscillations, refer to the picture If you are unsure how to count the oscillations, refer to the picture
above, which shows *N* = 6 oscillations. above, which shows *N* = 6 oscillations.
11. Compute the ringing frequency of X axis as *V* &middot; *N* / *D* (Hz), 10. Compute the ringing frequency of X axis as *V* &middot; *N* / *D* (Hz),
where *V* is the velocity for outer perimeters (mm/sec). For the example 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 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. velocity, so the frequency is 100 * 6 / 12.14 ≈ 49.4 Hz.
12. Do (9) - (11) for Y mark as well. 11. Do (8) - (10) for Y mark as well.
Note that ringing on the test print should follow the pattern of the curved 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 notches, as in the picture above. If it doesn't, then this defect is not really
@ -150,16 +146,15 @@ For most of the printers, either MZV or EI shapers can be recommended. This
section describes a testing process to choose between them, and figure out section describes a testing process to choose between them, and figure out
a few other related parameters. a few other related parameters.
Print the ringing test model as follows (assuming you already have Print the ringing test model as follows:
shaper_freq_x/y set and max_accel/max_accel_to_decel increased to 7000 in
printer.cfg file):
1. Restart the firmware: `RESTART`. 1. Restart the firmware: `RESTART`
2. Disable Pressure Advance: `SET_PRESSURE_ADVANCE ADVANCE=0`. 2. Prepare for test: `SET_VELOCITY_LIMIT ACCEL_TO_DECEL=7000`
3. Execute `SET_INPUT_SHAPER SHAPER_TYPE=MZV`. 3. Disable Pressure Advance: `SET_PRESSURE_ADVANCE ADVANCE=0`
4. Execute the command 4. Execute: `SET_INPUT_SHAPER SHAPER_TYPE=MZV`
`TUNING_TOWER COMMAND=SET_VELOCITY_LIMIT PARAMETER=ACCEL START=1250 FACTOR=100 BAND=5`. 5. Execute the command:
5. Print the test model sliced with the suggested parameters. `TUNING_TOWER COMMAND=SET_VELOCITY_LIMIT PARAMETER=ACCEL START=1500 STEP_DELTA=500 STEP_HEIGHT=5`
6. Print the test model sliced with the suggested parameters.
If you see no ringing at this point, then MZV shaper can be recommended for use. If you see no ringing at this point, then MZV shaper can be recommended for use.
@ -169,8 +164,8 @@ differ significantly from the values you obtained earlier, a more complex input
shaper configuration is needed. You can refer to Technical details of shaper configuration is needed. You can refer to Technical details of
[Input shapers](#input-shapers) section. Otherwise, proceed to the next step. [Input shapers](#input-shapers) section. Otherwise, proceed to the next step.
Now try EI input shaper. To try it, repeat steps (1)-(5) from above, but Now try EI input shaper. To try it, repeat steps (1)-(6) from above, but
executing at step 3 the following command instead: executing at step 4 the following command instead:
`SET_INPUT_SHAPER SHAPER_TYPE=EI`. `SET_INPUT_SHAPER SHAPER_TYPE=EI`.
Compare two prints with MZV and EI input shaper. If EI shows noticeably better Compare two prints with MZV and EI input shaper. If EI shows noticeably better
@ -207,7 +202,7 @@ You should have a printed test for the shaper you chose from the previous step
(if you don't, print the test model sliced with the (if you don't, print the test model sliced with the
[suggested parameters](#tuning) with the pressure advance disabled [suggested parameters](#tuning) with the pressure advance disabled
`SET_PRESSURE_ADVANCE ADVANCE=0` and with the tuning tower enabled as `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`). `TUNING_TOWER COMMAND=SET_VELOCITY_LIMIT PARAMETER=ACCEL START=1500 STEP_DELTA=500 STEP_HEIGHT=5`).
Note that at very high accelerations, depending on the resonance frequency and 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), 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, input shaping may cause too much smoothing and rounding of the parts. So,
@ -242,8 +237,7 @@ It may also be a result of a miscalibrated (too high) filament flow, so it is
a good idea to check that too. a good idea to check that too.
Choose the minimum out of the two acceleration values (from ringing and Choose the minimum out of the two acceleration values (from ringing and
smoothing), and put it as max_accel into printer.cfg (you can delete smoothing), and put it as `max_accel` into printer.cfg.
max_accel_to_decel or revert it to the old value).
As a note, it may happen - especially at low ringing frequencies - that EI As a note, it may happen - especially at low ringing frequencies - that EI
@ -273,29 +267,29 @@ your choice with the same frequencies as you have measured earlier), you can
follow the steps in this section. Note that if you see ringing at different follow the steps in this section. Note that if you see ringing at different
frequencies after enabling [input_shaper], this section will not help with that. frequencies after enabling [input_shaper], this section will not help with that.
Assuming that you have sliced the ringing model with suggested parameters and Assuming that you have sliced the ringing model with suggested
increased `max_accel` and `max_accel_to_decel` parameters in the `printer.cfg` parameters, complete the following steps for each of the axes X and Y:
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`. 1. Prepare for test: `SET_VELOCITY_LIMIT ACCEL_TO_DECEL=7000`
2. Execute `SET_INPUT_SHAPER SHAPER_TYPE=ZV`. 2. Make sure Pressure Advance is disabled: `SET_PRESSURE_ADVANCE ADVANCE=0`
3. From the existing ringing test model with your chosen input shaper select 3. Execute: `SET_INPUT_SHAPER SHAPER_TYPE=ZV`
4. From the existing ringing test model with your chosen input shaper select
the acceleration that shows ringing sufficiently well, and set it with: the acceleration that shows ringing sufficiently well, and set it with:
`SET_VELOCITY_LIMIT ACCEL=...`. `SET_VELOCITY_LIMIT ACCEL=...`
4. Calculate the necessary parameters for the `TUNING_TOWER` command to tune 5. Calculate the necessary parameters for the `TUNING_TOWER` command to tune
`shaper_freq_x` parameter as follows: start = shaper_freq_x * 83 / 132 and `shaper_freq_x` parameter as follows: start = shaper_freq_x * 83 / 132 and
factor = shaper_freq_x / 66, where `shaper_freq_x` here is the current value factor = shaper_freq_x / 66, where `shaper_freq_x` here is the current value
in `printer.cfg`. in `printer.cfg`.
5. Execute the command 6. Execute the command:
`TUNING_TOWER COMMAND=SET_INPUT_SHAPER PARAMETER=SHAPER_FREQ_X START=start FACTOR=factor BAND=5` `TUNING_TOWER COMMAND=SET_INPUT_SHAPER PARAMETER=SHAPER_FREQ_X START=start FACTOR=factor BAND=5`
using `start` and `factor` values calculated at step (4). using `start` and `factor` values calculated at step (5).
6. Print the test model. 7. Print the test model.
7. Reset the original frequency value: 8. Reset the original frequency value:
`SET_INPUT_SHAPER SHAPER_FREQ_X=...`. `SET_INPUT_SHAPER SHAPER_FREQ_X=...`.
8. Find the band which shows ringing the least and count its number from the 9. Find the band which shows ringing the least and count its number from the
bottom starting at 1. bottom starting at 1.
9. Calculate the new shaper_freq_x value via old 10. Calculate the new shaper_freq_x value via old
shaper_freq_x * (39 + 5 * #band-number) / 66. shaper_freq_x * (39 + 5 * #band-number) / 66.
Repeat these steps for the Y axis in the same manner, replacing references to X Repeat these steps for the Y axis in the same manner, replacing references to X
axis with the axis Y (e.g. replace `shaper_freq_x` with `shaper_freq_y` in axis with the axis Y (e.g. replace `shaper_freq_x` with `shaper_freq_y` in
@ -312,16 +306,12 @@ After both new `shaper_freq_x` and `shaper_freq_y` parameters have been
calculated, you can update `[input_shaper]` section in `printer.cfg` with the calculated, you can update `[input_shaper]` section in `printer.cfg` with the
new `shaper_freq_x` and `shaper_freq_y` values. new `shaper_freq_x` and `shaper_freq_y` values.
Do not forget to revert the changes to `max_accel` and `max_accel_to_decel`
parameters in the `printer.cfg` after finishing this section.
### Pressure Advance ### Pressure Advance
If you use Pressure Advance, it may need to be re-tuned. Follow the If you use Pressure Advance, it may need to be re-tuned. Follow the
[instructions](Pressure_Advance.md#tuning-pressure-advance) to find the [instructions](Pressure_Advance.md#tuning-pressure-advance) to find
new value, if it differs from the previous one. Make sure to restore the the new value, if it differs from the previous one. Make sure to
original values of `max_accel` and `max_accel_to_decel` parameters in the restart Klipper before tuning Pressure Advance.
`printer.cfg` and restart Klipper before tuning Pressure Advance.
### Unreliable measurements of ringing frequencies ### Unreliable measurements of ringing frequencies
@ -335,26 +325,26 @@ accelerometer and measure the resonances with it (refer to the
process) - but this option requires some crimping and soldering. process) - but this option requires some crimping and soldering.
For tuning, add empty `[input_shaper]` section to your `printer.cfg`. Then, For tuning, add empty `[input_shaper]` section to your
assuming that you have sliced the ringing model with suggested parameters and `printer.cfg`. Then, assuming that you have sliced the ringing model
increased `max_accel` and `max_accel_to_decel` parameters in the `printer.cfg` with suggested parameters, print the test model 3 times as
to 7000 already, print the test model 3 times as follows. First time, prior to follows. First time, prior to printing, run
printing, run
1. `RESTART` 1. `RESTART`
2. `SET_PRESSURE_ADVANCE ADVANCE=0`. 2. `SET_VELOCITY_LIMIT ACCEL_TO_DECEL=7000`
3. `SET_INPUT_SHAPER SHAPER_TYPE=2HUMP_EI SHAPER_FREQ_X=60 SHAPER_FREQ_Y=60`. 3. `SET_PRESSURE_ADVANCE ADVANCE=0`
4. `TUNING_TOWER COMMAND=SET_VELOCITY_LIMIT PARAMETER=ACCEL START=1250 FACTOR=100 BAND=5`. 4. `SET_INPUT_SHAPER SHAPER_TYPE=2HUMP_EI SHAPER_FREQ_X=60 SHAPER_FREQ_Y=60`
5. `TUNING_TOWER COMMAND=SET_VELOCITY_LIMIT PARAMETER=ACCEL START=1500 STEP_DELTA=500 STEP_HEIGHT=5`
and print the model. Then print the model again, but before printing run instead and print the model. Then print the model again, but before printing run instead
1. `SET_INPUT_SHAPER SHAPER_TYPE=2HUMP_EI SHAPER_FREQ_X=50 SHAPER_FREQ_Y=50`. 1. `SET_INPUT_SHAPER SHAPER_TYPE=2HUMP_EI SHAPER_FREQ_X=50 SHAPER_FREQ_Y=50`
2. `TUNING_TOWER COMMAND=SET_VELOCITY_LIMIT PARAMETER=ACCEL START=1250 FACTOR=100 BAND=5`. 2. `TUNING_TOWER COMMAND=SET_VELOCITY_LIMIT PARAMETER=ACCEL START=1500 STEP_DELTA=500 STEP_HEIGHT=5`
Then print the model for the 3rd time, but now run Then print the model for the 3rd time, but now run
1. `SET_INPUT_SHAPER SHAPER_TYPE=2HUMP_EI SHAPER_FREQ_X=40 SHAPER_FREQ_Y=40`. 1. `SET_INPUT_SHAPER SHAPER_TYPE=2HUMP_EI SHAPER_FREQ_X=40 SHAPER_FREQ_Y=40`
2. `TUNING_TOWER COMMAND=SET_VELOCITY_LIMIT PARAMETER=ACCEL START=1250 FACTOR=100 BAND=5`. 2. `TUNING_TOWER COMMAND=SET_VELOCITY_LIMIT PARAMETER=ACCEL START=1500 STEP_DELTA=500 STEP_HEIGHT=5`
Essentially, we are printing the ringing test model with TUNING_TOWER using Essentially, we are printing the ringing test model with TUNING_TOWER using
2HUMP_EI shaper with shaper_freq = 60 Hz, 50 Hz, and 40 Hz. 2HUMP_EI shaper with shaper_freq = 60 Hz, 50 Hz, and 40 Hz.
@ -377,8 +367,8 @@ frequency based on the frequency of 2HUMP_EI shaper you chose:
Now print the test model one more time, running Now print the test model one more time, running
1. `SET_INPUT_SHAPER SHAPER_TYPE=EI SHAPER_FREQ_X=... SHAPER_FREQ_Y=...`. 1. `SET_INPUT_SHAPER SHAPER_TYPE=EI SHAPER_FREQ_X=... SHAPER_FREQ_Y=...`
2. `TUNING_TOWER COMMAND=SET_VELOCITY_LIMIT PARAMETER=ACCEL START=1250 FACTOR=100 BAND=5`. 2. `TUNING_TOWER COMMAND=SET_VELOCITY_LIMIT PARAMETER=ACCEL START=1500 STEP_DELTA=500 STEP_HEIGHT=5`
providing the shaper_freq_x=... and shaper_freq_y=... as determined previously. providing the shaper_freq_x=... and shaper_freq_y=... as determined previously.