Aller au contenu

GO Print

Changer Filament en cours (2 couleurs) Marlin


Messages recommandés

Salut à tous !
J'avais besoin de réaliser des plaquettes en deux couleurs (une pour le fond et l'autre  pour du texte). Après recherches sur le web : plusieurs solutions pas exactement ok pour moi. Quelques essais plus tard je suis arrivé à "la solution parfaite".
Ci-après les lignes à ajouter dans votre gcode, après ;LAYER:NN ( où NN = N° de couche, qui peut aussi être calculée par : Hauteur 1ere couleur / hauteur de couche 

;**************** Changement Filament *****************
;---------- éventuellement Valeurs pour nouveau PLA --------- 
M140 S60                                        ;Temp. Plateau (S60°)
M106 S153                                     ;Vitesse ventilo (60%) ou 255=100%
M104 S200                                     ;Temp. Buse (s200°)
;---------------------------------------------------------
G0 F1800 X0 Y0 Z0.2 E-20          ;Home et retract extrudeur 20mm
M300 S440 P1000                       ;beep son à 440Hz (la) pendant 1000msc (1s)
M0 Changer Filament                 ;Pause avec Message en attente bouton "Resume"
;-------- après "resume" manuel - Print lignes de purge (évite mélange des 2 couleurs) -------
G1 X0.3 Y20 Z0.3 F5000.0                 ; Position début
G1 X0.3 Y200.0 Z0.3 F1500.0 E15   ; 1ere ligne
G1 X0.6 Y200.0 Z0.3 F5000.0           ; petit décalage droite
G1 X0.6 Y20 Z0.3 F1500.0 E30        ; 2eme ligne
G92 E0                                                 ; Reset Extruder (RàZ longueur de Fil)
G1 Z2.0 F3000                                   ; Up axe Z pour éviter plateau ou mettre valeur Z à la hauteur de couche désirée
;*************---------------- Fin ChgFil -------------****************** 

J'espère que ce topic vous sera utile !
Cordialement @+

Modifié (le) par KryssThor
Changer couleur en cours ender 3
  • J'aime 1
Lien vers le commentaire
Partager sur d’autres sites

Salut !

Merci pour ton retour d'expérience, mais tu as omis le passage obligé par la case Présentation😉 si @pascal_lb passe par là tu vas te faire enguirlander ^^ lol encore une expression à la @fran6p

Essayes aussi de remplir ton profil avec le/les modèle(s) d'imprimante(s) que l'on sache de quoi on parle.

Modifié (le) par juanpa
Lien vers le commentaire
Partager sur d’autres sites

il y a 22 minutes, juanpa a dit :

tu vas te faire enguirlander ^^

chut c'est pas obligatoire 😄 

il y a 24 minutes, juanpa a dit :

enguirlander

tu as aussi se faire remonter les bretelles 😉 

Lien vers le commentaire
Partager sur d’autres sites

Bonjour @KryssThor

Cura possède une extension qui permet de faire le travail ou encore  via un plugin dans Octoprint 😉

Car là, honnêtement ton ajout de lignes gcode, nulle part je n'ai vu comment l'axe Z, ni le X et le Y peuvent retrouver leur position d'avant changement de filament pour reprendre l'impression.: pas de passage en mode relatif /absolu, reset de l'extrudeur (G92 E0)...

Dans Octoprint, quand on met en pause l'impression voilà le code à utiliser:

Citation

{% if pause_position.x is not none %}
; relative XYZE
G91
M83

; retract filament of 0.8 mm up, move Z slightly upwards and
G1 Z+5 E-0.8 F4500

; absolute XYZE
M82
G90

; move to a safe rest position, adjust as necessary
G1 X10 Y10
{% endif %}

Et celui pour la reprise:

Citation

{% if pause_position.x is not none %}
; relative extruder
M83

; prime nozzle
G1 E-0.8 F4500
G1 E0.8 F4500
G1 E0.8 F4500

; absolute E
M82

; absolute XYZ
G90

; reset E
G92 E{{ pause_position.e }}

; WARNING!!! - use M83 or M82(exruder absolute mode) according what your slicer generates
M83 ; extruder relative mode

; move back to pause position XYZ
G1 X{{ pause_position.x }} Y{{ pause_position.y }} Z{{ pause_position.z }} F4500

; reset to feed rate before pause if available
{% if pause_position.f is not none %}G1 F{{ pause_position.f }}{% endif %}
{% endif %}

🙂

@juanpa, on aurait pu aussi dire : houspiller, réprimander, tancer, disputer, savonner, gourmander, ...

Même si la présentation n'est pas obligatoire, elle est de bon ton entre gens biens éduqués 😉🙂😄

  • J'aime 1
  • +1 1
Lien vers le commentaire
Partager sur d’autres sites

@fran6p Il y a quelque chose qui me tarabuste ! ^^ loool

il y a 30 minutes, fran6p a dit :

; move to a safe rest position, adjust as necessary
G1 X10 Y10

Pour un mouvement à "vide" n'est-il pas de bon augure d'utiliser G0, G1 étant si je ne me trompe pas pour un mouvement avec extrusion.

 

il y a 30 minutes, fran6p a dit :

; WARNING!!! - use M83 or M82(exruder absolute mode) according what your slicer generates
M83 ; extruder relative mode

J'ai jamais trop compris ( ni trop  chercher à comprendre d'ailleurs) le comment du pourquoi de l'extrusion relative ou absolute (comme la Vodka :D)

Modifié (le) par juanpa
Lien vers le commentaire
Partager sur d’autres sites

il y a 25 minutes, juanpa a dit :

G0, G1

Sur nos brêles, c'est la même chose. Marlin ne fait pas de différence :

Citation

For Cartesians and Deltas the G0 (rapid linear movement) command is (and must be) a direct alias for G1 (rapid movement).

Extrait de la bible du gcode (ou tout ce que vous avez toujours voulu savoir sur le gcode sans jamais oser le demander) ;-)

Mode absolu dans un référentiel: x=150, y=150 positionne ce point à un seul endroit possible (par rapport au point de référence originel 0,0) dans le plan.

En relatif, le point sera à 150 (x), 150 (y) du point actuel servant de référence (si le point actuel est en 20,30 alors tu te retrouveras en 170,180).

Absolu / relatif = changement du point de référence 😉 (même chose dans un tableur par exemple, cellule en ligne 2, colonne 2 / cellule deux lignes plus haut et deux colonnes plus à droite).

  • Merci ! 1
Lien vers le commentaire
Partager sur d’autres sites

Salut tout le monde.

Je vous prie de m'excuser si je n'ai pas pris la peine de suivre la procédure de présentation quie je ne connaissait pas. 

En résumé je suis un simple utilisateur d'une ender qui s'intéresse au domaine de la 3D et souhaite très modestement faire partager qq soluces.

En réponse à fran6p :  Je n'utilise pas octoprint que je ne connais donc pas et dont à priori ne n'ai pas l'utilité pour ce que je crée.

En ce qui concerne le gcode pour quelqu'un calé comme fran6p il semble étrange qu'il ne sache pas que Cura 4.x fonctionne en mode absolu - donc si placé avant le LAYER:XX le déplacement en début de couche remettrra les axes à leur place.

De plus ma procédure permet aisément de changer les règlages propres au nouveau filament (temp noze/bed et ventilo)

Le dépôt de 2 couches préalables permet de purger et d'éviter un mélange de couleur (la procédure M600 de Cura que fran6p doit bien connaître effectue une simple extrusion qui pendouille sous la buse avant reprise).

Enfin et pour clore cette polémique m...ique, j'ai utilisé cette procédure plus de 10 fois et .... ça MARCHE !    .... alors pour le reste .... bonne soirée fran6 et merci pour le cours gcode.

Lien vers le commentaire
Partager sur d’autres sites

@KryssThor Je vais testé ça car la commande M600 ne fonctionne pas sur ma machine.

Pour cura il me semble que tu peux choisir entre absolu et relatif, me trompes-je ?

Modifié (le) par juanpa
Lien vers le commentaire
Partager sur d’autres sites

Après vérifs avec Cura 4.1,  4.2  et  4.3 le mode pour une Creality Ender avec firmware "Marlin" est par défaut absolu !

La seule chose que l'on peut changer est de mettre le "point origine" x,y,z 0 au centre du plateau.

Pour en revenir à mon gcode, il marche bien dans ces conditions (Marlin creality), pour d'autres imprimantes je n'ai pas testé !

Mais à priori un fw Marlin est le même qq soit l'imprimante...

Lien vers le commentaire
Partager sur d’autres sites

Il y a 17 heures, KryssThor a dit :

Enfin et pour clore cette polémique m...ique, j'ai utilisé cette procédure plus de 10 fois et .... ça MARCHE !    .... alors pour le reste .... bonne soirée fran6 et merci pour le cours gcode.

Toujours un plaisir de rencontrer des gens aimables 😉 qui prennent le temps de remercier les contributeurs 🙂 .

Si ta procédure fonctionne et que tu en es satisfait alors c'est l'essentiel.

Le principe de ce forum est que parfois (souvent) on y rencontre des personnes qui ont envie de continuer à apprendre et donc se posent des questions ce que tu dénommes "Paul et Mick".

Il faut parfois se méfier des "a priori" concernant Marlin, le firmware officiel est le même pour tous mais certains constructeurs y ajoutent parfois des modifications sans les proposer à la communauté, ce qui va à l'encontre de la licence de départ.

Pour ton information, la commande M600 n'est pas implantée sur toutes les Creality (n'existe pas sur les CR10S Pro par exemple).

Sinon, à quel endroit faut-il insérer tes lignes: avant ou après le numéro de la couche?

Citation

Ci-après les lignes à ajouter dans votre gcode, après ;LAYER:NN

ou

Citation

donc si placé avant le LAYER:XX le déplacement en début de couche remettra les axes à leur place.

🙂

Modifié (le) par fran6p
Lien vers le commentaire
Partager sur d’autres sites

Je prend note que mon gcode fonctionne même avec des imprimantes qui n'implantent pas la cde. M600 !

Quand à l'emplacement juste avant ou après ;LAYER:NN, étant donné qu'il s'agit d'un commentaire (précédé d'un ";"), je propose de le mettre avant ou après, au choix de celui qui s'en servira.

J'ai bien noté aussi qu'il est de bon ton de remercier les contributeurs et je n'y manquerais pas dès j'en aurai l'occasion.

Néanmoins et afin de ne mettre personne mal à l'aise, dois-je ne pas poster mes éventelles soluces ? ou vous les soumettre préalablement pour conformité ?

Lien vers le commentaire
Partager sur d’autres sites

J'annonce : j'ai un peu de mal à décortiquer le gcode mais j'essaye de progresser en comprenant cet extrait !

- Mettre des "G1" avec une valeur pour Z ne fait pas déplacer la buse à 0.3 du bed ?

Si j'ai bien compris ce gcode retourne contre le bed faire une ligne de purge ? Ce n'est pas complètement contradictoire aux imprimantes FDM (on monte mais ne descend jamais de couche) ?

 

@fran6p : j'ai pas bien compris ton extrait octoprint avec des conditions ! Est-ce compatible sans "M600" ? Comment mettre en place : y'a besoin d'un plugin ou autre chose ?

Lien vers le commentaire
Partager sur d’autres sites

Il est évident que dans ce cas il ne doit pas y avoir de parties à imprimer en conflit avec les lignes de purge - si tel était le cas le plus simple serait alors de purger par une extrusion en dehors du plateau (G1 X0 Y0 Znn   où nn = hauteur de couche+1   puis G1 E50 pour extraire 5cm de filament par ex) -

De fait, tant qu'on, est "en dehors" de la partie imprimable la hauteur avant reprise n'a pas vraiment d'importance ! sinon,  on ne se préoccupe pas de "Z" qui garde ainsi sa valeur initiale !

Néanmoins le "principe" de tjrs "monter" les couches est une sécurité qui ne doit pas être prise à la légère (risques de collision de la tête avec les pièces du plateau. 

Lien vers le commentaire
Partager sur d’autres sites

Il y a 17 heures, KryssThor a dit :

dois-je ne pas poster mes éventuelles astuces ? ou vous les soumettre préalablement pour conformité ?

C'est toi qui vois 😉

Sur ce forum tout un chacun est libre de poster ce qu'il souhaite (dans les limites de la légalité et du bon goût). Il n'y a aucune "censure", toutefois, les modérateurs veillent et peuvent appliquer parfois (rarement) des sanctions à ceux qui outrepassent les règles de bon sens 🙂 .

Le principe d'un forum d'entraide est que chacun, même débutant, peut apporter sa contribution. Une fois cette contribution postée, des compléments peuvent être ajoutés / demandés par d'autres contributeurs qui parfois froissent l'émetteur. Tant que ces compléments restent argumentés et que le langage ne dérive pas en devenant grossier voire vulgaire (ce qui n'est pas le cas actuellement), la discussion peut continuer pour faire avancer le "schmilblick" 🙂

Il y a 15 heures, obi_one a dit :

j'ai pas bien compris ton extrait octoprint avec des conditions ! Est-ce compatible sans "M600" ? Comment mettre en place : y'a besoin d'un plugin ou autre chose ?

C'est compatible sans "M600" 🙂 , tout se gère dans Octoprint: une fois l'impression en cours, un clic sur le bouton "Pause", met en pause l'impression en déplaçant la tête en un endroit "sûr".

boutons-imprimer-pause-annuler.png.0126a9cc7abf799f895f3a865bb25d06.png

Tu peux, une fois la tête positionnée en dehors de la pièce imprimée, effectuer le changement de filament par exemple. Une fois le changement effectué, un clic sur "Reprendre" permet de continuer l'impression à partir de l'endroit où elle s'était arrêtée (les positions ont été mémorisées via les variables du script).

Il n'y pas de besoin d'ajouter de plugin à Octoprint, il suffit juste d'ajouter ces lignes de scripts dans la configuration générale de l'imprimante. Je n'ai rien inventé, j'ai simplement lu la documentation mise en place par Gina, l'auteure d'Octoprint : >>> ici <<<

Sur une installation "fraîche" d'Octoprint, la suite de commande gcode nécessaires à une gestion correcte de la pause (et la reprise) est vide.

Extrait de la documentation:

scripts-gcode_pause-reprise.png.405e24d6102eba6a4395e66581ee865a.png

Il faut ajouter dans les réglages d'Octoprint les lignes de scripts données plus haut au bon endroit (section "Scripts GCode"):

settings-scripts_gcode.png.4562742911dbcc5cbff62c11421b93ed.png

🙂

Modifié (le) par fran6p
orthographe / complément
  • Merci ! 1
Lien vers le commentaire
Partager sur d’autres sites

Le 23/10/2019 at 18:34, fran6p a dit :

use M83 or M82(exruder absolute mode) according what your slicer generates

Autre petite question @fran6p, comment on sais le mode utilisé par notre trancheur ? Dans mon cas Cura.

Je présume que c'est selon les valeurs que l'on voit dans un gcode un peu long (la valeur de E qui augmente dans les commandes G1 => M82)

Lien vers le commentaire
Partager sur d’autres sites

il y a 3 minutes, obi_one a dit :

Je présume que c'est selon les valeurs que l'on voit dans un gcode un peu long (la valeur de E qui augmente dans les commandes G1 => M82)

Exactement.

La majorité des trancheurs fonctionnent en mode absolu, probablement que c'est plus facile à interpréter par nos firmware et leur CM (en majorité 8 bits). En mode relatif, il faudrait "mémoriser" la position précédente puis ajouter le différentiel de déplacement pour obtenir la nouvelle position, ce qui nécessiterait plus de puissance de calcul... Enfin c'est comme ça que je le vois. Si d'autres contributeurs sont plus calés, j'espère qu'ils nous apporteront leurs lumières.

Lien vers le commentaire
Partager sur d’autres sites

Merci pour toutes ces infos !

Bon j'ai un print de 6h en cours, je vais pas faire mumuse de suite mais je pense faire des tests très rapidement.

Jusqu'à maintenant je faisais un truc un peu dégueulasse en mettant un M0 et un déplacement hors print directement dans le gcode.

J'avais remarqué que le "M0" était bien remarqué par octoprint car il me mettait le bouton "Continuer" (Resume).

Si je mets juste le M0 va t-il traiter tout ce gcode ? Remarque je test demain et je verrais bien

Lien vers le commentaire
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...