open4neptune-new/optimized_user_settings.cfg
root 16fefc72ef Add optimized PRINT_END_NOCCI macro (hybrid version)
Combined best features from printer.cfg PRINT_END and custom version:

From printer.cfg:
- END_TUNE beeper jingle
- Park position X0 Y315 (better visibility)

From custom version:
- Detailed console/LCD messages
- M84 to disable steppers
- Higher Z-park (10mm)
- Both Frame_Light and Part_Light OFF
- Filament sensors disabled

Usage: Call PRINT_END_NOCCI in slicer end gcode
2026-03-12 14:13:16 +00:00

437 lines
14 KiB
INI

# ============================================================================
# USER SETTINGS - Neptune 4 Plus with Cartographer 3D
# ============================================================================
# Includes are loaded in order - later includes override earlier ones
# ============================================================================
[include KNCM_settings.cfg] # Nozzle cleaning macros
[include calibration/*.cfg] # Calibration suite (Z-offset, PA, etc.)
[skew_correction]
#[probe]
#pin:^PA11
#x_offset: -24.25
#y_offset: 20.45
#z_offset = 0.0
#speed: 6.0
#samples: 3
#samples_result: median
#sample_retract_dist: 3.0
#samples_tolerance: 0.025
#samples_tolerance_retries: 3
#[resonance_tester]
#accel_chip_x: adxl345 x
#accel_chip_y: adxl345 y
#max_smoothing: 0.15
#probe_points:
# 162.5, 162.5, 20
[stepper_z]
endstop_pin: probe:z_virtual_endstop
homing_retract_dist: 0
[mcu cartographer] # See https://www.klipper3d.org/Config_Reference.html#mcu
# Remove either the serial or canbus_uuid line dependant on your setup.
serial: /dev/serial/by-id/usb-Cartographer_614e_0A0002000643303459323220-if00
#canbus_uuid: <blank>
#restart_method: command # Not needed for probes using CAN.
[cartographer]
mcu: cartographer
x_offset: 0 # This is the offset of your probe from the nozzle tip, to the centre of the coil.
y_offset: 22 # This is the offset of your probe from the nozzle tip, to the centre of the coil.
verbose: no # For extra output
[bed_mesh]
zero_reference_position: 165, 165 # The centre of your bed.
speed: 300
horizontal_move_z: 3
mesh_min: 10, 21 # The first probed coordinate, nearest to the origin. This coordinate is relative to the probe's location.
mesh_max: 300.75, 315.45 # The probed coordinate farthest from the origin. This is not necessarily the last point probed, as the probing process occurs in a zig-zag fashion. As with mesh_min, this coordinate is relative to the probe's location.
probe_count: 20, 20
adaptive_margin: 10
mesh_pps: 0,0 # Disable interpolation - mesh is probably dense enough
[temperature_sensor cartographer]
sensor_type: temperature_mcu
sensor_mcu: cartographer
min_temp: 5
max_temp: 105
[adxl345]
# Select 1 of the cs_pin below depending on the probe you have.
# Having the wrong one selected will cause an Endless Bootloop
# Cartographer V4 has int2 connected to the probes PA1 pin
cs_pin: cartographer:PA3 # For Cartographer V3
#cs_pin: cartographer:PA0 # For Cartographer V4
spi_bus: spi1
[resonance_tester]
accel_chip: adxl345
probe_points:
165, 165, 20 # Fill out the blank with x and y coordinates where you want to run the resonance test.
#[scanner]
#serial: /dev/serial/by-id/usb-Cartographer_614e_0A0002000643303459323220-if00
# Offsets are measured from the centre of your coil, to the tip of your nozzle
# on a level axis. It is vital that this is accurate.
#x_offset: 0
# adjust for your cartographers offset from nozzle to middle of coil
#y_offset: 22
# adjust for your cartographers offset from nozzle to middle of coil
##
#backlash_comp: 0.01346
# Backlash compensation distance for removing Z backlash before measuring
# the sensor response.
#sensor: cartographer
# this must be set as cartographer unless using IDM etc.
#sensor_alt: carto
# alternate name to call commands. CARTO_TOUCH etc
#mesh_runs: 2
# Number of passes to make during mesh scan.
[filament_switch_sensor filament_sensor]
pause_on_runout: True
#insert_gcode:
# M117 Insert Detected
runout_gcode:
{action_respond_info("FILAMENT SENSOR TRIGGERED")}
M117 Runout Detected
## The minimum amount of time in seconds to delay between events.
## Events triggered during this time period will be silently
## ignored. The default is 3 seconds.
event_delay: 5.0
## The amount of time to delay, in seconds, between the pause command
## dispatch and execution of the runout_gcode. It may be useful to
## increase this delay if OctoPrint exhibits strange pause behavior.
## Default is 0.5 seconds.
pause_delay: 1.5
switch_pin: PA12
[filament_motion_sensor filament_motion]
switch_pin: PC1
detection_length: 8.00 # Supports down to 2.88
extruder: extruder
pause_on_runout: False
## The minimum amount of time in seconds to delay between events.
## Events triggered during this time period will be silently
## ignored. The default is 3 seconds.
event_delay: 5.0
## The amount of time to delay, in seconds, between the pause command
## dispatch and execution of the runout_gcode. It may be useful to
## increase this delay if OctoPrint exhibits strange pause behavior.
## Default is 0.5 seconds.
pause_delay: 2.0
runout_gcode:
{action_respond_info("FILAMENT MOTION TRIGGERED")}
M117 Runout Detected
## ---------------------------------------------------------------------------- ##
## PRINT_START MACRO ##
## ---------------------------------------------------------------------------- ##
## Start print gcode defined here. In slicer, use only the following lines for start gcode:
## in slicer, use only the following lines for start gcode:
## PrusaSlicer: ## PRINT_START EXTRUDER_TEMP=[first_layer_temperature] BED_TEMP=[first_layer_bed_temperature]
## OrcaSlicer: ## PRINT_START EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]
## SuperSlicer: ## PRINT_START EXTRUDER_TEMP={first_layer_temperature[initial_extruder]+extruder_temperature_offset[initial_extruder]} BED_TEMP=[first_layer_bed_temperature]
## Cura: ## PRINT_START EXTRUDER_TEMP={material_print_temperature_layer_0} BED_TEMP={material_bed_temperature_layer_0}
[gcode_macro PRINT_START_NOCCI]
gcode:
#--- Setup & Reset ---
M117 Setting up parameters...
RESPOND MSG="Starting Print Sequence..."
SET_GCODE_OFFSET Z=0 ; ⭐ NEW: Reset Z-Offset for Cartographer
G92 E0
G90 ; Absolute positioning
BED_MESH_CLEAR
Frame_Light_ON
Part_Light_ON
#--- Home with Cartographer ---
CG28 ; ⭐ CHANGE: G28 → CG28 (Open4Neptune smart home)
CARTOGRAPHER_TOUCH_HOME ; ⭐ NEW: Precise Z0 measurement with Cartographer
#--- Parameters ---
{% set BED_TEMP = params.BED_TEMP|default(60)|float %}
{% set EXTRUDER_TEMP = params.EXTRUDER_TEMP|default(200)|float %}
{% set FILAMENT_TYPE = params.FILAMENT_TYPE|default("PLA")|upper %}
#--- Pre-Heat ---
SET_HEATER_TEMPERATURE HEATER=extruder TARGET=160 ; No-drip pre-heat
SET_HEATER_TEMPERATURE HEATER=heater_bed TARGET={BED_TEMP}
#--- Wait for Bed & Mesh ---
{% set MIN_TEMP = BED_TEMP - (BED_TEMP * 0.15) %}
TEMPERATURE_WAIT SENSOR=heater_bed MINIMUM={MIN_TEMP}
BED_MESH_CALIBRATE ADAPTIVE=1
#--- Nozzle Clean (KNCM) ---
CLEAN_NOZZLE FILAMENT_TYPE={FILAMENT_TYPE}
#--- Final Heat ---
SET_HEATER_TEMPERATURE HEATER=extruder TARGET={EXTRUDER_TEMP}
TEMPERATURE_WAIT SENSOR=extruder MINIMUM={EXTRUDER_TEMP-2} MAXIMUM={EXTRUDER_TEMP+2} ; ⭐ TIGHTER: ±2°C
TEMPERATURE_WAIT SENSOR=heater_bed MINIMUM={BED_TEMP-2} MAXIMUM={BED_TEMP+2} ; ⭐ TIGHTER: ±2°C
#--- Prime & Start ---
SMART_PARK
SET_FILAMENT_SENSOR SENSOR=filament_sensor ENABLE=1
SET_FILAMENT_SENSOR SENSOR=filament_motion ENABLE=0
LINE_PURGE
G92 E0
G1 Z2.0 F3000
M117 Printer goes brrbrrr...:)
RESPOND MSG="Print starting..."
## ---------------------------------------------------------------------------- ##
## PRINT_END MACRO ##
## ---------------------------------------------------------------------------- ##
## End print gcode defined here. In slicer, use only the following lines for start gcode:
## PrusaSlicer/OrcaSlicer/SuperSlicer: PRINT_END
## Cura: PRINT_END
[gcode_macro PRINT_END_NOCCI]
description: Optimized PRINT_END with better user feedback
gcode:
M117 Finishing print... ; LCD message
RESPOND MSG="Print completed! Finishing up..."
M400 ; Wait for buffer to clear
TURN_OFF_HEATERS ; Turn off all heaters
G92 E0 ; Reset extruder
G91 ; Relative positioning
G1 E-2 F2700 ; Retract filament
G1 X5 Y5 F3000 ; Wipe nozzle
G1 E-2 Z0.2 F1600 ; Retract and lift Z
G1 Z10 F3000 ; Raise Z more (total ~10mm)
G90 ; Absolute positioning
G1 X0 Y315 F3000 ; Present print (Neptune 4 Plus)
M107 ; Turn off part fan
Frame_Light_OFF ; Turn off frame light
Part_Light_OFF ; Turn off part light
SET_FILAMENT_SENSOR SENSOR=filament_sensor ENABLE=0
SET_FILAMENT_SENSOR SENSOR=filament_motion ENABLE=0
M84 ; Disable all steppers
END_TUNE ; Play completion jingle
M117 Done! Have a nice day! :) ; Final LCD message
RESPOND MSG="Print complete! You can remove your print now."
#######################################################################
## Start Macro
#######################################################################
#######################################################################
## Clean Nozzle
#######################################################################
[gcode_macro CLEAN_NOZZLE_OLD]
gcode:
{% set LOWERED_EXTRUDER_TEMP = params.EXTRUDER_TEMP|default(200)|int-30 %}
{% set WIPES = params.WIPES|default(10)|int %}
#Position the nozzle
G90
G0 X-10 Y20 Z10 F5000
#Heat up nozzle to extruder temperature - 40°C
{action_respond_info("Clean nozzle: Heating up to {}°C the do {} wipes.".format(
(LOWERED_EXTRUDER_TEMP),
(WIPES)
))}
M109 S{LOWERED_EXTRUDER_TEMP}
#Bring the nozzle down
G0 Z4
#Swing the nozzle
{% for wipe in range(WIPES) %}
G0 Y5 F3000
G0 Y35 F3000
{% endfor %}
#Bring the nozzle up
G0 X-10 Y20 Z10 F5000
# Home to get the correct offset
# G28
[gcode_macro CLEAN_NOZZLE_WHILE_PRINT]
gcode:
{% set LOWERED_EXTRUDER_TEMP = params.EXTRUDER_TEMP|default(240)|int-40 %}
{% set WIPES = params.WIPES|default(10)|int %}
#Position the nozzle
G90
G0 X-10 Y20 Z10 F5000
#Heat up nozzle to extruder temperature - 40°C
{action_respond_info("Clean nozzle: Heating up to {}°C the do {} wipes.".format(
(LOWERED_EXTRUDER_TEMP),
(WIPES)
))}
M109 S{LOWERED_EXTRUDER_TEMP}
#Bring the nozzle down
G0 Z4
#Swing the nozzle
{% for wipe in range(WIPES) %}
G0 Y5 F3000
G0 Y35 F3000
{% endfor %}
#Bring the nozzle up
G0 X-10 Y20 Z10 F5000
# Home to get the correct offset
# G28
#### CUSTOM END
#[gcode_macro update_git]
#gcode:
# RUN_SHELL_COMMAND CMD=update_git_script
#[gcode_shell_command update_git_script]
#command: bash -c "bash $HOME/klipper-backup/script.sh"
#timeout: 90.0
[gcode_macro QUICK_TOUCH]
description: Führt eine schnelle Z-Messung per Touch durch
gcode:
{% if printer.toolhead.homed_axes != "xyz" %}
G28
{% endif %}
G1 Z10 F600
CARTOGRAPHER_TOUCH
[gcode_macro CALIBRATE_PROBE]
description: Startet die manuelle Z-Offset Kalibrierung
gcode:
{% if printer.toolhead.homed_axes != "xyz" %}
G28 # Homed, falls noch nicht geschehen
{% endif %}
G1 X{printer.toolhead.axis_maximum.x / 2} Y{printer.toolhead.axis_maximum.y / 2} Z10 F6000
CARTOGRAPHER_CALIBRATE
[controller_fan heatbreak+mainboard_fan]
fan_speed: 0.40
idle_speed: 0.40
cycle_time: 0.00004
[tmc2209 stepper_x]
driver_SGTHRS: 110
[safe_z_home]
home_xy_position: 165,165
# Example home_xy_position: 175,175 - This would be for a 350 * 350mm bed.
z_hop: 10
#[temperature_sensor cartographer]
#sensor_type: temperature_mcu
#sensor_mcu: cartographer
#min_temp: 5
#max_temp: 105
[bed_mesh]
zero_reference_position: 165.00,165.00
[stepper_z]
endstop_pin: probe:z_virtual_endstop # use cartographer as virtual endstop
homing_retract_dist: 0 # cartographer needs this to be set to 0
[bed_mesh]
zero_reference_position: 162.5 ,162.5
# set this to the middle of your bed
speed: 200
# movement speed of toolhead during bed mesh
horizontal_move_z: 5
# height of scanner during bed mesh scan
mesh_min: 35, 6
# start point of bed mesh [X, Y]
mesh_max: 240, 198
# end point of bed mesh [X, Y]
probe_count: 30, 30
algorithm: bicubic
[gcode_macro PROBE_CALIBRATE]
gcode:
CARTOGRAPHER_CALIBRATE
#[mcu scanner]
#serial: //dev/serial/by-id/usb-Cartographer_614e_0A0002000643303459323220-if00
# adjust to suit your scanner, if using usb change to serial
#[temperature_sensor Cartographer_MCU]
#sensor_type: temperature_mcu
#sensor_mcu: scanner
#min_temp: 0
#max_temp: 105
[force_move]
enable_force_move: True
#[adxl345]
#cs_pin: scanner:PA3
#spi_bus: spi1
[resonance_tester]
accel_chip: adxl345
probe_points:
165.2, 165.2, 20
[screws_tilt_adjust]
screw1: 165.0,189.55
screw1_name: middle-rear bed mount (shim adjust)
screw2: 165.0,99.55
screw2_name: middle-front bed mount (shim adjust)
screw3: 32.50,277.05
screw3_name: rear left screw
screw4: 32.50,144.55
screw4_name: center left screw
screw5: 32.50,12.05
screw5_name: front left screw
screw6: 288.5,12.05
screw6_name: front right screw
screw7: 288.5,144.55
screw7_name: center right screw
screw8: 288.5,277.05
screw8_name: rear right screw
horizontal_move_z: 5
speed: 150
screw_thread: CW-M4
[gcode_macro BABYZ_PLUS]
# Babystep Up .05
gcode:
SET_GCODE_OFFSET Z_ADJUST=0.005 MOVE=1
[gcode_macro BABYZ_MINUS]
# Babystep Down .05
gcode:
SET_GCODE_OFFSET Z_ADJUST=-0.005 MOVE=1
#############################################################################
# OLD Probe Config
#############################################################################
#[probe]
#pin:^PA11
#x_offset: -24.25
#y_offset: 20.45
#z_offset = 1.660
#speed: 10.0
#samples: 2
#samples_result: average
#sample_retract_dist: 3.0
#samples_tolerance: 0.025
#samples_tolerance_retries: 3
[skew_correction noccis_skew_profile]
xy_skew = 0.00100050075747056
xz_skew = 0.0
yz_skew = 0.0