61 lines
2.6 KiB
INI
61 lines
2.6 KiB
INI
############################################################
|
|
###### AXE_MAP DETECTION AND ACCELEROMETER VALIDATION ######
|
|
############################################################
|
|
# Written by Frix_x#0161 #
|
|
|
|
[gcode_macro AXES_MAP_CALIBRATION]
|
|
gcode:
|
|
{% set z_height = params.Z_HEIGHT|default(20)|int %} # z height to put the toolhead before starting the movements
|
|
{% set speed = params.SPEED|default(80)|float * 60 %} # feedrate for the movements
|
|
{% set accel = params.ACCEL|default(1500)|int %} # accel value used to move on the pattern
|
|
{% set feedrate_travel = params.TRAVEL_SPEED|default(120)|int * 60 %} # travel feedrate between moves
|
|
{% set accel_chip = params.ACCEL_CHIP|default("adxl345") %} # ADXL chip name in the config
|
|
|
|
{% set mid_x = printer.toolhead.axis_maximum.x|float / 2 %}
|
|
{% set mid_y = printer.toolhead.axis_maximum.y|float / 2 %}
|
|
|
|
{% set accel = [accel, printer.configfile.settings.printer.max_accel]|min %}
|
|
{% set old_accel = printer.toolhead.max_accel %}
|
|
{% set old_accel_to_decel = printer.toolhead.max_accel_to_decel %}
|
|
{% set old_sqv = printer.toolhead.square_corner_velocity %}
|
|
|
|
|
|
{% if not 'xyz' in printer.toolhead.homed_axes %}
|
|
{ action_raise_error("Must Home printer first!") }
|
|
{% endif %}
|
|
|
|
{action_respond_info("")}
|
|
{action_respond_info("Starting accelerometer axe_map calibration")}
|
|
{action_respond_info("This operation can not be interrupted by normal means. Hit the \"emergency stop\" button to stop it if needed")}
|
|
{action_respond_info("")}
|
|
|
|
SAVE_GCODE_STATE NAME=STATE_AXESMAP_CALIBRATION
|
|
|
|
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_VELOCITY_LIMIT ACCEL={accel} ACCEL_TO_DECEL={accel} SQUARE_CORNER_VELOCITY={[(accel / 1000), 5.0]|max}
|
|
|
|
# Going to the start position
|
|
G1 Z{z_height} F{feedrate_travel / 8}
|
|
G1 X{mid_x - 15} Y{mid_y - 15} F{feedrate_travel}
|
|
G4 P500
|
|
|
|
ACCELEROMETER_MEASURE CHIP={accel_chip}
|
|
G4 P1000 # This first waiting time is to record the background accelerometer noise before moving
|
|
G1 X{mid_x + 15} F{speed}
|
|
G4 P1000
|
|
G1 Y{mid_y + 15} F{speed}
|
|
G4 P1000
|
|
G1 Z{z_height + 15} F{speed}
|
|
G4 P1000
|
|
ACCELEROMETER_MEASURE CHIP={accel_chip} NAME=axemap
|
|
|
|
RESPOND MSG="Analysis of the movements..."
|
|
RUN_SHELL_COMMAND CMD=shaketune PARAMS="--type axesmap --accel {accel}"
|
|
|
|
# Restore the previous acceleration values
|
|
SET_VELOCITY_LIMIT ACCEL={old_accel} ACCEL_TO_DECEL={old_accel_to_decel} SQUARE_CORNER_VELOCITY={old_sqv}
|
|
|
|
RESTORE_GCODE_STATE NAME=STATE_AXESMAP_CALIBRATION
|