Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- [gcode_macro FEED_RATE_TEST]
- #Params:
- #ACCEL_STEPS (text, comma separated integers): acceleration values to test, passed as a string like ACCEL_STEPS="5000, 10000, 20000"
- #TEST_STEPS (text, comma separated texts): tests to run, passed as a string like TEST_STEPS="x_test,y_test,rect_test,diag_test"
- #- Options:
- # - x_test = Moves x axis
- # - y_test = Moves y axis
- # - rect_test = Moves in a rectangle
- # - diag_test = Moves x & y diagonally
- # - circle_test = Moves in a circle twice
- #DISTANCE_STEPS (text, comma separated floats): distance values to test, passed as a string like DISTANCE_STEPS="30, 22, 45.221"
- #SPEED_STEPS (text, comma separated floats): speed (mm/s) values to test, passed as a string like SPEED_STEPS="100, 120, 120.22"
- gcode:
- {% if printer.configfile.config.respond is not defined %}
- {action_raise_error("This gcode_macro requires the [respond] section in your printer.cfg")}
- {% endif %}
- # Ugly code to convert a string into an array in jinja
- # TEST_STEPS conversion
- {% set ns_test_steps = namespace(collector="", arr=[]) %}
- {% for char in params.TEST_STEPS|default("x_test,y_test,rect_test,diag_test")|string %}
- {% if char == "," or loop.last %}
- {% if loop.last %}
- {% set ns_test_steps.collector = ns_test_steps.collector ~ char %}
- {% endif %}
- {% set ns_test_steps.arr = ns_test_steps.arr + [ns_test_steps.collector|string] %}
- {% set ns_test_steps.collector = "" %}
- {% else %}
- {% set ns_test_steps.collector = ns_test_steps.collector ~ char %}
- {% endif %}
- {% endfor %}
- # SPEED_STEPS conversion
- {% set ns_speed_steps = namespace(collector="", arr=[]) %}
- {% for char in params.SPEED_STEPS|default("80.0")|string %}
- {% if char == "," or loop.last %}
- {% if loop.last %}
- {% set ns_speed_steps.collector = ns_speed_steps.collector ~ char %}
- {% endif %}
- {% set ns_speed_steps.arr = ns_speed_steps.arr + [ns_speed_steps.collector|float] %}
- {% set ns_speed_steps.collector = "" %}
- {% else %}
- {% set ns_speed_steps.collector = ns_speed_steps.collector ~ char %}
- {% endif %}
- {% endfor %}
- # DISTANCE_STEPS conversion
- {% set ns_distance_steps = namespace(collector="", arr=[]) %}
- {% for char in params.DISTANCE_STEPS|default("40.0")|string %}
- {% if char == "," or loop.last %}
- {% if loop.last %}
- {% set ns_distance_steps.collector = ns_distance_steps.collector ~ char %}
- {% endif %}
- {% set ns_distance_steps.arr = ns_distance_steps.arr + [ns_distance_steps.collector|float] %}
- {% set ns_distance_steps.collector = "" %}
- {% else %}
- {% set ns_distance_steps.collector = ns_distance_steps.collector ~ char %}
- {% endif %}
- {% endfor %}
- # ACCEL_STEPS conversion
- {% set ns_accel_steps = namespace(collector="", arr=[]) %}
- {% for char in params.ACCEL_STEPS|default(printer.toolhead.max_accel|string)|string %}
- {% if char == "," or loop.last %}
- {% if loop.last %}
- {% set ns_accel_steps.collector = ns_accel_steps.collector ~ char %}
- {% endif %}
- {% set ns_accel_steps.arr = ns_accel_steps.arr + [ns_accel_steps.collector|int] %}
- {% set ns_accel_steps.collector = "" %}
- {% else %}
- {% set ns_accel_steps.collector = ns_accel_steps.collector ~ char %}
- {% endif %}
- {% endfor %}
- # Variable assignment
- {% set center_x_position = printer.toolhead.axis_maximum.x / 2 %}
- {% set center_y_position = printer.toolhead.axis_maximum.y / 2 %}
- # Conversion steps variable assignment
- {% set accel_steps = ns_accel_steps.arr %}
- {% set test_steps = ns_test_steps.arr %}
- {% set distance_steps = ns_distance_steps.arr %}
- {% set speed_steps = ns_speed_steps.arr %}
- SAVE_GCODE_STATE NAME=speed_testing_macro
- {% set testRunCounter = namespace(value=0) %}
- RESPOND PREFIX="Speed-Test - " MSG="Starting Speed testing with"
- RESPOND PREFIX="- " MSG="distance_steps={distance_steps}"
- RESPOND PREFIX="- " MSG="speed_steps={speed_steps}"
- RESPOND PREFIX="- " MSG="accel_steps={accel_steps}"
- RESPOND PREFIX="- " MSG="test_steps={test_steps}"
- RESPOND PREFIX="" MSG="--------------------"
- # Homing
- {% if printer.toolhead.homed_axes != "xyz" %}
- G28
- {% endif %}
- G90
- G1 X{center_x_position} Y{center_y_position} Z25 F4000
- {% for distance_step in distance_steps %}
- {% for speed_step in speed_steps %}
- {% set speed_feedrate_step = speed_step * 60 %}
- {% for accel_step in accel_steps %}
- {% set testRunCounter.value = testRunCounter.value + 1 %}
- M204 S{accel_step}
- RESPOND PREFIX="Speed-Test - " MSG="Test-Run {testRunCounter.value} => distance: {distance_step} speed: {speed_step} acceleration: {accel_step}"
- {% for test_step in test_steps %}
- _{test_step|upper} FEEDRATE={speed_feedrate_step} DISTANCE={distance_step}
- {% endfor %}
- {% endfor %}
- {% endfor %}
- {% endfor %}
- RESTORE_GCODE_STATE NAME=speed_testing_macro
- [gcode_macro _X_TEST]
- description: Moves the head left/right
- gcode:
- {% set speed_feedrate = params.FEEDRATE|default(4800)|float %}
- {% set distance = params.DISTANCE|default(100)|float %}
- G91
- G1 x{distance} F{speed_feedrate}
- G1 x-{distance * 2} F{speed_feedrate}
- G1 x{distance} F{speed_feedrate}
- G90
- [gcode_macro _Y_TEST]
- description: Moves the head forward/backward
- gcode:
- {% set speed_feedrate = params.FEEDRATE|default(4800)|float %}
- {% set distance = params.DISTANCE|default(100)|float %}
- G91
- G1 y{distance} F{speed_feedrate}
- G1 y-{distance * 2} F{speed_feedrate}
- G1 y{distance} F{speed_feedrate}
- G90
- [gcode_macro _RECT_TEST]
- description: Moves the head in a rectangle
- gcode:
- {% set speed_feedrate = params.FEEDRATE|default(4800)|float %}
- {% set distance = params.DISTANCE|default(100)|float %}
- G91
- G1 x-{distance} F{speed_feedrate}
- G1 y-{distance} F{speed_feedrate}
- G1 x{distance * 2} F{speed_feedrate}
- G1 y{distance * 2} F{speed_feedrate}
- G1 x-{distance * 2} F{speed_feedrate}
- G1 y-{distance} F{speed_feedrate}
- G1 x{distance} F{speed_feedrate}
- G90
- [gcode_macro _DIAG_TEST]
- description: Moves the head diagonally. First spinning the stepper_x, then the stepper_y. (CoreXY)
- gcode:
- {% set speed_feedrate = params.FEEDRATE|default(4800)|float %}
- {% set distance = params.DISTANCE|default(100)|float %}
- G91
- G1 x{distance} y{distance} F{speed_feedrate}
- G1 x-{distance * 2} y-{distance * 2} F{speed_feedrate}
- G1 x{distance} y{distance} F{speed_feedrate}
- G1 x{distance} y-{distance} F{speed_feedrate}
- G1 x-{distance * 2} y{distance * 2} F{speed_feedrate}
- G1 x{distance} y-{distance} F{speed_feedrate}
- G90
- [gcode_macro _CIRCLE_TEST]
- description: Moves the head in a circle twice.
- gcode:
- {% set speed_feedrate = params.FEEDRATE|default(4800)|float %}
- {% set distance = params.DISTANCE|default(100)|float %}
- {% if printer.configfile.config.gcode_arcs is not defined %}
- {action_raise_error("The circle test requires the [gcode_arcs] section in your printer.cfg")}
- {% endif %}
- {% for count in range(2) %}
- G2 I{distance} J{distance} F{speed_feedrate}
- {% endfor %}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement