Files
imp3d_corrector/README.md
Augustin 7eac396a9b Fix G-code generation with priming, retraction, preheating; improve README
- 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>
2026-02-20 14:55:27 +01:00

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

  1. Cloner le depot:

    git clone <url-du-depot>
    cd imp3d_corrector
    
  2. Creer un environnement virtuel:

    python -m venv .venv
    
  3. Activer l'environnement virtuel:

    # Linux/macOS
    source .venv/bin/activate
    
    # Windows
    .venv\Scripts\activate
    
  4. Installer le paquet:

    pip install -e .
    
  5. 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

  1. Transferez le fichier calibration.gcode vers votre imprimante (carte SD, USB, reseau)
  2. Lancez l'impression avec vos reglages habituels
  3. Assurez-vous que l'adhesion au plateau est correcte (brim, raft si necessaire)
  4. 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:

  1. Cote X: Largeur du carre dans l'axe X
  2. Cote Y: Hauteur du carre dans l'axe Y
  3. 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:

  1. Les dimensions du plateau
  2. La taille des carres de test
  3. 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:

  1. Demande les dimensions du plateau
  2. Demande la taille des carres
  3. Pour chaque position: demande X, Y, diagonale
  4. Affiche le rapport d'analyse
  5. Propose des ajustements manuels
  6. 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:

  1. Ajustement mecanique: Verifier l'alignement des rails et courroies
  2. Compensation logicielle: Le profil corrige automatiquement le skew

Asymetrie X ou Y elevee (> 0.5%)

Cause probable: Tension de courroie inegale.

Solutions:

  1. Verifier la tension des courroies X et Y
  2. S'assurer que les poulies sont alignees
  3. Controler l'usure des roulements

Variance elevee (> 0.3%)

Cause probable: Probleme de linearite des rails.

Solutions:

  1. Nettoyer et lubrifier les rails
  2. Verifier l'etat des roulements
  3. Controler la tension des courroies

Echelle incorrecte mais uniforme

Cause probable: Pas de moteur ou diametre de courroie incorrects.

Solutions:

  1. Verifier les reglages steps/mm dans le firmware
  2. 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:

  1. 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
  2. Initialisation

    • G28: Home tous les axes
    • G90: Positionnement absolu
    • M82: Extrusion absolue
    • G92 E0: Reset de l'extrusion
  3. Ligne de priming (60mm)

    • Trace une ligne pour assurer le flux de filament
    • Nettoie la buse avant l'impression des carres
  4. Impression des 5 carres

    • Pour chaque carre:
      • Retraction (1mm)
      • Deplacement au point de depart
      • Prime (2mm)
      • Impression du carre (2 couches)
  5. 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

  1. Verifiez les temperatures:

    imp3d-corrector calibrate-advanced --nozzle-temp 210 --bed-temp 65
    
  2. Augmentez la marge si les carres debordent:

    imp3d-corrector calibrate-advanced -m 30
    
  3. Reduisez la vitesse dans le slicer pour les premieres couches

Les mesures semblent incoherentes

  1. Verifiez votre pied a coulisse (etalonnage)
  2. Mesurez plusieurs fois et faites la moyenne
  3. Assurez-vous que les carres sont bien colles au plateau

La correction ne semble pas fonctionner

  1. Verifiez que le profil existe:

    imp3d-corrector list
    
  2. Verifiez le profil:

    imp3d-corrector show ma_printer
    
  3. 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.