[GCODE] Comment réaliser une pause en cours d'impression

Cette rubrique concerne les questions technique que vous aimeriez soumettre.
Lolo80
Contributeur actif
Messages : 120
Inscription : sam. oct. 25, 2014 4:31 pm
Imprimante 3D : Hephestos

Dans le cadre d'un projet personnel, je souhaitais intégrer des pièces métalliques dans la pièce en cours d'impression.
Pour cela, j'avais besoin que mon imprimante, durant son impression, fasse une pause à une hauteur spécifique, revienne à l'origine, bip un coup pour prévenir puis que l'on puisse reprendre l'impression une fois les pièces métalliques insérées dans  la structure.

Après plusieurs test voilà le compromis que j'ai trouvé (Attention cette solution marche parfaitement avec Octoprint, j'ignore si elle fonctionne avec la carte SD)

Voici le bout de GCODE à intégrer au moyen du notepad à la hauteur souhaitée:

HEPHESTOS 1

Code : Tout sélectionner

; ++++++ PAUSE PRINT +++++
G28 X Y ; Revenir a Zero en X Y
M104 S0 ; Couper la chauffe
M300 S300 P1000 ; Bip 1 seconde
M1 ; Pause attente pression
M109 S200 ; Reprise de la chauffe à 200°
M600 X0 Y0 Z10 E0 L0 ; purge buse en activant le changement de filament qu'on ne change pas mais qu'on laisse purger.
; +++++++++++++++++++++++++
HEPHESTOS 2

Code : Tout sélectionner

; ++++++ PAUSE PRINT +++++
G0 X0 Y297 ; Revenir a Zero en X Y
M104 S0 ; Couper la chauffe
M300 S300 P1000 ; Bip 1 seconde
M1 ; Pause attente pression
M109 S200 ; Reprise de la chauffe à 200°
M600 X0 Y297 Z10 E0 L0 ; purge buse en activant le changement de filament qu'on ne change pas mais qu'on laisse purger.
; +++++++++++++++++++++++++

Edit: Mise à jour du post avec la version finale du bout de Gcode
Dernière modification par Lolo80 le sam. déc. 23, 2017 3:44 am, modifié 9 fois.
Lolo80
Contributeur actif
Messages : 120
Inscription : sam. oct. 25, 2014 4:31 pm
Imprimante 3D : Hephestos

Un début d'idée qui règle partiellement le problème:

J'intègre dans le gcode à la ligne layer voulue le code suivant:

; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ TEST PAUSE ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
M600 X0 Y0 Z10 E0 L0 ; pause
; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Ca fonctionne, mais c'est une fonction pour changer le filament, alors ca met le système en pause, monte de 10 mm puis retourne à 0 en X et Y mais après il demande à changer le filament.
Il suffit de ne pas le changer, mais c'est pas parfait :/

J'apprécierai de trouver la même chose mais sans le changement de filament. 
Le Gcode parfait serait:

1/ Monter la tête de 5 mm
2/ Bouger la tête à X0 et Y0
3/ Eteindre la chauffe
4/ Mettre en pause
5/ Relancer en appuyant sur le bouton de l'hephestos
6/ Monter la température à 200
7/ Reprendre l'impression
Axel
Vénérable membre
Messages : 393
Inscription : sam. oct. 25, 2014 7:23 am
Imprimante 3D : WITBOX

Ici, un  très long tutoriel en français avec des idées à prendre : regarder du côté des "process" notamment et des scripts
http://multi-rotor-fans-club.com/viewto ... 65&t=15895

voir aussi les tutos et vidéos sur le site même de Simplify3d : il y a un forum  aussi
Avatar de l’utilisateur
Jacques
Site Admin
Messages : 5613
Inscription : jeu. oct. 23, 2014 3:02 pm
Imprimante 3D : Witbox, Witbox 2 et Hephestos
Localisation : Aix en Provence
Contact :

Lolo80 a écrit :Un début d'idée qui règle partiellement le problème:

J'intègre dans le gcode à la ligne layer voulue le code suivant:

; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ TEST PAUSE ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
M600 X0 Y0 Z10 E0 L0 ; pause
; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Ca fonctionne, mais c'est une fonction pour changer le filament, alors ca met le système en pause, monte de 10 mm puis retourne à 0 en X et Y mais après il demande à changer le filament.
Il suffit de ne pas le changer, mais c'est pas parfait :/

J'apprécierai de trouver la même chose mais sans le changement de filament. 
Le Gcode parfait serait:

1/ Monter la tête de 5 mm
2/ Bouger la tête à X0 et Y0
3/ Eteindre la chauffe
4/ Mettre en pause
5/ Relancer en appuyant sur le bouton de l'hephestos
6/ Monter la température à 200
7/ Reprendre l'impression
C'est un bon début, M600 est une pose pour un changement de filament, il faut trouver le g-code d'une pose simple
Ensuite éteindre la chauffe est un peu plus compliqué à gérer car au redémarrage il manquera du fil.
Par contre dans un autre sujet nous avions parlé avec Axel d'un changement de fil pour un bracelet en deux temps et deux impressions différentes
En bricolant le STL on peut le faire sans problème avec la deuxième impression en l'air
Recherche le sujet d'Axel sur le bracelet bicolor
Des idées d'améliorations https://www.thingiverse.com/Premium/designs
Une question, une précision, un manque de pièces détachées, posez vos questions ici même.
Lolo80
Contributeur actif
Messages : 120
Inscription : sam. oct. 25, 2014 4:31 pm
Imprimante 3D : Hephestos

