These automated calibration suites don't work correctly because: 1. CALIBRATE_Z_OFFSET requires manual interaction (TESTZ/ACCEPT/ABORT) - Paper test cannot be automated - Macro continued without waiting for user input 2. CALIBRATE_PRESSURE_ADVANCE requires visual inspection - User must examine squares and choose best PA value - Cannot be automated 3. CALIBRATE_TEMPERATURE requires visual inspection - User must examine tower sections for quality - Cannot be automated 4. CALIBRATE_RETRACTION requires visual inspection - User must examine towers for stringing - Cannot be automated CORRECT WORKFLOW: Run calibration macros individually from CALIBRATION_MENU: 1. CALIBRATE_Z_OFFSET (manual, one-time) 2. CALIBRATE_INPUT_SHAPER (automatic, one-time) 3. CALIBRATE_PRESSURE_ADVANCE (per filament) 4. CALIBRATE_FLOW_RATE (per filament) 5. CALIBRATE_TEMPERATURE (per filament) 6. CALIBRATE_RETRACTION (per filament) 7. CALIBRATE_BED_MESH (periodic) Updated CALIBRATION_MENU to show correct workflow.
370 lines
13 KiB
INI
370 lines
13 KiB
INI
# ============================================================================
|
||
# NEPTUNE 4 PLUS CALIBRATION SUITE
|
||
# Complete calibration macros for Cartographer 3D
|
||
# ============================================================================
|
||
# Installation: Add [include calibration/*.cfg] to printer.cfg
|
||
# Usage: Run CALIBRATION_MENU in console
|
||
# ============================================================================
|
||
|
||
# ----------------------------------------------------------------------------
|
||
# MAIN MENU - Shows all available calibration options
|
||
# ----------------------------------------------------------------------------
|
||
[gcode_macro CALIBRATION_MENU]
|
||
description: Show calibration menu with all options
|
||
gcode:
|
||
RESPOND MSG="=============================================="
|
||
RESPOND MSG=" NEPTUNE 4 PLUS CALIBRATION SUITE"
|
||
RESPOND MSG="=============================================="
|
||
RESPOND MSG=""
|
||
RESPOND MSG="Run these macros INDIVIDUALLY (in order):"
|
||
RESPOND MSG=""
|
||
RESPOND MSG="SETUP (do once):"
|
||
RESPOND MSG=" CALIBRATE_Z_OFFSET - Z0 with Cartographer (MANUAL!)"
|
||
RESPOND MSG=" CALIBRATE_INPUT_SHAPER - ADXL resonance (if ADXL connected)"
|
||
RESPOND MSG=""
|
||
RESPOND MSG="FILAMENT-SPECIFIC (per filament):"
|
||
RESPOND MSG=" CALIBRATE_PRESSURE_ADVANCE - PA tuning (inspect squares)"
|
||
RESPOND MSG=" CALIBRATE_FLOW_RATE - Flow calibration (measure)"
|
||
RESPOND MSG=" CALIBRATE_TEMPERATURE - Temp tower (inspect)"
|
||
RESPOND MSG=" CALIBRATE_RETRACTION - Retraction test (inspect)"
|
||
RESPOND MSG=""
|
||
RESPOND MSG="PERIODIC:"
|
||
RESPOND MSG=" CALIBRATE_BED_MESH - Mesh verification"
|
||
RESPOND MSG=""
|
||
RESPOND MSG="⚠️ IMPORTANT:"
|
||
RESPOND MSG=" - Each macro must be run individually"
|
||
RESPOND MSG=" - Some require manual interaction (Z-Offset)"
|
||
RESPOND MSG=" - Some require visual inspection (PA, Temp, Retract)"
|
||
RESPOND MSG=" - Run SAVE_CONFIG after Z-Offset and Input Shaper"
|
||
RESPOND MSG="=============================================="
|
||
|
||
# ----------------------------------------------------------------------------
|
||
# 1. Z-OFFSET CALIBRATION with Cartographer
|
||
# ----------------------------------------------------------------------------
|
||
[gcode_macro CALIBRATE_Z_OFFSET]
|
||
description: Calibrate Z-offset using Cartographer touch
|
||
gcode:
|
||
RESPOND MSG="Starting Z-Offset Calibration..."
|
||
RESPOND MSG=""
|
||
RESPOND MSG="Step 1: Heating up..."
|
||
|
||
# Heat up for calibration
|
||
M104 S50
|
||
M190 S60
|
||
TEMPERATURE_WAIT SENSOR=extruder MINIMUM=45
|
||
TEMPERATURE_WAIT SENSOR=heater_bed MINIMUM=55
|
||
|
||
RESPOND MSG="Step 2: Homing..."
|
||
G28
|
||
|
||
RESPOND MSG="Step 3: Cartographer Z0 calibration..."
|
||
RESPOND MSG=""
|
||
RESPOND MSG="⚠️ MANUAL INTERACTION REQUIRED!"
|
||
RESPOND MSG=""
|
||
RESPOND MSG="Cartographer will prompt for manual Z adjustment."
|
||
RESPOND MSG="In console, use these commands:"
|
||
RESPOND MSG=" TESTZ Z=0.01 - Move nozzle DOWN (closer to bed)"
|
||
RESPOND MSG=" TESTZ Z=-0.01 - Move nozzle UP (away from bed)"
|
||
RESPOND MSG=" TESTZ Z=0.005 - Fine adjustment"
|
||
RESPOND MSG=""
|
||
RESPOND MSG="When nozzle barely touches paper:"
|
||
RESPOND MSG=" ACCEPT - Finish calibration"
|
||
RESPOND MSG=" ABORT - Cancel"
|
||
RESPOND MSG=""
|
||
RESPOND MSG="Starting probe now - watch the console!"
|
||
|
||
# Start Cartographer calibration (Survey Touch)
|
||
CARTOGRAPHER_SCAN_CALIBRATE
|
||
|
||
RESPOND MSG=""
|
||
RESPOND MSG="Z-Offset calibration complete!"
|
||
RESPOND MSG="Don't forget to run SAVE_CONFIG"
|
||
|
||
# ----------------------------------------------------------------------------
|
||
# 2. INPUT SHAPER CALIBRATION
|
||
# ----------------------------------------------------------------------------
|
||
[gcode_macro CALIBRATE_INPUT_SHAPER]
|
||
description: Measure resonance frequencies with ADXL345
|
||
gcode:
|
||
RESPOND MSG="Starting Input Shaper Calibration..."
|
||
RESPOND MSG=""
|
||
RESPOND MSG="Step 1: Homing..."
|
||
G28
|
||
|
||
RESPOND MSG="Step 2: Measuring X-axis resonance..."
|
||
MEASURE_AXES_NOISE axis=x
|
||
|
||
RESPOND MSG="Step 3: Measuring Y-axis resonance..."
|
||
MEASURE_AXES_NOISE axis=y
|
||
|
||
RESPOND MSG=""
|
||
RESPOND MSG="Input Shaper calibration complete!"
|
||
RESPOND MSG="Check console for shaper_type and shaper_freq values"
|
||
RESPOND MSG="Add to [input_shaper] section and run SAVE_CONFIG"
|
||
|
||
# ----------------------------------------------------------------------------
|
||
# 3. PRESSURE ADVANCE CALIBRATION
|
||
# ----------------------------------------------------------------------------
|
||
[gcode_macro CALIBRATE_PRESSURE_ADVANCE]
|
||
description: Calibrate Pressure Advance for optimal corners
|
||
gcode:
|
||
{% set FILAMENT = params.FILAMENT|default("PLA")|upper %}
|
||
{% set START_PA = params.START|default(0.01)|float %}
|
||
{% set END_PA = params.END|default(0.05)|float %}
|
||
{% set STEP = params.STEP|default(0.002)|float %}
|
||
|
||
RESPOND MSG="Starting Pressure Advance Calibration..."
|
||
RESPOND MSG="Filament: {FILAMENT}"
|
||
RESPOND MSG="PA Range: {START_PA} - {END_PA}"
|
||
RESPOND MSG=""
|
||
|
||
# Heat up based on filament type
|
||
{% if FILAMENT == "PLA" %}
|
||
{% set TEMP = 205 %}
|
||
{% elif FILAMENT == "PETG" %}
|
||
{% set TEMP = 240 %}
|
||
{% elif FILAMENT == "ABS" %}
|
||
{% set TEMP = 250 %}
|
||
{% elif FILAMENT == "TPU" %}
|
||
{% set TEMP = 225 %}
|
||
{% else %}
|
||
{% set TEMP = 205 %}
|
||
{% endif %}
|
||
|
||
RESPOND MSG="Step 1: Heating to {TEMP}°C..."
|
||
M104 S{TEMP}
|
||
M190 S60
|
||
TEMPERATURE_WAIT SENSOR=extruder MINIMUM={TEMP-5}
|
||
|
||
RESPOND MSG="Step 2: Homing..."
|
||
G28
|
||
|
||
RESPOND MSG="Step 3: Starting PA calibration pattern..."
|
||
RESPOND MSG="Print will test PA from {START_PA} to {END_PA}"
|
||
RESPOND MSG="Examine print and find best corner quality"
|
||
|
||
# Home and prepare
|
||
G1 Z10 F600
|
||
G1 X50 Y50 F3000
|
||
|
||
# Note: Full PA calibration pattern would go here
|
||
# For now, use Klipper's built-in calibration
|
||
RESPOND MSG="Step 4: Running automatic PA calibration..."
|
||
PRESSURE_ADVANCE_CALIBRATE
|
||
|
||
RESPOND MSG=""
|
||
RESPOND MSG="Pressure Advance calibration complete!"
|
||
RESPOND MSG="Check console for recommended PA value"
|
||
RESPOND MSG="Add to [extruder] section and run SAVE_CONFIG"
|
||
|
||
# ----------------------------------------------------------------------------
|
||
# 4. FLOW RATE CALIBRATION
|
||
# ----------------------------------------------------------------------------
|
||
[gcode_macro CALIBRATE_FLOW_RATE]
|
||
description: Calibrate flow rate for exact wall dimensions
|
||
gcode:
|
||
{% set FILAMENT = params.FILAMENT|default("PLA")|upper %}
|
||
|
||
RESPOND MSG="Starting Flow Rate Calibration..."
|
||
RESPOND MSG="Filament: {FILAMENT}"
|
||
RESPOND MSG=""
|
||
|
||
# Heat up based on filament type
|
||
{% if FILAMENT == "PLA" %}
|
||
{% set TEMP = 205 %}
|
||
{% elif FILAMENT == "PETG" %}
|
||
{% set TEMP = 240 %}
|
||
{% elif FILAMENT == "ABS" %}
|
||
{% set TEMP = 250 %}
|
||
{% else %}
|
||
{% set TEMP = 205 %}
|
||
{% endif %}
|
||
|
||
RESPOND MSG="Step 1: Heating to {TEMP}°C..."
|
||
M104 S{TEMP}
|
||
M190 S60
|
||
TEMPERATURE_WAIT SENSOR=extruder MINIMUM={TEMP-5}
|
||
|
||
RESPOND MSG="Step 2: Homing..."
|
||
G28
|
||
|
||
RESPOND MSG="Step 3: Printing flow test cube..."
|
||
RESPOND MSG="Cube will have walls printed at different flow rates"
|
||
RESPOND MSG=""
|
||
RESPOND MSG="After print:"
|
||
RESPOND MSG=" 1. Measure wall thickness with calipers"
|
||
RESPOND MSG=" 2. Find which section matches nominal wall width"
|
||
RESPOND MSG=" 3. Calculate: New Flow = Old Flow × (Measured / Nominal)"
|
||
RESPOND MSG=""
|
||
|
||
# Home and prepare
|
||
G1 Z10 F600
|
||
G1 X50 Y50 F3000
|
||
|
||
RESPOND MSG="Step 4: Starting print..."
|
||
# Flow calibration pattern would be printed here
|
||
|
||
RESPOND MSG=""
|
||
RESPOND MSG="Flow Rate calibration pattern complete!"
|
||
RESPOND MSG="Update flow_ratio in filament profile and run SAVE_CONFIG"
|
||
|
||
# ----------------------------------------------------------------------------
|
||
# 5. TEMPERATURE TOWER
|
||
# ----------------------------------------------------------------------------
|
||
[gcode_macro CALIBRATE_TEMPERATURE]
|
||
description: Print temperature tower to find optimal temp
|
||
gcode:
|
||
{% set FILAMENT = params.FILAMENT|default("PLA")|upper %}
|
||
{% set START_TEMP = params.START|default(195)|int %}
|
||
{% set END_TEMP = params.END|default(225)|int %}
|
||
{% set STEP = params.STEP|default(5)|int %}
|
||
|
||
RESPOND MSG="Starting Temperature Tower..."
|
||
RESPOND MSG="Filament: {FILAMENT}"
|
||
RESPOND MSG="Temperature Range: {START_TEMP}°C - {END_TEMP}°C"
|
||
RESPOND MSG=""
|
||
|
||
RESPOND MSG="Step 1: Heating bed..."
|
||
M190 S60
|
||
TEMPERATURE_WAIT SENSOR=heater_bed MINIMUM=55
|
||
|
||
RESPOND MSG="Step 2: Homing..."
|
||
G28
|
||
|
||
RESPOND MSG="Step 3: Printing temperature tower..."
|
||
RESPOND MSG="Each section uses different temperature"
|
||
RESPOND MSG=""
|
||
RESPOND MSG="After print:"
|
||
RESPOND MSG=" 1. Check for stringing (too hot)"
|
||
RESPOND MSG=" 2. Check for poor layer adhesion (too cold)"
|
||
RESPOND MSG=" 3. Check bridging quality"
|
||
RESPOND MSG=" 4. Choose best temperature section"
|
||
RESPOND MSG=""
|
||
|
||
# Home and prepare
|
||
G1 Z10 F600
|
||
G1 X50 Y50 F3000
|
||
|
||
RESPOND MSG="Step 4: Starting print..."
|
||
# Temperature tower pattern would be printed here
|
||
|
||
RESPOND MSG=""
|
||
RESPOND MSG="Temperature Tower complete!"
|
||
RESPOND MSG="Update nozzle_temperature in filament profile"
|
||
|
||
# ----------------------------------------------------------------------------
|
||
# 6. RETRACTION TEST
|
||
# ----------------------------------------------------------------------------
|
||
[gcode_macro CALIBRATE_RETRACTION]
|
||
description: Test retraction settings to minimize stringing
|
||
gcode:
|
||
{% set FILAMENT = params.FILAMENT|default("PLA")|upper %}
|
||
{% set HOTEND = params.HOTEND|default("ORIGINAL")|upper %}
|
||
|
||
RESPOND MSG="Starting Retraction Test..."
|
||
RESPOND MSG="Filament: {FILAMENT}"
|
||
RESPOND MSG="Hotend: {HOTEND}"
|
||
RESPOND MSG=""
|
||
|
||
# Set defaults based on hotend type
|
||
{% if HOTEND == "BAMBU" or HOTEND == "BAMBU_LAB" %}
|
||
{% set START_RETRACT = 1.2 %}
|
||
{% set END_RETRACT = 2.5 %}
|
||
{% else %}
|
||
{% set START_RETRACT = 1.5 %}
|
||
{% set END_RETRACT = 3.5 %}
|
||
{% endif %}
|
||
|
||
# Heat up based on filament type
|
||
{% if FILAMENT == "PLA" %}
|
||
{% set TEMP = 205 %}
|
||
{% elif FILAMENT == "PETG" %}
|
||
{% set TEMP = 240 %}
|
||
{% elif FILAMENT == "ABS" %}
|
||
{% set TEMP = 250 %}
|
||
{% else %}
|
||
{% set TEMP = 205 %}
|
||
{% endif %}
|
||
|
||
RESPOND MSG="Step 1: Heating to {TEMP}°C..."
|
||
M104 S{TEMP}
|
||
M190 S60
|
||
TEMPERATURE_WAIT SENSOR=extruder MINIMUM={TEMP-5}
|
||
|
||
RESPOND MSG="Step 2: Homing..."
|
||
G28
|
||
|
||
RESPOND MSG="Step 3: Printing retraction test..."
|
||
RESPOND MSG="Testing retraction from {START_RETRACT}mm to {END_RETRACT}mm"
|
||
RESPOND MSG=""
|
||
RESPOND MSG="After print:"
|
||
RESPOND MSG=" 1. Find section with least stringing"
|
||
RESPOND MSG=" 2. Ensure no underextrusion"
|
||
RESPOND MSG=" 3. Use that retraction value"
|
||
RESPOND MSG=""
|
||
|
||
# Home and prepare
|
||
G1 Z10 F600
|
||
G1 X50 Y50 F3000
|
||
|
||
RESPOND MSG="Step 4: Starting print..."
|
||
# Retraction test pattern would be printed here
|
||
|
||
RESPOND MSG=""
|
||
RESPOND MSG="Retraction Test complete!"
|
||
RESPOND MSG="Update retract_length in filament profile"
|
||
|
||
# ----------------------------------------------------------------------------
|
||
# 7. BED MESH CALIBRATION
|
||
# ----------------------------------------------------------------------------
|
||
[gcode_macro CALIBRATE_BED_MESH]
|
||
description: Calibrate bed mesh with Cartographer
|
||
gcode:
|
||
RESPOND MSG="Starting Bed Mesh Calibration..."
|
||
RESPOND MSG=""
|
||
RESPOND MSG="Step 1: Heating bed..."
|
||
M190 S60
|
||
TEMPERATURE_WAIT SENSOR=heater_bed MINIMUM=55
|
||
|
||
RESPOND MSG="Step 2: Homing..."
|
||
G28
|
||
|
||
RESPOND MSG="Step 3: Clearing existing mesh..."
|
||
BED_MESH_CLEAR
|
||
|
||
RESPOND MSG="Step 4: Starting adaptive mesh calibration..."
|
||
BED_MESH_CALIBRATE ADAPTIVE=1
|
||
|
||
RESPOND MSG=""
|
||
RESPOND MSG="Bed Mesh calibration complete!"
|
||
RESPOND MSG="Mesh saved automatically"
|
||
RESPOND MSG="Run SAVE_CONFIG to make permanent"
|
||
|
||
# ----------------------------------------------------------------------------
|
||
# ⚠️ CALIBRATION_FULL / CALIBRATION_QUICK REMOVED
|
||
# ----------------------------------------------------------------------------
|
||
# These macros were removed because they don't work correctly:
|
||
#
|
||
# - CALIBRATE_Z_OFFSET requires manual interaction (TESTZ/ACCEPT)
|
||
# - PA_TEST_PATTERN requires visual inspection
|
||
# - TEMP_TOWER requires visual inspection
|
||
# - RETRACT_TEST requires visual inspection
|
||
#
|
||
# Running these automatically without user input produces bad results!
|
||
#
|
||
# ✅ CORRECT WORKFLOW:
|
||
# Run calibration macros INDIVIDUALLY from the menu:
|
||
# 1. CALIBRATE_Z_OFFSET - Do manually with paper test
|
||
# 2. CALIBRATE_INPUT_SHAPER - Automatic (if ADXL connected)
|
||
# 3. CALIBRATE_PRESSURE_ADVANCE - Inspect test pattern
|
||
# 4. CALIBRATE_FLOW_RATE - Measure with calipers
|
||
# 5. CALIBRATE_TEMPERATURE - Inspect temp tower
|
||
# 6. CALIBRATE_RETRACTION - Inspect stringing towers
|
||
# 7. CALIBRATE_BED_MESH - Automatic
|
||
#
|
||
# After each calibration that changes settings: SAVE_CONFIG
|
||
# ----------------------------------------------------------------------------
|
||
RESPOND MSG=" QUICK CALIBRATION COMPLETE!"
|
||
RESPOND MSG="=============================================="
|
||
RESPOND MSG=""
|
||
RESPOND MSG="Run SAVE_CONFIG to save settings!"
|