- Add proper preheating sequence (M140/M104/M190/M109) - Add 60mm priming line before squares - Add retraction (1mm) + prime (2mm) between each square - Add configurable nozzle/bed temperatures via CLI - Change default margin from 15mm to 20mm - Add calibration_margin, square_size, nozzle_temp, bed_temp to config - Rewrite README with comprehensive documentation (no emojis) - Detailed installation instructions - Step-by-step calibration workflow - All CLI commands with examples - Config file structure explanation - Troubleshooting section Assisted-by: GLM-5 via Crush <crush@charm.land>
13 KiB
IMP3D Corrector
Outil de correction de plan XYZ pour imprimantes 3D avec probleme de calibration. Permet de detecter et compenser les erreurs mecaniques pour obtenir des impressions dimensionnellement correctes.
Problemes resolus
- Skew X-Y: Axes X et Y non perpendiculaires (angle different de 90 degres)
- Erreurs d'echelle: Dimensions incorrectes (pieces trop grandes ou trop petites)
- Decalage d'origine: Position zero mal alignee
- Rotation du plateau: Legere rotation de l'ensemble du plateau
- Asymetries: Differences de dimensions selon la position sur le plateau
Installation
Prerequis
- Python 3.8 ou superieur
- pip (gestionnaire de paquets Python)
Etapes d'installation
-
Cloner le depot:
git clone <url-du-depot> cd imp3d_corrector -
Creer un environnement virtuel:
python -m venv .venv -
Activer l'environnement virtuel:
# Linux/macOS source .venv/bin/activate # Windows .venv\Scripts\activate -
Installer le paquet:
pip install -e . -
Verifier l'installation:
imp3d-corrector --help
Workflow de calibration complet
Etape 1: Generer le G-code de calibration
La calibration avancee utilise 5 carres (4 coins + centre) pour detecter tous les problemes.
imp3d-corrector calibrate-advanced -w 220 -d 220 -o calibration.gcode
Parametres disponibles:
| Parametre | Description | Defaut |
|---|---|---|
-w, --width |
Largeur du plateau en mm | 220 |
-d, --depth |
Profondeur du plateau en mm | 220 |
-s, --size |
Taille des carres de test en mm | 30 |
-m, --margin |
Distance entre les coins du plateau et les carres en mm | 20 |
--nozzle-temp |
Temperature de la buse en C | 200 |
--bed-temp |
Temperature du plateau en C | 60 |
-o, --output |
Fichier de sortie | calibration_advanced.gcode |
Exemple avec parametres personnalises:
imp3d-corrector calibrate-advanced \
-w 250 -d 210 \
-s 25 \
-m 25 \
--nozzle-temp 210 \
--bed-temp 65 \
-o ma_calibration.gcode
Etape 2: Imprimer le fichier de calibration
- Transferez le fichier
calibration.gcodevers votre imprimante (carte SD, USB, reseau) - Lancez l'impression avec vos reglages habituels
- Assurez-vous que l'adhesion au plateau est correcte (brim, raft si necessaire)
- Laissez l'impression se terminer completement
Ce qui sera imprime:
- 5 carres de la taille specifiee (defaut: 30mm)
- Position: 4 coins du plateau + centre
- Chaque carre a une epaisseur de 2 couches (0.6mm avec 0.3mm par couche)
Etape 3: Mesurer les carres
Pour chaque carre, mesurez avec un pied a coulisse:
- Cote X: Largeur du carre dans l'axe X
- Cote Y: Hauteur du carre dans l'axe Y
- Diagonale: Diagonale du carre (important pour detecter le skew)
Ordre des positions:
- Bas-Gauche (BL): coin inferieur gauche
- Bas-Droite (BR): coin inferieur droit
- Centre (C): centre du plateau
- Haut-Gauche (TL): coin superieur gauche
- Haut-Droite (TR): coin superieur droit
Valeurs attendues pour un carre de 30mm:
- Cote X: 30.00 mm
- Cote Y: 30.00 mm
- Diagonale: 42.43 mm (30 * 1.414)
Etape 4: Creer le profil de calibration
Lancez la creation de profil et entrez vos mesures:
imp3d-corrector create-advanced ma_printer
Le programme vous demandera:
- Les dimensions du plateau
- La taille des carres de test
- Les mesures pour chaque position
Exemple de session:
Dimensions du plateau:
Largeur X (mm) [220]: 220
Profondeur Y (mm) [220]: 220
Taille des carres de test (mm) [30]: 30
--- Bas-Gauche (BL) ---
Cote X (mm): 30.12
Cote Y (mm): 29.95
Diagonale (mm): 42.50
--- Bas-Droite (BR) ---
Cote X (mm): 29.98
...
Etape 5: Analyser le rapport
Le programme affiche un rapport complet avec:
- Moyenne des mesures
- Ecart-type (uniformite)
- Erreur de skew detectee
- Asymetries gauche/droite et haut/bas
- Corrections recommandees
Exemple de rapport:
======================================================================
RAPPORT DE CALIBRATION
======================================================================
Moyennes:
Echelle X: 1.0023 (+0.23%)
Echelle Y: 0.9987 (-0.13%)
Skew: -0.45 deg
Asymetrie:
Gauche vs Droite: 0.15%
Haut vs Bas: 0.08%
Variance (uniformite):
X: 0.12%
Y: 0.09%
Etape 6: Appliquer les corrections
Une fois le profil cree, appliquez-le a vos fichiers G-code:
imp3d-corrector correct mon_modele.gcode -p ma_printer -o mon_modele_corrige.gcode
Le fichier corrige compense automatiquement:
- Les erreurs d'echelle (scale)
- L'angle entre les axes (skew)
- Le decalage d'origine (offset)
- La rotation du plateau
Reference des commandes
calibrate-advanced
Genere un G-code de calibration avec 5 carres.
imp3d-corrector calibrate-advanced [options]
Options:
-w, --width FLOAT: Largeur du plateau en mm [defaut: 220]-d, --depth FLOAT: Profondeur du plateau en mm [defaut: 220]-s, --size FLOAT: Taille des carres en mm [defaut: 30]-m, --margin FLOAT: Marge depuis les bords en mm [defaut: 20]--nozzle-temp INTEGER: Temperature buse en C [defaut: 200]--bed-temp INTEGER: Temperature plateau en C [defaut: 60]-o, --output PATH: Fichier de sortie
create-advanced
Cree un profil a partir des mesures multi-points.
imp3d-corrector create-advanced <nom>
Arguments:
nom: Nom du profil a creer
Processus interactif:
- Demande les dimensions du plateau
- Demande la taille des carres
- Pour chaque position: demande X, Y, diagonale
- Affiche le rapport d'analyse
- Propose des ajustements manuels
- Sauvegarde le profil
correct
Applique la correction a un fichier G-code.
imp3d-corrector correct <input> -p <profile> [-o <output>]
Arguments:
input: Fichier G-code a corriger
Options:
-p, --profile TEXT: Profil a utiliser (obligatoire)-o, --output PATH: Fichier de sortie [defaut: _corrected.gcode]
Exemple:
imp3d-corrector correct benchy.gcode -p ender3 -o benchy_corrige.gcode
list
Liste tous les profils disponibles.
imp3d-corrector list
Affiche pour chaque profil:
- Nom
- Dimensions du plateau
- Skew et echelles
show
Affiche les details d'un profil.
imp3d-corrector show <nom>
Informations affichees:
- Dimensions du plateau
- Offset X et Y
- Facteurs d'echelle X et Y
- Angle de skew
- Rotation
edit
Modifie un profil existant.
imp3d-corrector edit <nom>
Permet de modifier interactivement:
- Tous les parametres de calibration
delete
Supprime un profil.
imp3d-corrector delete <nom>
Demande confirmation avant suppression.
analyze
Analyse des mesures sans creer de profil.
imp3d-corrector analyze
Utile pour:
- Diagnostiquer des problemes avant de creer un profil
- Comparer differentes configurations
- Verifier l'evolution de l'imprimante dans le temps
calibrate
Genere un G-code de calibration simple (1 carre au centre).
imp3d-corrector calibrate [-w WIDTH] [-d DEPTH] [-o OUTPUT]
Usage recommande: Validation rapide apres calibration avancee.
create
Cree un profil simple a partir d'un seul carre.
imp3d-corrector create <nom>
Usage recommande: Configuration rapide, moins precis que create-advanced.
Fichier de configuration
Emplacement
Les profils sont stockes dans:
~/.config/imp3d_corrector/profiles/<nom>.yaml
Structure d'un profil
# Informations de base
name: ma_printer
# Dimensions du plateau
bed_width: 220.0 # Largeur en mm (axe X)
bed_depth: 220.0 # Profondeur en mm (axe Y)
# Corrections de calibration
skew_xy: -0.45 # Angle de skew en degres
# Positif = Y tourne vers X
# Negatif = Y tourne vers -X
offset_x: 0.0 # Decalage origine X en mm
offset_y: 0.0 # Decalage origine Y en mm
scale_x: 1.0023 # Facteur d'echelle X
# >1.0 agrandit, <1.0 retrecit
# Exemple: 1.0023 corrige 100mm mesure a 99.77mm
scale_y: 0.9987 # Facteur d'echelle Y
rotation: 0.0 # Rotation du plateau en degres
# Parametres de generation G-code
calibration_margin: 20 # Marge pour les carres de test
square_size: 30 # Taille des carres de test
nozzle_temp: 200 # Temperature buse
bed_temp: 60 # Temperature plateau
Modification manuelle
Vous pouvez editer directement les fichiers YAML:
nano ~/.config/imp3d_corrector/profiles/ma_printer.yaml
Ou utiliser la commande edit:
imp3d-corrector edit ma_printer
Interpretation des resultats
Skew eleve (|skew_xy| > 1.0)
Cause probable: Axes X et Y non perpendiculaires.
Solutions:
- Ajustement mecanique: Verifier l'alignement des rails et courroies
- Compensation logicielle: Le profil corrige automatiquement le skew
Asymetrie X ou Y elevee (> 0.5%)
Cause probable: Tension de courroie inegale.
Solutions:
- Verifier la tension des courroies X et Y
- S'assurer que les poulies sont alignees
- Controler l'usure des roulements
Variance elevee (> 0.3%)
Cause probable: Probleme de linearite des rails.
Solutions:
- Nettoyer et lubrifier les rails
- Verifier l'etat des roulements
- Controler la tension des courroies
Echelle incorrecte mais uniforme
Cause probable: Pas de moteur ou diametre de courroie incorrects.
Solutions:
- Verifier les reglages steps/mm dans le firmware
- Le profil compense automatiquement via scale_x et scale_y
G-code de calibration: details techniques
Sequence d'impression
Le G-code genere suit cette sequence:
-
Prechauffage
- M140 S{bed_temp}: Demarre le chauffage du plateau
- M104 S{nozzle_temp}: Demarre le chauffage de la buse
- M190 S{bed_temp}: Attend que le plateau soit a temperature
- M109 S{nozzle_temp}: Attend que la buse soit a temperature
-
Initialisation
- G28: Home tous les axes
- G90: Positionnement absolu
- M82: Extrusion absolue
- G92 E0: Reset de l'extrusion
-
Ligne de priming (60mm)
- Trace une ligne pour assurer le flux de filament
- Nettoie la buse avant l'impression des carres
-
Impression des 5 carres
- Pour chaque carre:
- Retraction (1mm)
- Deplacement au point de depart
- Prime (2mm)
- Impression du carre (2 couches)
- Pour chaque carre:
-
Fin
- G28 X Y: Home X et Y
- M104 S0: Eteint la buse
- M140 S0: Eteint le plateau
- M84: Desactive les moteurs
Parametres d'impression
| Parametre | Valeur | Description |
|---|---|---|
| Layer height | 0.3 mm | Epaisseur de couche |
| Line width | 0.45 mm | Largeur de ligne |
| Print speed | 30 mm/s | Vitesse d'impression |
| Travel speed | 100 mm/s | Vitesse de deplacement |
| Retraction | 1.0 mm | Distance de retraction |
| Prime amount | 2.0 mm | Extra extrusion apres deplacement |
Calcul d'extrusion
L'extrusion est calculee selon la formule:
E = distance * (layer_height * line_width) / (pi * filament_diameter^2 / 4)
Avec filament_diameter = 1.75mm par defaut.
Structure du projet
imp3d_corrector/
├── cli.py # Interface ligne de commande
├── config/
│ ├── __init__.py
│ └── profile_manager.py # Gestion des profils YAML
└── core/
├── __init__.py
├── corrector.py # Logique de correction XYZ
├── gcode_parser.py # Parser G-code
└── advanced_calibration.py # Calibration multi-points
Resolution de problemes
Le G-code ne s'imprime pas correctement
-
Verifiez les temperatures:
imp3d-corrector calibrate-advanced --nozzle-temp 210 --bed-temp 65 -
Augmentez la marge si les carres debordent:
imp3d-corrector calibrate-advanced -m 30 -
Reduisez la vitesse dans le slicer pour les premieres couches
Les mesures semblent incoherentes
- Verifiez votre pied a coulisse (etalonnage)
- Mesurez plusieurs fois et faites la moyenne
- Assurez-vous que les carres sont bien colles au plateau
La correction ne semble pas fonctionner
-
Verifiez que le profil existe:
imp3d-corrector list -
Verifiez le profil:
imp3d-corrector show ma_printer -
Imprimez un carre de validation apres correction
Erreur "profil existe deja"
Le programme demande confirmation avant d'ecraser:
Le profil 'ma_printer' existe deja. Ecraser? (o/N):
Repondez 'o' pour ecraser.
Licence
MIT License - voir le fichier LICENSE pour plus de details.