Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
82b91c1b40 | ||
|
|
536c3c0eff | ||
|
|
312a9c9ffa | ||
|
|
f4e700a1ff |
@@ -16,7 +16,7 @@ gcode:
|
|||||||
|
|
||||||
{% set accel = [accel, printer.configfile.settings.printer.max_accel]|min %}
|
{% set accel = [accel, printer.configfile.settings.printer.max_accel]|min %}
|
||||||
{% set old_accel = printer.toolhead.max_accel %}
|
{% set old_accel = printer.toolhead.max_accel %}
|
||||||
{% set old_accel_to_decel = printer.toolhead.max_accel_to_decel %}
|
{% set old_cruise_ratio = printer.toolhead.minimum_cruise_ratio %}
|
||||||
{% set old_sqv = printer.toolhead.square_corner_velocity %}
|
{% set old_sqv = printer.toolhead.square_corner_velocity %}
|
||||||
|
|
||||||
|
|
||||||
@@ -34,7 +34,7 @@ gcode:
|
|||||||
G90
|
G90
|
||||||
|
|
||||||
# Set the wanted acceleration values (not too high to avoid oscillation, not too low to be able to reach constant speed on each segments)
|
# Set the wanted acceleration values (not too high to avoid oscillation, not too low to be able to reach constant speed on each segments)
|
||||||
SET_VELOCITY_LIMIT ACCEL={accel} ACCEL_TO_DECEL={accel} SQUARE_CORNER_VELOCITY={[(accel / 1000), 5.0]|max}
|
SET_VELOCITY_LIMIT ACCEL={accel} MINIMUM_CRUISE_RATIO=0 SQUARE_CORNER_VELOCITY={[(accel / 1000), 5.0]|max}
|
||||||
|
|
||||||
# Going to the start position
|
# Going to the start position
|
||||||
G1 Z{z_height} F{feedrate_travel / 8}
|
G1 Z{z_height} F{feedrate_travel / 8}
|
||||||
@@ -55,6 +55,6 @@ gcode:
|
|||||||
RUN_SHELL_COMMAND CMD=shaketune PARAMS="--type axesmap --accel {accel|int} --chip_name {accel_chip}"
|
RUN_SHELL_COMMAND CMD=shaketune PARAMS="--type axesmap --accel {accel|int} --chip_name {accel_chip}"
|
||||||
|
|
||||||
# Restore the previous acceleration values
|
# Restore the previous acceleration values
|
||||||
SET_VELOCITY_LIMIT ACCEL={old_accel} ACCEL_TO_DECEL={old_accel_to_decel} SQUARE_CORNER_VELOCITY={old_sqv}
|
SET_VELOCITY_LIMIT ACCEL={old_accel} MINIMUM_CRUISE_RATIO={old_cruise_ratio} SQUARE_CORNER_VELOCITY={old_sqv}
|
||||||
|
|
||||||
RESTORE_GCODE_STATE NAME=STATE_AXESMAP_CALIBRATION
|
RESTORE_GCODE_STATE NAME=STATE_AXESMAP_CALIBRATION
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ gcode:
|
|||||||
{ action_raise_error("AXIS selection invalid. Should be either all, x or y!") }
|
{ action_raise_error("AXIS selection invalid. Should be either all, x or y!") }
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% if scv is None %}
|
{% if scv is none %}
|
||||||
{% set scv = printer.toolhead.square_corner_velocity %}
|
{% set scv = printer.toolhead.square_corner_velocity %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
@@ -37,7 +37,7 @@ gcode:
|
|||||||
|
|
||||||
RESPOND MSG="X axis frequency profile generation..."
|
RESPOND MSG="X axis frequency profile generation..."
|
||||||
RESPOND MSG="This may take some time (1-3min)"
|
RESPOND MSG="This may take some time (1-3min)"
|
||||||
RUN_SHELL_COMMAND CMD=shaketune PARAMS="--type shaper --scv {scv} {% if max_sm is not None %}--max_smoothing {max_sm}{% endif %} {% if keep_csv %}--keep_csv{% endif %}"
|
RUN_SHELL_COMMAND CMD=shaketune PARAMS="--type shaper --scv {scv} {% if max_sm is not none %}--max_smoothing {max_sm}{% endif %} {% if keep_csv %}--keep_csv{% endif %}"
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% if Y %}
|
{% if Y %}
|
||||||
@@ -46,7 +46,7 @@ gcode:
|
|||||||
|
|
||||||
RESPOND MSG="Y axis frequency profile generation..."
|
RESPOND MSG="Y axis frequency profile generation..."
|
||||||
RESPOND MSG="This may take some time (1-3min)"
|
RESPOND MSG="This may take some time (1-3min)"
|
||||||
RUN_SHELL_COMMAND CMD=shaketune PARAMS="--type shaper --scv {scv} {% if max_sm is not None %}--max_smoothing {max_sm}{% endif %} {% if keep_csv %}--keep_csv{% endif %}"
|
RUN_SHELL_COMMAND CMD=shaketune PARAMS="--type shaper --scv {scv} {% if max_sm is not none %}--max_smoothing {max_sm}{% endif %} {% if keep_csv %}--keep_csv{% endif %}"
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
M400
|
M400
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ gcode:
|
|||||||
|
|
||||||
{% set accel = [accel, printer.configfile.settings.printer.max_accel]|min %}
|
{% set accel = [accel, printer.configfile.settings.printer.max_accel]|min %}
|
||||||
{% set old_accel = printer.toolhead.max_accel %}
|
{% set old_accel = printer.toolhead.max_accel %}
|
||||||
{% set old_accel_to_decel = printer.toolhead.max_accel_to_decel %}
|
{% set old_cruise_ratio = printer.toolhead.minimum_cruise_ratio %}
|
||||||
{% set old_sqv = printer.toolhead.square_corner_velocity %}
|
{% set old_sqv = printer.toolhead.square_corner_velocity %}
|
||||||
|
|
||||||
{% set direction_factor = {
|
{% set direction_factor = {
|
||||||
@@ -129,7 +129,7 @@ gcode:
|
|||||||
G90
|
G90
|
||||||
|
|
||||||
# Set the wanted acceleration values (not too high to avoid oscillation, not too low to be able to reach constant speed on each segments)
|
# Set the wanted acceleration values (not too high to avoid oscillation, not too low to be able to reach constant speed on each segments)
|
||||||
SET_VELOCITY_LIMIT ACCEL={accel} ACCEL_TO_DECEL={accel} SQUARE_CORNER_VELOCITY={[(accel / 1000), 5.0]|max}
|
SET_VELOCITY_LIMIT ACCEL={accel} MINIMUM_CRUISE_RATIO=0 SQUARE_CORNER_VELOCITY={[(accel / 1000), 5.0]|max}
|
||||||
|
|
||||||
# Going to the start position
|
# Going to the start position
|
||||||
G1 Z{z_height} F{feedrate_travel / 10}
|
G1 Z{z_height} F{feedrate_travel / 10}
|
||||||
@@ -161,6 +161,6 @@ gcode:
|
|||||||
RUN_SHELL_COMMAND CMD=shaketune PARAMS="--type clean --keep_results {keep_results}"
|
RUN_SHELL_COMMAND CMD=shaketune PARAMS="--type clean --keep_results {keep_results}"
|
||||||
|
|
||||||
# Restore the previous acceleration values
|
# Restore the previous acceleration values
|
||||||
SET_VELOCITY_LIMIT ACCEL={old_accel} ACCEL_TO_DECEL={old_accel_to_decel} SQUARE_CORNER_VELOCITY={old_sqv}
|
SET_VELOCITY_LIMIT ACCEL={old_accel} MINIMUM_CRUISE_RATIO={old_cruise_ratio} SQUARE_CORNER_VELOCITY={old_sqv}
|
||||||
|
|
||||||
RESTORE_GCODE_STATE NAME=STATE_VIBRATIONS_CALIBRATION
|
RESTORE_GCODE_STATE NAME=STATE_VIBRATIONS_CALIBRATION
|
||||||
|
|||||||
@@ -34,6 +34,10 @@ Follow these steps to install the Shake&Tune module in your printer:
|
|||||||
[include K-ShakeTune/*.cfg]
|
[include K-ShakeTune/*.cfg]
|
||||||
```
|
```
|
||||||
|
|
||||||
|
> **Note**:
|
||||||
|
>
|
||||||
|
> Due to some breaking changes in the resonance testing code on the Klipper side, Shake&Tune has been modified to take advantage of this, and thus S&T v2.6+ will only support a Klipper version from Feb 17th 2024. If you are using an older version of Klipper, you must use S&T <=2.5.x
|
||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
Ensure your machine is homed, then invoke one of the following macros as needed:
|
Ensure your machine is homed, then invoke one of the following macros as needed:
|
||||||
|
|||||||
Binary file not shown.
|
Before Width: | Height: | Size: 1.1 MiB After Width: | Height: | Size: 757 KiB |
@@ -152,7 +152,7 @@ The presence of an unbalanced or poorly running fan can be directly observed in
|
|||||||
|
|
||||||
The integration of LIS2DW as a resonance measuring device in Klipper is becoming more and more common, especially because some manufacturers are promoting its superiority over the established ADXL345. It's indeed a new generation chip that should be better to measure traditional "accelerations". However, a detailed comparison of their datasheets and practical measurements paints a more complex picture: the LIS2DW boasts greater sensitivity, but it has a lower sampling rate and produce significant aliasing that results in a "lightshow" effect on the spectrogram, characterized by multiple spurious resonance lines parallel to the main resonance, accompanied by intersecting interference lines that distort the harmonic profile.
|
The integration of LIS2DW as a resonance measuring device in Klipper is becoming more and more common, especially because some manufacturers are promoting its superiority over the established ADXL345. It's indeed a new generation chip that should be better to measure traditional "accelerations". However, a detailed comparison of their datasheets and practical measurements paints a more complex picture: the LIS2DW boasts greater sensitivity, but it has a lower sampling rate and produce significant aliasing that results in a "lightshow" effect on the spectrogram, characterized by multiple spurious resonance lines parallel to the main resonance, accompanied by intersecting interference lines that distort the harmonic profile.
|
||||||
|
|
||||||
While, the top resonance graph's overall shape, including resonant frequency and damping ratio, should be close with pretty similar recommendations for input shaping filters, this aliasing complicates the identification of subtle details and hampers mechanical issue diagnostics. It especially introduces a potential misinterpretation of "[binding](#low-frequency-energy)" due to a global offset of the curve.
|
While in most cases the overall shape of the upper resonance curve, including resonant frequency and damping ratio, should be close to reality with fairly similar input shaping filter recommendations, this aliasing makes it difficult to identify subtle details and complicates the diagnosis of mechanical problems. In particular, it introduces a potential misinterpretation of "[binding](#low-frequency-energy)" due to a global offset of the curve. In the worst cases (see the last example below), the aliasing is too severe and adds too much noise to the graph, making it unusable.
|
||||||
|
|
||||||
> **Note**:
|
> **Note**:
|
||||||
>
|
>
|
||||||
|
|||||||
Reference in New Issue
Block a user