Disclaimer: This is an independent resource site. Not affiliated with the Voron project or its development team.

Voron Resonance Measurement Guide — ADXL345, Manual, and Analysis

Calibration Klipper Advanced

Every Voron printer has resonant frequencies — natural vibration modes that get excited by the rapid acceleration and deceleration of printing. These resonances manifest as ringing (ghosting) in your prints, visible as parallel ripples after sharp corners or text features. The solution is input shaper, which Klipper uses to cancel out specific frequencies by applying a controlled counter-vibration. But effective input shaping requires accurate resonance measurements. This guide covers everything from mounting an ADXL345 accelerometer on your Voron to interpreting frequency response graphs and choosing the right shaper configuration. Last updated: May 2025.

Why Measure Resonance?

Voron printers are designed for high speed, but their rigid frame and gantry still have resonant frequencies. Without input shaper, acceleration is typically limited to 3000-5000 mm/s² before ringing becomes visible. With proper resonance measurement and input shaper tuning, Vorons can reach 10,000-20,000 mm/s² with minimal ringing. The key insight is that different Voron builds have different resonant frequencies depending on:

Because these factors vary between individual printers, generic input shaper settings from another person's Voron will never be as good as measuring your own printer's actual resonance.

Method 1: ADXL345 Accelerometer — The Professional Approach

The ADXL345 is a 3-axis accelerometer that Klipper can read directly via SPI or I2C. Connecting one to your Voron gives you a direct measurement of the vibration at the toolhead, which is exactly what you need to tune input shaper.

Hardware Options

Mounting the Accelerometer

Accelerometer placement is critical for accurate results. The sensor must measure the same vibrations that affect the nozzle, not the frame or the gantry structure independently.

  1. Mount as close to the nozzle as possible. The ideal location is on the toolhead carriage, directly above the hotend heatsink. If you have a StealthBurner, there are printed mounts available on Printables and the Voron User Mods repository.
  2. Use a rigid mount. The accelerometer must be mechanically coupled to the toolhead. A flexible mount (foam tape, loose zip ties, long wires) will damp out the very vibrations you're trying to measure, giving you false low readings.
  3. Orient consistently. Mount the accelerometer so that its X-axis aligns with the printer's X-axis and its Y-axis with the printer's Y-axis. Label the orientation on the mount for repeatability.
  4. Secure the cable. The accelerometer cable should be routed to prevent it from whipping during high-speed moves, which would add noise to the measurements.
  5. Test with a manual move. After mounting, run a manual X or Y move while watching the ACCELEROMETER_QUERY output. The values should change smoothly and return to near zero when stopped.

Klipper Configuration for ADXL345

Add the following to your printer.cfg. The exact pins depend on whether you're using SPI, I2C, or USB-Pico:

# Example: ADXL345 on USB via Raspberry Pi Pico
[mcu rpi_pico]
serial: /dev/serial/by-id/usb-Klipper_rp2040_...

# Example: ADXL345 connected to mainboard via SPI
[adxl345]
cs_pin: mcu:PA4  # adjust for your board
spi_bus: spi1    # adjust for your board

# Example: ADXL345 on I2C via Raspberry Pi GPIO
[adxl345]
# No cs_pin needed for I2C
i2c_bus: i2c.1   # for Pi GPIO 2/3
i2c_address: 83  # default ADXL345 address (0x53)
    

After adding the config and restarting Klipper, test the connection:

# In the Klipper Console (Fluidd/Mainsail terminal tab)
ACCELEROMETER_QUERY
# Expected output:
# Recv: adxl345 values (x, y, z): 22.12, 15.34, 980.87
# The Z value should be ~980 (gravity) when the toolhead is at rest

MEASURE_AXES_NOISE
# Expected output shows noise floor for each axis
# Values below 10-20 mg are good
    

Collecting Resonance Data

Once your accelerometer is confirmed working, you can run the resonance measurement procedure. Klipper will move the toolhead at varying frequencies while recording the accelerometer data.

Basic Resonance Test

# Test X-axis resonance
TEST_RESONANCES AXIS=X

# Test Y-axis resonance
TEST_RESONANCES AXIS=Y

# Test both axes (takes longer but provides complete data)
TEST_RESONANCES AXIS=1,1
    

The test moves the toolhead back and forth on the specified axis, sweeping through frequencies from 5 Hz to 133 Hz (configurable with FREQ_START and FREQ_END parameters). The output appears in the console and is also saved to /tmp/resonances_x_*.csv and /tmp/resonances_y_*.csv.

Advanced Testing Options

For more precise measurements, especially on larger Voron 2.4 350mm builds:

# Test a wider frequency range (covers larger printers with lower resonances)
TEST_RESONANCES AXIS=X FREQ_START=10 FREQ_END=150 ACCEL_PER_HZ=75

