Vfa calibs - Input Shaping & Junction Deviation (#9160)

@RF47 and I have been working on a **two-step input shaping
calibration** to help fine-tune print quality and Junction Deviation
Test for Marlin2 printers.
This is based on [Klipper's Resonance
Compensation](https://www.klipper3d.org/Resonance_Compensation.html#resonance-compensation),
[Marlin’s M593 G-code](https://marlinfw.org/docs/gcode/M593.html),
discussions from
[SoftFever/OrcaSlicer#1820](https://github.com/SoftFever/OrcaSlicer/issues/1820),
some elements from the [input_shaping
branch](https://github.com/SoftFever/OrcaSlicer/tree/feature/input_shaping)
and Junction Deviation [Marlin
Documentation](https://marlinfw.org/docs/configuration/configuration.html#junction-deviation-)

This is for Marlin only, but I'm working on a future Klipper-compatible
version here:
[VFA-Calibs+Klipper](https://github.com/ianalexis/OrcaSlicer/tree/VFA-Calibs%2BKlipper).
However, we don't own a Klipper machine, so we're unsure how to improve
it or verify if it works correctly.

### Calibration Steps

1. **Frequency Test** – Helps identify the optimal input shaping
frequency.
2. **Damping Test** – Fine-tunes the damping ratio for smoother prints. 

### Screenshots

![imagen](https://github.com/user-attachments/assets/bfa9ef9c-3a81-499e-b7f8-d60a77952304)

![imagen](https://github.com/user-attachments/assets/df764cfd-85ca-4048-8748-c95a56bc2c8b)

![imagen](https://github.com/user-attachments/assets/cb991d1b-d1f5-489c-81f2-c25d4f9e394c)

![imagen](https://github.com/user-attachments/assets/7da6607c-7644-49af-8c13-97349d7226ef)

![imagen](https://github.com/user-attachments/assets/db8ce73a-6b51-4bcd-ad7e-b654074096e5)

![imagen](https://github.com/user-attachments/assets/5deea699-e5d1-4a09-85f4-809d07395ca1)

![imagen](https://github.com/user-attachments/assets/cc87c756-75a3-40e4-9df3-7437ea78ac4e)

![imagen](https://github.com/user-attachments/assets/de5a8329-3567-473f-bf40-8649d84279b6)

## Tests
- Marlin tested on **Ender 3-class printers** (@RF47 and @ianalexis)
- Klipper tested in Voron 2.4 and an FLSun T1 Pro @ShaneDelmore 
- Tested in Windows and MacOs.
This commit is contained in:
Noisyfox 2025-04-06 20:16:12 +08:00 committed by GitHub
commit 32efc176d9
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
16 changed files with 925 additions and 35 deletions

View file

@ -57,6 +57,12 @@ std::string get_calib_mode_name(CalibMode cali_mode, int stage)
return "vfa_tower_calib_mode";
case CalibMode::Calib_Retraction_tower:
return "retration_tower_calib_mode";
case CalibMode::Calib_Input_shaping_freq:
return "input_shaping_freq_calib_mode";
case CalibMode::Calib_Input_shaping_damp:
return "input_shaping_damp_calib_mode";
case CalibMode::Calib_Junction_Deviation:
return "junction_deviation_calib_mode";
default:
assert(false);
return "";
@ -196,6 +202,12 @@ CalibMode CalibUtils::get_calib_mode_by_name(const std::string name, int& cali_s
return CalibMode::Calib_VFA_Tower;
else if (name == "retration_tower_calib_mode")
return CalibMode::Calib_Retraction_tower;
else if (name == "input_shaping_freq_calib_mode")
return CalibMode::Calib_Input_shaping_freq;
else if (name == "input_shaping_damp_calib_mode")
return CalibMode::Calib_Input_shaping_damp;
else if (name == "junction_deviation_calib_mode")
return CalibMode::Calib_Junction_Deviation;
return CalibMode::Calib_None;
}