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

538 lines
13 KiB
Markdown

# 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 <url-du-depot>
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 <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.
```bash
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: <nom>_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 <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.
```bash
imp3d-corrector edit <nom>
```
Permet de modifier interactivement:
- Tous les parametres de calibration
### delete
Supprime un profil.
```bash
imp3d-corrector delete <nom>
```
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 <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
```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.