Le problème c'est que j'ai beau regarder toutes les fonctions, je ne trouve pas de fonction pause (et presser une touche pour resume).
Seulement m600 pour changement de fil, sinon c'est G4 mais on se trouve alors avec une limite de temps avant la reprise de l'impression (et comme c'est pour mettre des aimants , il suffit de pas faire gaffe et pouf on a tous les aimants collés à l'aimant que l'on souhaitait mettre et ainsi se retrouvait à prendre plus de temps que prévu).

Alors effectivement, il reste la solution à faire une impression en 2 temps, mais je n'aime pas vraiment le concept, je préfère de ce fait utiliser m600 :/
Après en lisant les actions Gcode, on peut facilement stopper la température  :

=> exemple M104 S190 Règle la température de l'extrudeuse actuelle à 190oC et le maintien à cette température.

et la faire reprendre

=> M109 dans Marlin, Sprinter (ATmega port) et DuetDéfinir la température de l'extrudeur en degrés celcius et attendre qu'elle soit atteinte. Exemple: M109 S185

Le principal problème... c'est trouver une fonction pause....
Avatar de l’utilisateur
Jacques
Site Admin
Messages : 5613
Inscription : jeu. oct. 23, 2014 3:02 pm
Imprimante 3D : Witbox, Witbox 2 et Hephestos
Localisation : Aix en Provence
Contact :

M0 ou M1 sont des pauses avec attente jusqu'à  une pression sur le sélecteur
Je pense que la pause avec arrêt de la chauffe posera le problème du relâchement électrique des moteurs avec le risque d'un petit décalage à la reprise de l'impression.
Des idées d'améliorations https://www.thingiverse.com/Premium/designs
Une question, une précision, un manque de pièces détachées, posez vos questions ici même.
Lolo80
Contributeur actif
Messages : 120
Inscription : sam. oct. 25, 2014 4:31 pm
Imprimante 3D : Hephestos

Merci, je ne trouvais pas cette fonction dans la liste d'action du reprap.

Je vais essayer tout ça et je vous tiens au courant :D

Je crois qu'il existe une fonction pour bloquer les moteurs. Je vais bidouiller un truc et voir ça.
Lolo80
Contributeur actif
Messages : 120
Inscription : sam. oct. 25, 2014 4:31 pm
Imprimante 3D : Hephestos

Alors je viens de faire une test qui s'avère presque parfait:

; ++++++ PAUSE PRINT +++++
G0 Z1 ; Monter la tête de 5mm
G28 XY ; Revenir à Zero en X Y
M104 S0 ; Couper la chauffe
M300 S300 P1000 ; Bip 1 seconde
M1 ; Pause attente pression
M109 S200 ; Reprise de la chauffe à 200°
; ++++++++++++++++++++++++++

L'impression se coupe, et la chauffe avec.
La reprise se fait au moyen d'octoprint en pressant la touche "resume"
La chauffe reprend et se lance lorsque la tête atteint les 200. Il n'y a qu'à mettre un bout de pla en dessous de la buse pour absorber le surplus et ainsi éviter les bavures.

Le seul problème c'est qu'effectivement les moteurs se coupent aussi avec de ce fait un risque de décalage.
Et je pense que même si je rajoute une ligne pour bloquer les moteurs, l'action M1 les désactivera de nouveau.... 
Lolo80
Contributeur actif
Messages : 120
Inscription : sam. oct. 25, 2014 4:31 pm
Imprimante 3D : Hephestos

J'avance, avec ce gcode, la buse stoppe la chauffe se met en pause avec moteur bloqué et reprend la chauffe une fois passer le changement de fil.

G0 Z1 ; Monter la tête de 5mm
G28 XY ; Revenir à Zero en X Y
M104 S0 ; Couper la chauffe
M300 S300 P1000 ; Bip 1 seconde
M600 ; Pause attente pression
M109 S200 ; Reprise de la chauffe à 200°
G1 E10 F225 ; G1 E10 F225 ; purge buse de 10 mm de PLA
Lolo80
Contributeur actif
Messages : 120
Inscription : sam. oct. 25, 2014 4:31 pm
Imprimante 3D : Hephestos

Finalement, le gcode précédant comporte un défaut.
Malgré avoir rajouter une purge de l'extrudeur, on constate un manque de matière et j'ignore pour quelle raison.

J'ai fini par trouver un compromis:

; ++++++ PAUSE PRINT +++++
G0 Z1 ; Monter la tete de 1mm
G28 X Y ; Revenir a Zero en X Y
M104 S0 ; Couper la chauffe
M300 S300 P1000 ; Bip 1 seconde
M1 ; Pause attente pression
M109 S200 ; Reprise de la chauffe à 200°
M600 X0 Y0 Z10 E0 L0 ; purge buse en activant le changement de filament qu'on ne change pas mais qu'on laisse purger.
; ++++++++++++++++++++++++++
L'avantage c'est que le système coupe la température puis se met en pause.
Une fois disponible pour relancer l'impression, il n'y a qu'à resume via octoprint pour relancer la chauffe et purger la buse.
Dernière modification par Lolo80 le ven. août 05, 2016 11:28 pm, modifié 1 fois.
Avatar de l’utilisateur
Jacques
Site Admin
Messages : 5613
Inscription : jeu. oct. 23, 2014 3:02 pm
Imprimante 3D : Witbox, Witbox 2 et Hephestos
Localisation : Aix en Provence
Contact :

Pour ma par je ferais une coupe de température puis reprise avec réchauffe et une nouvelle pause de facon à purger à la main la buse.
Le relachement des moteur intervient si aucun mouvement n'est fait pendant 1 ou 2 minutes
C'est juste un paramètre dans des fichiers Marlin, je pense qu'il y a moyen de supprimer cette fonction
Des idées d'améliorations https://www.thingiverse.com/Premium/designs
Une question, une précision, un manque de pièces détachées, posez vos questions ici même.
Lolo80
Contributeur actif
Messages : 120
Inscription : sam. oct. 25, 2014 4:31 pm
Imprimante 3D : Hephestos

Après un essai sur une pièce plus grosse, je viens de réaliser que la ligne:
G0 Z1 ; Monter la tete de 1mm
semble positionner la tête à 1mm et non monter la tête d'1 mm. Quelle serait la ligne appropriée pour que la tête se lève de son point d'origine?
Avatar de l’utilisateur
Jacques
Site Admin
Messages : 5613
Inscription : jeu. oct. 23, 2014 3:02 pm
Imprimante 3D : Witbox, Witbox 2 et Hephestos
Localisation : Aix en Provence
Contact :

Il faut passer en mode relatif G91 puis repasser en mode absolu G90 si le code était dans cet état avant  :ugeek:
Des idées d'améliorations https://www.thingiverse.com/Premium/designs
Une question, une précision, un manque de pièces détachées, posez vos questions ici même.
Avatar de l’utilisateur
Jacques
Site Admin
Messages : 5613
Inscription : jeu. oct. 23, 2014 3:02 pm
Imprimante 3D : Witbox, Witbox 2 et Hephestos
Localisation : Aix en Provence
Contact :

Lolo80 a écrit :Finalement, le gcode précédant comporte un défaut.
Malgré avoir rajouter une purge de l'extrudeur, on constate un manque de matière et j'ignore pour quelle raison.

J'ai fini par trouver un compromis:

; ++++++ PAUSE PRINT +++++
G0 Z1 ; Monter la tete de 1mm
G28 X Y ; Revenir a Zero en X Y
M104 S0 ; Couper la chauffe
M300 S300 P1000 ; Bip 1 seconde
M1 ; Pause attente pression
M109 S200 ; Reprise de la chauffe à 200°
M600 X0 Y0 Z10 E0 L0 ; purge buse en activant le changement de filament qu'on ne change pas mais qu'on laisse purger.
; ++++++++++++++++++++++++++
L'avantage c'est que le système coupe la température puis se met en pause.
Une fois disponible pour relancer l'impression, il n'y a qu'à resume via octoprint pour relancer la chauffe et purger la buse.
Il y a une commande qui pourrait être bien utile car elle permet de ne jamais désactiver les moteurs
M85 - Set inactivity shutdown timer with parameter S. Disable with "M85" or "M85 S0".
De cette manière il serait possible de couper la chauffe sans pour autant perdre un pas moteur lors de la reprise
Il faut toutefois tester cette fonction et la réarmer avec 2 minutes (M85 S120) après la pause car elle risque de laisser les moteurs sous tension après l'impression.
A tester
Des idées d'améliorations https://www.thingiverse.com/Premium/designs
Une question, une précision, un manque de pièces détachées, posez vos questions ici même.
Lolo80
Contributeur actif
Messages : 120
Inscription : sam. oct. 25, 2014 4:31 pm
Imprimante 3D : Hephestos

Je remet à jour ce post pour donner le bout de Gcode que j'utilise quotidiennement pour intégrer des aimants:

Code : Tout sélectionner

; ++++++ PAUSE PRINT +++++
G28 X Y ; Revenir a Zero en X Y
M104 S0 ; Couper la chauffe
M300 S300 P1000 ; Bip 1 seconde
M1 ; Pause attente pression
M109 S200 ; Reprise de la chauffe à 200°
M600 X0 Y0 Z10 E0 L0 ; purge buse en activant le changement de filament qu'on ne change pas mais qu'on laisse purger.
; ++++++++++++++++++++++++++
Il faut intégrer ce bout de Gcode au moyen du notepad à la hauteur souhaitée (rechercher "Layer XX") afin que l'impression, se mette en pause, revienne à son origine, coupe la chauffe et bloque les moteurs (ce qui permet de vaquer à ses occupations sans se préoccuper de l'imprimante).
Une fois les aimants (où autre chose) placés dans l'impression en cours, il faut relancer l'impression en pause (au moyen d'Octoprint, je ne sais pas si l'option se présente lorsque l'on utilise la carte SD).
L'extrudeur se remet à 200° et propose le changement de filament (option obligatoire pour éviter un manque de matière lors de la reprise de l'impression (j'ai fait pas mal de test c'est la seule chose qui marche parfaitement).
Changer ou non le filament et l'impression reprend où elle s'était interrompue.

Ce système marche parfaitement avec octoprint, il faudrait le tester au moyen de la carte SD pour voir si l'option de reprise de l'impression apparaît via l'écran de l'imprimante (dans mon cas ce n'est pas le cas, mais j'utilise uniquement octoprint).
Répondre