Après avoir jeté les bases épurées de notre fichier central dans l'article précédent, place à la modularité concrète. Dans cet Article 6, nous créons et décortiquons le module maître de notre machine : le fichier Neptune4max.cfg, à héberger dans notre dossier Hardware. Nous détaillons ses grandes sections techniques et levons le voile sur un choix de configuration crucial : le comportement électrique de nos moteurs face au mode silencieux d'origine.
Ce que vous allez accomplir : Nous allons déployer l'ADN physique de votre imprimante (cinématique, drivers TMC, nivellement et Input Shaper) dans un fichier dédié. Vous comprendrez pourquoi la désactivation du mode silencieux d'usine est l'unique verrou à faire sauter pour garantir la stabilité géométrique de vos pièces à haute vitesse.
1. Structure du fichier Hardware/Neptune4max.cfg
Ce fichier doit être créé à l'intérieur de votre sous-dossier Hardware (soit le chemin d'accès exact ~/printer_data/config/Hardware/Neptune4max.cfg). Voici le code de production complet, propre et documenté, prêt à être déployé :
#############################################################################
#############################################################################
# ZEW-Neptune4Max V1.0 | HARDWARE COMPONENT
# -------------------------------------------------------------------------
# MODULE : CHASSIS, AXIS, SIGNALING & SHAPER CONFIGURATION (Neptune4max.cfg)
# FUNCTION : Hardware Definition, Kinematic Parameters, IO Mapping & Shaper
# DESIGNED BY : Frédéric IMBERT
# VERSION : 1.0.3 (2026-06-01)
# STATUS : PRODUCTION / STABLE
#############################################################################
#############################################################################
# --- KINEMATICS & LIMITS ---
[printer]
kinematics: cartesian
max_velocity: 250
max_accel: 3000
max_z_velocity: 8
max_z_accel: 120
square_corner_velocity: 5.0
minimum_cruise_ratio: 0.0
# --- X AXIS ---
[stepper_x]
step_pin: PC14 # Step signal pin
dir_pin: PC13 # Direction signal pin
enable_pin: !PC15 # Enable pin (inverted)
microsteps: 16 # Microstepping resolution
rotation_distance: 40 # Distance moved per full rotation
full_steps_per_rotation: 200 # Steps per motor revolution (1.8 deg)
endstop_pin: tmc2209_stepper_x:virtual_endstop # Sensorless homing endstop
position_min: -2 # Safety margin below zero
position_endstop: 0 # Physical endstop position
position_max: 430 # Maximum travel distance
homing_speed: 50 # Speed during homing sequence
homing_retract_dist: 0 # Distance to pull back after homing
[tmc2209 stepper_x]
uart_pin: PB9 # Communication pin for TMC driver
run_current: 1.0 # Motor current in Amps
interpolate: True # Enable 256 microstep interpolation
stealthchop_threshold: 0 # Quiet operation threshold (0 to disable)
driver_SGTHRS: 90 # Sensorless homing sensitivity
diag_pin: ^PC0 # Diagnostic pin for stall detection
# --- Y AXIS ---
[stepper_y]
step_pin: PB4 # Step signal pin
dir_pin: PB3 # Direction signal pin
enable_pin: !PC15 # Enable pin (inverted)
microsteps: 16 # Microstepping resolution
rotation_distance: 40 # Distance moved per full rotation
full_steps_per_rotation: 200 # Steps per motor revolution (1.8 deg)
endstop_pin: tmc2209_stepper_y:virtual_endstop # Sensorless homing endstop
position_min: -2 # Safety margin below zero
position_endstop: 0 # Physical endstop position
position_max: 430 # Maximum travel distance
homing_speed: 50 # Speed during homing sequence
homing_retract_dist: 0 # Distance to pull back after homing
[tmc2209 stepper_y]
uart_pin: PD2 # Communication pin for TMC driver
run_current: 1.1 # Higher current for the large bed
interpolate: True # Enable 256 microstep interpolation
stealthchop_threshold: 0 # Quiet operation threshold (0 to disable)
driver_SGTHRS: 80 # Sensorless homing sensitivity
diag_pin: ^PB8 # Diagnostic pin for stall detection
# --- Z AXIS ---
[stepper_z]
step_pin: PC10 # Step signal pin
dir_pin: !PA13 # Direction signal pin (inverted)
enable_pin: !PC11 # Enable pin (inverted)
microsteps: 16 # Microstepping resolution
rotation_distance: 8 # Distance moved per rotation (Lead screw)
full_steps_per_rotation: 200 # Steps per motor revolution (1.8 deg)
endstop_pin: probe:z_virtual_endstop # Use probe as Z endstop
position_max: 505 # Maximum Z travel height
position_min: -5 # Allowance for negative Z-offset
homing_speed: 8 # Initial homing speed
second_homing_speed: 3 # Precision homing speed
homing_retract_dist: 5 # Retract distance between homing passes
[tmc2209 stepper_z]
uart_pin: PC5 # Communication pin for TMC driver
run_current: 0.8 # Motor current for Z axis
interpolate: True # Enable 256 microstep interpolation
# --- HEATED BED ---
[heater_bed]
heater_pin: PB10 # Bed heater PWM pin
sensor_type: NTC 100K MGB18-104F39050L32 # Thermistor type
sensor_pin: PA0 # Thermistor analog pin
max_power: 1.0 # Maximum power output ratio
min_temp: 0 # Minimum safety temperature
max_temp: 120 # Maximum operating temperature
pwm_cycle_time: 0.3 # PWM frequency cycle duration
[verify_heater heater_bed]
max_error: 120 # Temperature error tolerance
check_gain_time: 120 # Time allowed for temp change
hysteresis: 10 # Permitted temp fluctuation
heating_gain: 2 # Minimum expected rate of rise
# --- PROBE & BED MESH ---
[probe]
pin: ^PA11 # Probe sensor pin
x_offset: -24.25 # X distance from nozzle to probe
y_offset: 20.45 # Y distance from nozzle to probe
speed: 6.0 # Probing speed
samples: 3 # Number of samples per point
samples_result: median # Result calculation method
sample_retract_dist: 3.0 # Retract distance between samples
samples_tolerance: 0.025 # Maximum allowed sample deviation
samples_tolerance_retries: 3 # Number of retries on deviation
[bed_mesh]
speed: 150 # Travel speed between probe points
horizontal_move_z: 5 # Z height during travel
mesh_min: 10,21 # Minimum mesh coordinates (X,Y)
mesh_max: 397,404 # Maximum mesh coordinates (X,Y)
probe_count: 7,7 # Mesh density (Standard mode)
algorithm: bicubic # Interpolation algorithm
bicubic_tension: 0.2 # Algorithm tension parameter
mesh_pps: 2, 2 # Points Per Segment for smoothing
fade_start: 1.0 # Compensation fade start height
fade_end: 10.0 # Compensation fade end height
[safe_z_home]
home_xy_position: 239.75,194.55 # Center of bed for safe Z homing
speed: 100 # Travel speed to home center
z_hop: 10 # Lift Z before homing
z_hop_speed: 5 # Lift speed for Z hop
# --- ADVANCED CALIBRATIONS ---
[axis_twist_compensation]
calibrate_start_x: 25 # Start X for twist compensation
calibrate_end_x: 395 # End X for twist compensation
calibrate_y: 210 # Y coordinate for calibration
[screws_tilt_adjust]
screw1: 239.25, 194.55 # Center reference mount
screw1_name: central pivot mount (reference)
screw2: 56.75, 377.05 # Back-left adjustment screw
screw2_name: rear left screw
screw3: 56.75, 194.55 # Center-left adjustment screw
screw3_name: center left screw
screw4: 56.75, 12.05 # Front-left adjustment screw
screw4_name: front left screw
screw5: 421.75, 12.05 # Front-right adjustment screw
screw5_name: front right screw
screw6: 421.75, 194.55 # Center-right adjustment screw
screw6_name: center right screw
screw7: 421.75, 377.05 # Back-right adjustment screw
screw7_name: rear right screw
horizontal_move_z: 10 # Z height for travel between screws
speed: 200 # Speed during adjustment routine
screw_thread: CW-M4 # Thread type (Clockwise M4)
#############################################################################
# SIGNALING & INTERFACE HARDWARE (BEEPER & LEDS)
#############################################################################
[pwm_cycle_time beeper]
pin: PA2
value: 0
shutdown_value: 0
cycle_time: 0.0005
[output_pin Frame_Light]
pin: rpi:gpiochip2/gpio2
[output_pin Part_Light]
pin: rpi:gpiochip2/gpio15
#############################################################################
# INPUT SHAPER (ACTIVE PRODUCTION VALUES)
#############################################################################
[input_shaper]
shaper_type_x: zv
shaper_freq_x: 116.2
shaper_type_y: zv
shaper_freq_y: 38.8
2. Le Labo sous le capot : Analyse des sections techniques
Pour comprendre la mécanique et la rigueur de ce fichier, nous pouvons le segmenter en quatre grands blocs logiques de responsabilités :
Ce bloc définit la géométrie cartésienne et bride les vitesses. Les valeurs de vélocité maximale (250 mm/s) et d'accélération (3000 mm/s²) sont ajustées de manière pragmatique pour préserver la mécanique de ce châssis XXL et éviter les pertes de pas sur les pièces lourdes.
Pour chaque axe (X, Y, Z), le code fait correspondre les broches physiques (Pins) de la carte STM32 et configure les drivers TMC2209. Notez la ligne run_current: 1.1 pour l'axe Y : le moteur reçoit une intensité supérieure pour déplacer sereinement le lourd plateau de la Max.
Cette section regroupe la calibration de la sonde (Offsets X et Y), les tolérances du maillage (bed_mesh) et surtout les coordonnées indispensables du screws_tilt_adjust. Ce dernier outil permet, grâce à la sonde, de vous indiquer le nombre de tours à donner aux molettes pour un niveau physique parfait.
En fin de fichier, on retrouve le mapping du signal du Beeper, l'adressage GPIO des bandes de LED (gérées via le MCU hôte) et les fréquences fixes d'amortissement des résonances (Input Shaper X et Y) indispensables pour gommer définitivement le "ghosting".
Le piège du mode silencieux d'origine (StealthChop VS SpreadCycle)
Par défaut, les profils d'usine ou les configurations Klipper génériques activent le mode ultra-silencieux des pilotes TMC2209 (StealthChop). Si ce lissage acoustique est agréable pour les oreilles, il s'avère catastrophique pour les performances mécaniques sur un châssis grand format.
Le mode silencieux réduit drastiquement le couple et la force brute des moteurs. Sur une Elegoo Neptune 4 Max dotée d'un plateau mobile XXL extrêmement lourd, maintenir ce mode d'origine provoque inévitablement des pertes de pas thermiques et des décalages de couches mécaniques (layer shifts) à la moindre accélération.
En forçant le paramètre stealthchop_threshold: 0 sur les axes X et Y, nous coupons définitivement le mode silencieux pour basculer en mode SpreadCycle. Les moteurs émettront un léger sifflement en déplacement rapide, mais ils délivreront 100 % de leur puissance nominale pour sécuriser l'alignement et la précision géométrique de vos pièces de production.
3. Raccordement : Injection dans le Hub printer.cfg
Pour injecter l'ensemble de ces règles matérielles dans l'intelligence globale de votre machine, ouvrez votre fichier racine printer.cfg. Repérez votre bloc d'inclusions modulaires et ajoutez simplement la ligne de liaison sous l'activation du force_move.
# MODULAR CONFIGURATION (INCLUDES)
#############################################################################
[force_move]
enable_force_move: True
# --- HARDWARE ---
[include Hardware/Neptune4max.cfg] # Main printer configuration (Chassis & Signaling)
#############################################################################
# BASE CONFIG (MCU & PRINTER)
#############################################################################
Rappel de rigueur sur la casse : Le système Linux sous-jacent est sensible à la casse. L'écriture dans votre code doit correspondre au nom de fichier physique exact (respect des majuscules et minuscules) pour éliminer tout risque d'erreur de chemin (Path error) lors du redémarrage de l'interface.
Votre fichier matériel de référence est désormais lié et opérationnel au cœur de l'architecture. Dans le prochain chapitre de notre série, nous allons franchir un cap supplémentaire dans l'optimisation physique en exploitant ce bloc pour affiner les dépendances du Hardware et la précision des composants secondaires. Restez connectés !