# 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: ```bash git clone cd imp3d_corrector ``` 2. Creer un environnement virtuel: ```bash python -m venv .venv ``` 3. Activer l'environnement virtuel: ```bash # Linux/macOS source .venv/bin/activate # Windows .venv\Scripts\activate ``` 4. Installer le paquet: ```bash pip install -e . ``` 5. Verifier l'installation: ```bash 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. ```bash 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:** ```bash 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: ```bash 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: ```bash 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. ```bash 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. ```bash imp3d-corrector create-advanced ``` **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. ```bash imp3d-corrector correct -p [-o ] ``` **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:** ```bash imp3d-corrector correct benchy.gcode -p ender3 -o benchy_corrige.gcode ``` ### list Liste tous les profils disponibles. ```bash imp3d-corrector list ``` Affiche pour chaque profil: - Nom - Dimensions du plateau - Skew et echelles ### show Affiche les details d'un profil. ```bash imp3d-corrector show ``` **Informations affichees:** - Dimensions du plateau - Offset X et Y - Facteurs d'echelle X et Y - Angle de skew - Rotation ### edit Modifie un profil existant. ```bash imp3d-corrector edit ``` Permet de modifier interactivement: - Tous les parametres de calibration ### delete Supprime un profil. ```bash imp3d-corrector delete ``` Demande confirmation avant suppression. ### analyze Analyse des mesures sans creer de profil. ```bash 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). ```bash 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. ```bash imp3d-corrector create ``` **Usage recommande:** Configuration rapide, moins precis que create-advanced. ## Fichier de configuration ### Emplacement Les profils sont stockes dans: ``` ~/.config/imp3d_corrector/profiles/.yaml ``` ### Structure d'un profil ```yaml # 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: ```bash nano ~/.config/imp3d_corrector/profiles/ma_printer.yaml ``` Ou utiliser la commande edit: ```bash 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:** ```bash imp3d-corrector calibrate-advanced --nozzle-temp 210 --bed-temp 65 ``` 2. **Augmentez la marge si les carres debordent:** ```bash 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:** ```bash imp3d-corrector list ``` 2. **Verifiez le profil:** ```bash 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.