Page 1 sur 2

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

Publié : jeu. août 04, 2016 3:26 pm
par Lolo80
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

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

Publié : jeu. août 04, 2016 6:13 pm
par Lolo80
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

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

Publié : jeu. août 04, 2016 8:57 pm
par Axel
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

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

Publié : jeu. août 04, 2016 9:46 pm
par Jacques
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

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

Publié : jeu. août 04, 2016 11:07 pm
par Lolo80
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....

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

Publié : ven. août 05, 2016 1:01 am
par Jacques
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.

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

Publié : ven. août 05, 2016 12:22 pm
par Lolo80
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.

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

Publié : ven. août 05, 2016 12:57 pm
par Lolo80
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.... 

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

Publié : ven. août 05, 2016 1:52 pm
par Lolo80
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

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

Publié : ven. août 05, 2016 8:20 pm
par Lolo80
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.

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

Publié : ven. août 05, 2016 8:55 pm
par Jacques
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

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

Publié : sam. août 06, 2016 1:38 pm
par Lolo80
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?

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

Publié : sam. août 06, 2016 5:36 pm
par Jacques
Il faut passer en mode relatif G91 puis repasser en mode absolu G90 si le code était dans cet état avant  :ugeek:

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

Publié : mer. août 17, 2016 3:00 pm
par Jacques
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

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

Publié : lun. avr. 17, 2017 2:44 pm
par Lolo80
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).