- 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>
538 lines
13 KiB
Markdown
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.
|