Autopsie du GCode d'une impression
Comment est constitué un fichier GCode d'une impression 3D ?
La source du code est le logiciel d'impression CURA BY DAGOMA pour les imprimantes DAGOMA Discovery 200.
Lien du programme
Le contenu :
- Le start Gcode :
définissant l'ensemble des instructions de mouvement, de positionnement, de nivellement et de chauffe préalable à l'impression elle-même,
- Le Corps du Code :
listant l'ensemble des instructions de l'impression à proprement parler,
- Le End GCode :
définissant quant à lui, les instructions de fin d'impression : positionnement, arrêt du chauffage, arrêt des ventilateurs, rétractation du filament.
Pour mieux comprendre les instructions GCode, n'hésitez pas à vous rendre sur la page http://reprap.org/wiki/G-code/fr qui explique très bien la signification des instructions dans le contexte de l'impression 3D, en effet ces instructions, ces codes pourront avoir des significations très différentes dans d'autres contextes, par exemple pour une CNC,
Le Start GCode est une partie très importante, il permet de fixer le niveau sur l'ensemble du plateau, la montée efficace de la température, le début d'une impression "propre" en laissant les écoulements de filament de la première phase sur un coin du plateau.
En comprenant ces enchaînements et leur utilité, vous serez à même de les intégrer dans le GCode de votre logiciel d'impression ou alors pourquoi pas, modifier directement le code généré pour l'impression, et ainsi par exemple, changer la température pour un nombre de couche donné, permettant ainsi une impression sans déformation d'une partie très fine.
PHASE DE DEMARRAGE (correspondant au Start GCode)
G91 Position relative, toutes les coordonnées à partir de maintenant sont liées à la dernière position,
G1 Z7 Déplacement linéaire sur l’axe Z de +7mm,
G90 Position absolue, toutes les coordonnées exécutées à partir de maintenant sont en rapport à l'origine de la machine,
G28 X Déplacement aux origines (Homing), de l’axe X vers son origine (fin de course),
M106 S255 Allume les ventilateurs pour une valeur PWM de 255 (0 à 255),
M109 S180 Définit la température de l'extrudeur et attend (valeur à 180°C), cela permet une première montée en T° jusqu’à 180°C, la montée vers 225 se fait lors de l’autonivellement, M104 S225 Définit la température de l'extrudeur à 225°C sans attendre,
;M190 S60 Définit la température du plateau chauffant et attent (valeur à 60°C), désactivé dans notre cas par le « ; »,
G28 X Déplacement aux origines (Homing), de l’axe X vers son origine (fin de course),
G28 Y Déplacement aux origines (Homing), de l’axe Y vers son origine (fin de course),
G01 X20 Y100 Déplacement linéaire de l’axe X de 20mm et de l’axe Y de 100mm,
G28 Z Déplacement aux origines (Homing), de l’axe Z vers son origine (fin de course),
;bloc palpeur Information : début de l’autonivellement,
G29 Commande d’autonivellement, il est réalisé suivant les points définis dans Marlin,
;bloc Offset Information : début du réglage de l’offset,
G92 Z10 Définit la nouvelle position absolue de l’axe Z à 10mm, aucun mouvement, seule la référence change,
G91 Position relative, toutes les coordonnées à partir de maintenant sont liés à la dernière position. Cela permet de partir sur une position de sécurité à +10mm, l’offset devra à présent compenser ce décalage pour donner la bonne position de la première couche sur l’Axe Z,
G1 Z-11.0 Déplacement linéaire sur l’axe Z de – 11mm, pour mon imprimante cela correspond à l’offset entre la tête et la buse, cela signifie que la tête doit parcourir 1mm de plus vers le bas lorsque le capteur inductif détecte le plateau. C’est cette valeur sur laquelle il faut jouer pour affiner l’épaisseur de la première couche,
G90 Position Absolue, toutes les coordonnées exécutées à partir de maintenant sont en rapport à l'origine nouvellement défini par le positionnement à -11 de l’Axe Z, qui constitue la coordonnée sur l’axe Z de la tête à la bonne hauteur d’impression,
G92 Z0 Définit la nouvelle position absolue de l’axe Z à 10mm, aucun mouvement seule la référence change, et cette référence est recalée à 0 pour Z et non plus à -11, pour autant la hauteur physique reste identique,
G1 Z3 Déplacement linéaire sur l’axe Z de +3mm,
G1 X100 Y200 F3000 Déplacement linéaire sur l’axe X de +100mm, sur l’axe Y de 200mm avec une vitesse de 3000 mm/mn,
G1 Z2 Déplacement linéaire sur l’axe Z de +2mm,
M104 S225 Définit la température de l'extrudeur à 225°C sans attendre,
M82 Définit la position de l'extrudeur comme position absolue,
M107 Eteint les ventilateurs,
G92 E0 Définit la nouvelle position de l'extrudeur à 0,
G1 F200 E3 Le Moteur de l'extrudeur fait avancer le filament de 3mm avec une vitesse de 200 mm/mn, cela permet de venir expulser le filament et de le coller au plateau, de manière à laisser le filament écoulé pendant la phase d’autonivellement, rendant ainsi l’impression plus propre,
G92 E0 Redéfinit la nouvelle position de l'extrudeur à 0,
G1 F4800 Définit la vitesse de déplacement à 4800mm/mn, pas de mouvement.
|
DEBUT DE L’IMPRESSION
;Layer count: 311 Indique un nombre de couche de 311,
;LAYER:0 Identifit la première couche n°0,
M107 Extension des ventilateurs, en effet pour une meilleure accroche et éviter le gauchissement, la première couche ne doit pas être refroidie par les ventilateurs de buse,
G0 F4800 X87.001 Y78.351 Z0.260 Déplacement rapide vers la position de départ de l’impression de la JUPE / SKIRT, la jupe est un contour qui entoure le modèle, mais le touche pas, elle permet d’amorcer le flux continu du filament,
;TYPE:SKIRT Identifit le début de l’impression de la JUPE / SKIRT,
G1 F1020 X105.001 Y78.351 E0.77829 G1 X105.001 Y90.351 E1.29715 G1 X87.001 Y90.351 E2.07543 G1 X87.001 Y78.351 E2.59429 G0 F4800 X87.401 Y78.751 G1 F1020 X104.601 Y78.751 E3.33799 G1 X104.601 Y89.951 E3.82225 G1 X87.401 Y89.951 E4.56595 G1 X87.401 Y78.751 E5.05022 G0 F4800 X87.801 Y79.151 G1 F1020 X104.201 Y79.151 E5.75932 G1 X104.201 Y89.551 E6.20900 G1 X87.801 Y89.551 E6.91811 G1 X87.801 Y79.151 E7.36779 G1 F3000 E3.36779 G0 F4800 X91.601 Y82.951
;TYPE:WALL-INNER Fin de la Jupe et début de la paroi interne de la première couche,
G1 F3000 E7.36779 G1 F1020 X100.401 Y82.951 E7.74828 G1 X100.401 Y85.751 E7.86935 G1 X91.601 Y85.751 E8.24984 G1 X91.601 Y82.951 E8.37091 G0 F4800 X91.201 Y82.551
;TYPE:WALL-OUTER Début de la paroi externe,
G1 F1020 X100.801 Y82.551 E8.78600 G1 X100.801 Y86.151 E8.94165 G1 X91.201 Y86.151 E9.35674 G1 X91.201 Y82.551 E9.51240 G0 F4800 X91.819 Y83.051
;TYPE:FILL Début du remplissage,
G1 F1020 X94.418 Y85.650 E9.67132 G0 F4800 X93.852 Y85.650 G1 F1020 X91.699 Y83.497 E9.80297 G0 F4800 X91.699 Y84.062 G1 F1020 X93.287 Y85.650 E9.90008 G0 F4800 X91.699 Y84.628 G1 F1020 X92.721 Y85.650 E9.96257 G0 F4800 X91.699 Y85.194 G1 F1020 X92.155 Y85.650 E9.99045 G0 F4800 X92.384 Y83.051 G1 F1020 X94.984 Y85.650 E10.14941 G0 F4800 X95.549 Y85.650 G1 F1020 X92.950 Y83.051 E10.30833 G0 F4800 X93.516 Y83.051 G1 F1020 X96.115 Y85.650 E10.46726 G0 F4800 X96.681 Y85.650 G1 F1020 X94.081 Y83.051 E10.62621 G0 F4800 X94.647 Y83.051 G1 F1020 X97.246 Y85.650 E10.78513 G0 F4800 X97.812 Y85.650 G1 F1020 X95.213 Y83.051 E10.94406 G0 F4800 X95.779 Y83.051 G1 F1020 X98.378 Y85.650 E11.10298 G0 F4800 X98.944 Y85.650 G1 F1020 X96.344 Y83.051 E11.26194 G0 F4800 X96.910 Y83.051 G1 F1020 X99.509 Y85.650 E11.42086 G0 F4800 X100.075 Y85.650 G1 F1020 X97.476 Y83.051 E11.57978 G0 F4800 X98.041 Y83.051 G1 F1020 X100.300 Y85.309 E11.71789 G0 F4800 X100.300 Y84.743 G1 F1020 X98.607 Y83.051 E11.82138 G0 F4800 X99.173 Y83.051 G1 F1020 X100.300 Y84.178 E11.89029 G0 F4800 X99.738 Y83.051 G1 F1020 X100.300 Y83.612 E11.92463
;LAYER:1 Début de la deuxième couche n°1,
M106 S104 Allumage des ventilateurs de buse vitesse PWM de 104 (0 à 255),
G0 F4800 X100.401 Y82.951 Z0.460 Déplacement Rapide vers la position de départ de la couche 1,
;TYPE:WALL-INNER Début de la paroi interne,
ETC, ETC,…. pendant 311 couches
|
PHASE DE FIN (correspondant au End GCode)
M107 Extinction des ventilateurs de buse,
G1 F3000 E3488.49157 Là j’avoue que je cale, Déplacement linéaire du filament de l’extrudeur de 3488.49157mm à une vitesse de 3000mm/mn ??? Cela m’interpelle !! À suivre
G0 F4800 X100.300 Y83.612 Z67.300 Déplacement rapide vitesse 4800mm/mn sur l’axe X de 100.3mm sur l’axe Y de 83.612mm et de 67.3mm sur l’axe Z, cela permet à la tête d’impression de libérer la zone d’impression et de se mettre en position de repli,
M104 S0 Définit la température de l'extrudeur à 0°C,
M106 S255 Pleine vitesse des ventilateurs de buse à 255 PWM,
M140 S0 Définit la température du plateau chauffant à 0°C (inutile dans ce cas),
G91 Position relative, toutes les coordonnées à partir de maintenant sont liés à la dernière position,
G1 E-1 F300 Rétraction du fiilament de l’extrudeur de 1 mm à une vitesse de 300mm/mn,
G1 Z+3 E-2 F4800 Déplacement linéaire de Z de 3mm, rétractation du filament de l’extrudeur de 2mm le tout à une vitesse de 4800mm/mn,
G28 X0 Y0 Déplacement aux origines/Homing (fin de course) de l’axe X et Y,
G4 P360000 Attente pendant 36000 millisecondes (36s),
M908 Arrêt des ventilateurs de buse,
M84 Arrêt des moteurs,
|
Inscrivez-vous au blog
Soyez prévenu par email des prochaines mises à jour
Rejoignez les 31 autres membres