Article Requis (Gestion Matière) : Nous poursuivons la réorganisation méthodique de notre firmware. Rappelons la règle du jeu de cette étape : pour le moment, nous ne réinventons rien, nous nous contentons d'extraire tout le bloc de code d'origine éparpillé dans le printer.cfg pour le ventiler proprement par catégories dans des fichiers dédiés. Dans cet Article 13, nous isolons les fonctions liées à la matière dans Macros/Filament.cfg pour gérer le chargement, le déchargement et la commande standard M600.
L'étape de rangement touche à sa fin : Cette phase d'assainissement et de découpage thématique du fichier maître est sur le point d'être finalisée. Une fois cette structure modulaire posée, nous aurons une base parfaitement lisible pour travailler proprement.
1. Isolation du module Macros/Filament.cfg
Ce fichier regroupe le code d'origine OpenNept4une dédié aux manipulations du fil. Créez le fichier dans votre répertoire Macros (chemin : ~/printer_data/config/Macros/Filament.cfg) et colles-y le bloc ci-dessous :
#############################################################################
#############################################################################
# ZEW-Neptune4Max V1.0 | CUSTOM INTERFACE COMPONENT
# -------------------------------------------------------------------------
# MODULE : FILAMENT MANAGEMENT (filament.cfg)
# FUNCTION : Automated Load, Unload, and M600 Routines
# DESIGNED BY : Frédéric IMBERT
# VERSION : 1.0.0 (2026-05-06)
# STATUS : PRODUCTION / STABLE
#############################################################################
#############################################################################
# --- MACRO: LOAD_FILAMENT ---
# Automatically heats the nozzle and feeds filament through the extruder.
# It includes a safety check to ensure a minimum temperature of 220°C
# for smooth flow if the nozzle is currently cold or too low.
[gcode_macro LOAD_FILAMENT]
description: Heat up and load filament automatically
variable_load_distance: 25
variable_purge_distance: 75
gcode:
{% set target_temp = printer.extruder.target|round(0) %}
{% if target_temp < 190 %}
{ action_respond_info("Temperature too low, heating to 220°C for loading.") }
{% set target_temp = 220 %}
{% endif %}
SET_HEATER_TEMPERATURE HEATER=extruder TARGET={target_temp}
TEMPERATURE_WAIT SENSOR=extruder MINIMUM={target_temp - 4}
G91
G92 E0
G1 E{load_distance} F300 ; Fast insertion
G1 E{purge_distance} F150 ; Slow purge
G90
G92 E0
M117 Filament loaded.
# --- MACRO: UNLOAD_FILAMENT ---
# Retracts filament from the toolhead after ensuring proper temperature.
# Logic: It compares the current target, a saved previous temperature (if runout),
# and a 190°C floor to select the optimal melting point for a clean tip.
[gcode_macro UNLOAD_FILAMENT]
description: Heat up and unload filament automatically
variable_unload_distance: 75
variable_prev_temp: 0 ; Stores temp before runout
gcode:
# 1. Retrieve saved temp or current target
{% set saved_temp = printer["gcode_macro UNLOAD_FILAMENT"].prev_temp|float %}
{% set current_target = printer.extruder.target|float %}
# 2. Select highest temp among saved, current, or safety minimum (190°C)
{% set target_temp = [saved_temp, current_target, 190] | max %}
{% if printer.extruder.temperature < target_temp %}
{ action_respond_info("Heating to %.1f°C for filament removal." % target_temp) }
SET_HEATER_TEMPERATURE HEATER=extruder TARGET={target_temp}
TEMPERATURE_WAIT SENSOR=extruder MINIMUM={target_temp - 4}
{% endif %}
# --- Unload Procedure ---
G91
G92 E0
G1 E15 F300 ; Quick push to clear nozzle
G1 E-{unload_distance} F1000 ; Fast retract
G90
G92 E0
# Reset variable for next use
SET_GCODE_VARIABLE MACRO=UNLOAD_FILAMENT VARIABLE=prev_temp VALUE=0
M117 Filament unloaded.
# --- MACRO: M600 ---
# Standard G-code command for "Color Change".
# This macro pauses the print and triggers the automated unloading sequence.
[gcode_macro M600]
description: Filament change procedure (Color Change)
gcode:
PAUSE
UNLOAD_FILAMENT
RESPOND MSG="Please insert new filament and click RESUME."
2. Rôle du bloc extrait
Ce sous-ensemble extrait du fichier d'origine remplit trois fonctions simples mais indispensables :
- Chargement sécurisé (
LOAD_FILAMENT) : Vérifie la température de buse (plancher à $220^\circ\text{C}$ si trop froide) avant de pousser le fil à vitesse rapide puis lente. - Retrait propre (
UNLOAD_FILAMENT) : Chauffe la buse, pousse brièvement le filament pour purger la pointe fondue, puis applique une rétraction rapide pour éviter de créer un fil d'ange ou un bouchon. - Changement de couleur (
M600) : Intercepte la commande standard générée par vos slicers (OrcaSlicer, PrusaSlicer) pour mettre l'impression en pause et lancer le déchargement.
3. Raccordement au printer.cfg
Il ne reste plus qu'à déclarer ce nouveau fichier dans la section des macros de notre fichier central, au même niveau que le fichier Helpers.cfg créé précédemment :
# MODULAR CONFIGURATION (INCLUDES)
#############################################################################
[force_move]
enable_force_move: True
# --- HARDWARE ---
[include Hardware/Neptune4max.cfg] # Main printer configuration (Chassis & Signaling)
[include Hardware/Extruders.cfg] # Extruder and heater settings
[include Hardware/Fans.cfg] # Cooling and enclosure fans
#[include Hardware/Adxl.cfg] # Input Shaper calibration
# --- INTELLIGENCE (Macros) ---
[include Macros/Macros.cfg] # Core system macros
[include Macros/Helpers.cfg] # General utility functions
[include Macros/Filament.cfg] # Automated Load, Unload, and M600 Routines
Résultat : Votre printer.cfg continue de s'alléger. Les boutons de chargement/déchargement restent fonctionnels dans votre interface web, mais le code est désormais classé dans son propre dossier.
Cette ventilation systématique nous rapproche du terme de notre grand ménage de printemps. Dans l'Article 14, nous traiterons le dernier bloc de macros à extraire pour clôturer définitivement la compartimentation de notre firmware. Restez connectés !