# Higher sweep density (more frequency points = smoother graph)
TEST_RESONANCES AXIS=X HZ_PER_SECOND=2  # default is 1

# Reduce testing acceleration to prevent mechanical damage
TEST_RESONANCES AXIS=X ACCEL_PER_HZ=75  # default is 75

# Maximum input shaper frequency (for high-speed Vorons)
TEST_RESONANCES AXIS=Y MAX_SMOOTHING=50
    

Interpreting the Frequency Response Graph

Klipper generates a frequency response graph saved as a PNG in the same directory as the CSV data. Here's how to read it:

Ideally, a Voron should show:

If you see many peaks or very broad peaks, check:

Generating Shaper Recommendations

Once you have clean resonance data, Klipper can automatically recommend the best shaper configuration:

# Run full calibration with shaper recommendations
SHAPER_CALIBRATE

# This runs resonance tests on both axes, analyzes the data,
# and outputs recommended settings like:
# Recommended shaper type for X: zv (frequency = 45.2 Hz, damping = 0.15)
# Recommended shaper type for Y: mzv (frequency = 52.1 Hz, damping = 0.20)
    

Klipper evaluates several shaper types and ranks them by effectiveness:

The recommendation includes a "smoothing" value — higher smoothing means more aggressive vibration cancellation at the cost of slightly rounding sharp corners. For Voron printers, MZV or EI are typically the best balance of effective ringing reduction and minimal corner smoothing.

Saving the Results

# After SHAPER_CALIBRATE finishes and you're satisfied with the recommendation:
SAVE_CONFIG

# This appends the recommended shaper settings to your printer.cfg
# and restarts Klipper. The recommended section looks like:
# [input_shaper]
# shaper_type_x: mzv
# shaper_freq_x: 45.2
# shaper_type_y: mzv
# shaper_freq_y: 52.1
    

Method 2: Manual (No Accelerometer) Approach

If you don't have an accelerometer, you can still tune input shaper using a test print. This method is less precise but can achieve 80-90% of the improvement.

  1. Print a ringing test tower (available on Printables, thingiverse, or generate one with a gcode generator). The tower has sharp corners or text at various heights, with each section using a different shaper frequency.
  2. Inspect each section under good lighting. The section with the least ringing tells you the correct shaper frequency for that axis.
  3. Repeat for the other axis (you need two test towers, or a single tower that tests both axes at different heights).
  4. Enter the frequencies into your printer.cfg manually in the [input_shaper] section.

Manual tuning typically requires 3-5 iterations to dial in. The accelerometer method achieves the same result in a single automated pass and is significantly more accurate. If you're building a new Voron, spending $10-15 on an ADXL345 and a Pico is one of the best upgrades you can make.

Advanced: Plotting and Analysis Tools

For power users who want deeper analysis, the CSV data from TEST_RESONANCES can be plotted with external tools:

# Copy CSV data from the Pi to your computer
scp pi@voron.local:/tmp/resonances_x_*.csv .

# Python script to plot the data
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np

# Load the CSV
data = pd.read_csv("resonances_x_20250501_123456.csv")

# Convert to numpy arrays
freqs = data.iloc[:, 0].values
psd_x = data.iloc[:, 1].values
psd_y = data.iloc[:, 2].values
psd_z = data.iloc[:, 3].values

# Plot
plt.figure(figsize=(12, 6))
plt.plot(freqs, psd_x, label="X-axis")
plt.plot(freqs, psd_y, label="Y-axis")
plt.plot(freqs, psd_z, label="Z-axis")
plt.xlabel("Frequency (Hz)")
plt.ylabel("Power Spectral Density")
plt.title("Voron Resonance Measurement - X Axis Test")
plt.legend()
plt.grid(True, alpha=0.3)
plt.savefig("voron_resonance_plot.png", dpi=150)
    

You can also use Klipper's built-in graphing by navigating to http://voron.local:7125/server/files/tmp/ in your browser (Moonraker API) to view the generated PNG files directly.

Common Resonance Measurement Pitfalls

Re-Measurement Schedule

Resonant frequencies are not permanent. Re-measure your Voron's resonance:

Resonance measurement is one of the most impactful calibration procedures you can perform on your Voron. A properly shaper-tuned machine running at 10,000 mm/s² will produce cleaner prints than an untuned machine at 3,000 mm/s². The time invested in setting up an accelerometer and running SHAPER_CALIBRATE pays for itself in the first print.

🚨

Voron LDO 商标 · 域名 打包出售

Trademark & domains sold as one package

Voron LDO 商标 (中国区 · China)
voron.cn
voronldo.com
ldovoron.com

有意者请联系 · Contact us:

📧 346290742@qq.com
📞 +86 13522926174