The acceleration setting exceeds the printer's maximum acceleration

Basic Information:

Printer Model: Prusa i3MK3S+
MCU / Printerboard: Einsy
Host / SBC RPi 5
[

Describe your issue:

Using automatic Input Shaping, from the two resulting graphs, Klipper suggested accel <= 3500 for both X and Y. So I set Acceleration->Outer wall and Top surface both to 3500 mm/s^2. Inner wall and Travel are both set to 10000. Normal printing 500, Bridge 50%, Sparse and Internal solid infill both set to 100%. First layer 300. I also checked Enable accel_to_decel and set it to 50%.

At the bottom right of the slicer, I often see:

WARNING:
The acceleration setting exceeds the printer's maximumm acceleration (machine_max_acceleration_extruding).
Orcs will automatically cap the acceleration speed to ensure it doesn't surpass the printer's cabilities. You can adjust the machine_max_acceleration_extruding value in your printer's configuration to get  higher speed. Jum to (inner_wall_acceleration).

What am I supposed to do? The warning is not specific. There are many acceleration settings in the slicer. Which printer’s maximum acceleration is being exceeded? Why it mentions machine_max_acceleration_extruding? Is it extruding acceleration? How to adjust the machine_max_acceleration_extruding value in the printer’s configuration? Also don’t know why there is a link to jump to inner wall acceleration.

Hi @printeruser ,

You can change Orca’s max acceleration in the printer settings. See screenshot below. Make sure to set X and Y accelerations/speeds to the same value.

1 Like

Thanks. How did you come up with 20000? Is 20000 the recommended value for Prusa i3MK3S+?

The real maximum acceleration is the value that should never be exceeded. It is typically set at the point where your motors start losing steps, or a slightly lower value.

On the other hand, the suggested value by Klipper’s input shaper is designed to provide optimal performance for normal printing, particularly if you want to avoid issues like ringing or ghosting.

I recommend setting a reasonable and safe maximum acceleration in Orca (perhaps 15000) for your printer. Then, configure the following accelerations in your profile:

  • External perimeters: 3500 or lower
  • Internal perimeters: 3500
  • Top surface: 3500 or lower
  • Solid infill: 3500 or higher, but not too much if you want good results
  • Sparse infill: 10000
  • Travels: 10000

These are just recommendations; feel free to test these values and adjust them according to your quality expectations.

2 Likes

Thanks. I will try out your values.

I performed an automatic input shaping using Klipper and KUSBA. In some regions along the X-axis, the ringing disappeared but in another region, they are still there. In this case, shall I reduce the accelerations or speeds? Outer wall speed has been reduced to 15mm/s already.

I recall one youtuber saying that although Klipper can do automatic Input Shaping, choose and enter the method and values automatically, sometimes it is better to manually choose the method as the one chosen by Klipper could be too aggressive. Is this really true?

There seems to be an overall confusion regarding these values and their meanings:

  • The acceleration and velocity values in the printer.cfg are not hard limits and can be overwritten during runtime with SET_VELOCITY_LIMIT. Slicers like Orca perform this action.

  • The acceleration and velocity values in the printer.cfg are used if no further instructions are given, such as a pure G1 X100.

  • Acceleration and velocity values need to be determined in a way that fits the given movement type and matches the printer’s capabilities.

    • It is unlikely that a standard i3 can meaningfully handle much above 3k in terms of acceleration and much above 150 mm/s in terms of velocity for printing.
    • Pure movements without extrusions can generally go much higher as long as no steps are skipped and the printer’s mechanics can handle it (some doubts about values like 10k are justified for an i3).
    • Extrusion moves depend on the quality requirements and the type. For example, infill can be a lot faster than outer walls.
    • Extrusion moves can be limited by the hotend’s capabilities. It is recommended to work with maximum volumetric extrusion rates rather than pure velocities. This depends on the hotend, extruder, and given filament.
  • The acceleration values given by the input shaper are in no way to be understood as a recommendation for the given printer.

    • Depending on the resonance profile and the recommended shaper, it is a recommendation for the maximum acceleration that should not be exceeded to avoid excessive smoothing.
    • The input shaper has no knowledge of the printer’s capabilities. A “bad” profile could potentially limit the acceleration, even though the printer could handle much higher values. Conversely, on a weaker printer with a good resonance profile, it could recommend values far above the printer’s mechanical capabilities.

So, a rough approach to getting correct values:

  1. Determine the maximum for the printer’s mechanical capabilities before steps are skipped or the printer can no longer maintain the required accuracy. This may include the maximum step rate the given board/steppers can achieve.
  2. Consider any limitations imposed by the recommended shaper and resonance profile.
  3. Determine the maximum volumetric flow of the extrusion system with the given filament.
  4. Within these ranges, determine the maximum velocity and acceleration to achieve the best quality at the minimum print time.

Side note and without sounding rude: We are a Klipper forum aimed at providing assistance with Klipper. We are not a forum to teach people the absolute basics of 3D printing. There are many online resources specifically targeting these fundamentals.

2 Likes

I came up with that after following this guide.

1 Like

Previously, I did an automatic Input Shaping to allow Klipper to select the frequencies and methods for me. At the end of my printer.cfg, I have:

#*# [input_shaper]
#*# shaper_type_x = ei
#*# shaper_freq_x = 43.4
#*# shaper_type_y = mzv
#*# shaper_freq_y = 35.6

In an attempt to reduce ringing further, I tried to use two other methods by adding another section of input_shaper before the SAVE_CONFIG section like:

# Manually enter by myself
[input_shaper]
shaper_freq_x: 43.4
shaper_freq_y: 35.6
shaper_type_x = 3hump_ei
shaper_type_y = 3hump_ei

### The end, on the end the printer will store it's tuning data, so do not edit it.

#*# <---------------------- SAVE_CONFIG ---------------------->
#*# DO NOT EDIT THIS BLOCK OR BELOW. The contents are auto-generated.
#*#
#*# [extruder]
#*# control = pid
#*# pid_kp = 23.851
#*# pid_ki = 2.240
#*# pid_kd = 63.504
#*#
#*# [bed_mesh default1]
#*# version = 1
#*# points =
#*# 	-0.081667, -0.047500, -0.030000, -0.062778, -0.110833, -0.198333, -0.307917
#*# 	0.032500, 0.057500, 0.035833, -0.005208, -0.034167, -0.140833, -0.361667
#*# 	0.028333, 0.044167, 0.030833, -0.004792, -0.010833, -0.095000, -0.310000
#*# 	0.049444, 0.055833, 0.038125, -0.000833, -0.040833, -0.063333, -0.307500
#*# 	0.073333, 0.118333, 0.073333, -0.020000, -0.030000, -0.100000, -0.328333
#*# 	0.021667, 0.035833, -0.009167, -0.068125, -0.141667, -0.245000, -0.397500
#*# 	-0.064167, -0.052500, -0.071667, -0.082500, -0.192500, -0.323611, -0.452500
#*# x_count = 7
#*# y_count = 7
#*# mesh_x_pps = 3
#*# mesh_y_pps = 3
#*# algo = bicubic
#*# tension = 0.2
#*# min_x = 24.0
#*# max_x = 228.0
#*# min_y = 6.0
#*# max_y = 210.0
#*#
#*# [probe]
#*# z_offset = 1.905
#*#
#*# [input_shaper]
#*# shaper_type_x = ei
#*# shaper_freq_x = 43.4
#*# shaper_type_y = mzv
#*# shaper_freq_y = 35.6

and changing the accelerations in OrcaSlicer to make sure that they don’t exceed the ones shown on the top right of the graphs. However, the resulting prints look very similar. Have I done anything wrong?

Does the manually entered section overwrites the one at the end of SAVE_CONFIG section? Since I don’t see noticeable difference in the resulting prints under different input shapers, I wonder if it is the other way around.

Check the klippy.log and the configuration that is printed out there.

1 Like

Just to add.
You can consider to redefine the SET_VELOCITY_LIMIT command in order to limit it to your printer.cfg values. (This is just a safety measure)

For example, if you have max_accel = 10000 in your printer.cfg, even if orca tries to do: SET_VELOCITY_LIMIT ACCEL=15000, as you have limited this, it will only apply to 10000.

Feel free to take a look:

##########################################################
# SET_VELOCITY_LIMIT
##########################################################
# Custom SET_VELOTITY_LIMIT -> Now the speed and accel params passed to command do not exceed the printer limits (configured in printer.cfg)
# minimum_cruise_ratio and square_corner_velocity don't have limitation for now
[gcode_macro SET_VELOCITY_LIMIT]
rename_existing: SET_VELOCITY_LIMIT_BASE
gcode:
    {% set config_max_velocity = printer.configfile.settings.printer.max_velocity|float %}
    {% set config_max_accel = printer.configfile.settings.printer.max_accel|float %}

    # Set max velocity
    {% if params.VELOCITY is defined %}
        {% if params.VELOCITY|float <= config_max_velocity %}
            {% set velocity = params.VELOCITY|float %}
        {% else %}
            {% set velocity = config_max_velocity %}
        {% endif %}
    {% elif printer.toolhead.max_velocity|float <= config_max_velocity %}
        {% set velocity = printer.toolhead.max_velocity|float %}
    {% else %}
        {% set velocity = config_max_velocity %}
    {% endif %}

    # Set max acceleration
    {% if params.ACCEL is defined %}
        {% if params.ACCEL|float <= config_max_accel %}
            {% set accel = params.ACCEL|float %}
        {% else %}
            {% set accel = config_max_accel %}
        {% endif %}
    {% elif printer.toolhead.max_accel|float <= config_max_accel %}
        {% set accel = printer.toolhead.max_accel|float %}
    {% else %}
        {% set accel = config_max_accel %}
    {% endif %}

    # Set minimum_cruise_ratio
    {% if params.MINIMUM_CRUISE_RATIO is defined %}
        {% set minimum_cruise_ratio = params.MINIMUM_CRUISE_RATIO|float %}
    {% else %}
        {% set minimum_cruise_ratio = printer.toolhead.minimum_cruise_ratio %}
    {% endif %}

    # Set square_corner_velocity
    {% if params.SQUARE_CORNER_VELOCITY is defined %}
        {% set square_corner_velocity = params.SQUARE_CORNER_VELOCITY|float %}
    {% else %}
        {% set square_corner_velocity = printer.toolhead.square_corner_velocity %}
    {% endif %}

    SET_VELOCITY_LIMIT_BASE VELOCITY={velocity} ACCEL={accel} MINIMUM_CRUISE_RATIO={minimum_cruise_ratio} SQUARE_CORNER_VELOCITY={square_corner_velocity}
1 Like

From klippy.log, it looks like the manually entered information (use 3hump_ei) overwrites whatever automatic Input Shaping put in the SAVE_CONFIG section.

Here is the log file:

klippy.log (50.6 KB)

So why there is no noticeable difference on the surface appearance (ringing) when different shapers are used? When using Input Shaping, do I have to disable PA? I used the automatic method:

SHAPER_CALIBRATE AXIS=X

SAVE_CONFIG

SHAPER_CALIBRATE AXIS=Y

SAVE_CONFIG

to get the frequencies and graphs. Don’t know why in the Resonance Compensation, they asked for disabling the PA:

Resonance Compensation - Klipper documentation