loukatamiaou Posté(e) Mars 11, 2016 Posté(e) Mars 11, 2016 Ça c est fait . Sur la même page y a un plugin pour cura . Je parle du pâte de ligne qui concerne le m601 et toutes c est explication ceci doit ce mettre ou exactement ?
lefresh Posté(e) Mars 11, 2016 Posté(e) Mars 11, 2016 (modifié) tu peux me faire un copier coller d'un extrait du paquet de lignes dont tu parles stp? [edit] Si c'est juste le plugin cura, tu peux simplement déposer le fichier dans ~/.cura/VERSION/plugins Modifié (le) Mars 11, 2016 par lefresh
loukatamiaou Posté(e) Mars 12, 2016 Posté(e) Mars 12, 2016 case 601: // Pause for filament change (New code by Inteloide) // Syntaxe : X[pos] Y[pos] Z[relative lift] : Position parking (en relatif ! doit être positif !) // E[initial retract] : longueur de filament retiré juste avant la pause (doit être négatif !) // L[later retract distance for removal] : longueur de filament (doit être négatif !) // T[time to wait] : Durée de l'attente (en secondes) // P[pin input to change continue] : Entrée sur laquelle on attent le changement d'état (18=fin de course axe X) // I[Interval between beep] : Intervale entre deux beeps (en secondes, défaut = 5) // D[Beep duration] : Durée de chaque beep (en secondes, défaut = 0.5) // B[pin of the beep] : Pin du beeper (défaut = 27) // // NB: Par défaut on attend un temps de 180 secondes // Exemple de syntaxes : // M601 X10 Y10 Z15 E-5 T300 : Remonte de 15mm, va dans un coin du plateau, attends 300 secondes // M601 X10 Y10 Z15 E-5 P18 I2 D0.8 B27 : Remonte de 15mm, va dans un coin du plateau, attends appui sur capteur axe X { // Save positions float target[4]; float lastpos[4]; target[X_AXIS]=current_position[X_AXIS]; target[Y_AXIS]=current_position[Y_AXIS]; target[Z_AXIS]=current_position[Z_AXIS]; target[E_AXIS]=current_position[E_AXIS]; lastpos[X_AXIS]=current_position[X_AXIS]; lastpos[Y_AXIS]=current_position[Y_AXIS]; lastpos[Z_AXIS]=current_position[Z_AXIS]; lastpos[E_AXIS]=current_position[E_AXIS]; //retract by E if(code_seen('E')) { target[E_AXIS]+= code_value() * global_unit_modifier; } else { #ifdef FILAMENTCHANGE_FIRSTRETRACT target[E_AXIS]+= FILAMENTCHANGE_FIRSTRETRACT ; #endif } plan_buffer_line(target[X_AXIS], target[Y_AXIS], target[Z_AXIS], target[E_AXIS], feedrate/60, active_extruder); //lift Z if(code_seen('Z')){ target[Z_AXIS]+= code_value() * global_unit_modifier; } else { #ifdef FILAMENTCHANGE_ZADD target[Z_AXIS]+= FILAMENTCHANGE_ZADD ; #endif } plan_buffer_line(target[X_AXIS], target[Y_AXIS], target[Z_AXIS], target[E_AXIS], feedrate/60, active_extruder); //move xy if(code_seen('X')) { target[X_AXIS]+= code_value() * global_unit_modifier; } else { #ifdef FILAMENTCHANGE_XPOS target[X_AXIS]= FILAMENTCHANGE_XPOS ; #endif } if(code_seen('Y')) { target[Y_AXIS]= code_value() * global_unit_modifier; } else { #ifdef FILAMENTCHANGE_YPOS target[Y_AXIS]= FILAMENTCHANGE_YPOS ; #endif } plan_buffer_line(target[X_AXIS], target[Y_AXIS], target[Z_AXIS], target[E_AXIS], feedrate/60, active_extruder); // More retract ? if(code_seen('L')) { target[E_AXIS]+= code_value() * global_unit_modifier; } else { #ifdef FILAMENTCHANGE_FINALRETRACT target[E_AXIS]+= FILAMENTCHANGE_FINALRETRACT ; #endif } plan_buffer_line(target[X_AXIS], target[Y_AXIS], target[Z_AXIS], target[E_AXIS], feedrate/60, active_extruder); //finish moves st_synchronize(); //disable extruder steppers so filament can be removed disable_e0(); disable_e1(); disable_e2(); delay(100); // Variables générales unsigned long currentMillisBeeper = 0; // Top de depart pour le chrono du beeper unsigned long previousMiliBeeper = 0; // Précédent top unsigned long startMiliBeeper = 0; // Top de départ pour l'attente unsigned long temps=180000; // Durée d'attente unsigned long intervalBeeper = 5000; // Intervale entre chaque beep (en ms) unsigned long durationBeeper = 500; // Durée du beep (en ms) int etatBeeper = LOW; // Etat du beeper int pinBeeper = 27; // Pin pour le beeper int pin_number = 18; // Pin pour fin attente bool wait_for_time=true; int pin_target; // On récupère les paramètres if(code_seen('I')) intervalBeeper = code_value()*1000; // Intervale entre chaque beep (en ms) if(code_seen('D')) durationBeeper = code_value()*1000; // Durée du beep (en ms) if(code_seen('B')) pinBeeper = code_value(); // Pin pour le beeper if(code_seen('T')) temps = code_value()*1000; // Le temps à attendre en ms if(code_seen('P')) {pin_number = code_value(); wait_for_time=false;}; // La pin à attendre // On active les entrées/sorties pinMode(pinBeeper, OUTPUT); // On active la sortie du beeper if (!wait_for_time){ // On active l'entrée si on n'est pas en temps pinMode(pin_number, INPUT); pin_target = !digitalRead(pin_number); } // On démarre l'attente startMiliBeeper = millis(); bool stop_la_boucle=false; while(!stop_la_boucle){ manage_heater(); manage_inactivity(); // on fait aller le beeper currentMillisBeeper = millis(); if ((etatBeeper == LOW) && (currentMillisBeeper - previousMiliBeeper >= intervalBeeper)) { previousMiliBeeper = currentMillisBeeper; // On garde le moment où on a changé d'état etatBeeper = HIGH; // On change l'état du beeper digitalWrite(pinBeeper, etatBeeper); // On applique le nouvel état = on fait sonner } if ((etatBeeper == HIGH) && (currentMillisBeeper - previousMiliBeeper >= durationBeeper)) { previousMiliBeeper = currentMillisBeeper; // On garde le moment où on a changé d'état etatBeeper = LOW; // On change l'état du beeper digitalWrite(pinBeeper, etatBeeper); // On applique le nouvel état } // On regarde si on doit stopper la boucle if (!wait_for_time) {//On regarde un changement d'une entrée if (digitalRead(pin_number) == pin_target) { stop_la_boucle=true; } } else {// On regarde si la tempo est finie if (currentMillisBeeper-startMiliBeeper>=temps) { stop_la_boucle=true; } } } // Finalisation de la boucle d'attente digitalWrite(pinBeeper, LOW); // pour remettre au niveau bas (0V) après la boucle d'attente pinMode(pinBeeper, INPUT); // pour remettre en entrée qui est la valeur par défaut //return to normal if(code_seen('L')) { target[E_AXIS]+= -code_value() * global_unit_modifier; } else { #ifdef FILAMENTCHANGE_FINALRETRACT target[E_AXIS]+=(-1)*FILAMENTCHANGE_FINALRETRACT ; #endif } current_position[E_AXIS]=target[E_AXIS]; //the long retract of L is compensated by manual filament feeding plan_set_e_position(current_position[E_AXIS]); plan_buffer_line(target[X_AXIS], target[Y_AXIS], target[Z_AXIS], target[E_AXIS], feedrate/60, active_extruder); //should do nothing plan_buffer_line(lastpos[X_AXIS], lastpos[Y_AXIS], target[Z_AXIS], target[E_AXIS], feedrate/60, active_extruder); //move xy back plan_buffer_line(lastpos[X_AXIS], lastpos[Y_AXIS], lastpos[Z_AXIS], target[E_AXIS], feedrate/60, active_extruder); //move z back plan_buffer_line(lastpos[X_AXIS], lastpos[Y_AXIS], lastpos[Z_AXIS], lastpos[E_AXIS], feedrate/60, active_extruder); //final untretract } break;
inteloide Posté(e) Mars 12, 2016 Auteur Posté(e) Mars 12, 2016 Bonjour Loukatamiaou, En fait il faut mettre ce code informatique dans le fichier Marlin_main.cpp Pour faire encore plus simple, il suffit de télécharger ce fichier (=> tout est dedans !) Marlin_main.cpp
loukatamiaou Posté(e) Mars 12, 2016 Posté(e) Mars 12, 2016 Ok bon je mange et je teste .en ce qui concerne le béeper tu la brancher sur quel pin ?
loukatamiaou Posté(e) Mars 13, 2016 Posté(e) Mars 13, 2016 @inteloide bon j ai mis ces lignes dans le marlin_main ccp entre la case 600 et la case 605 fait la mise a jour du firmware ,introduit la ligne M601 X10 Y10 Z15 E-5 P18 I2 D0.8 B27 juste avant ;layer:15 . rien y fait doit je mettre cette ligne juste apres la layer
inteloide Posté(e) Mars 13, 2016 Auteur Posté(e) Mars 13, 2016 Effectivement il semble qu'il y ai un bug : le déplacement se fait sur mon imprimante, mais pas le redémarrage après appui sur l'axe X....J'y regarde Pour le bipper, il faut le brancher sur la pin A4. J'y reviendrai, je vais déjà regarder le bug.
inteloide Posté(e) Mars 13, 2016 Auteur Posté(e) Mars 13, 2016 Erreur corrigée ! Voici le fichier: Marlin_main.cpp Voici la syntaxe que je préconise (voir en bas de ce message pour plus de détail) : M601 X20 Y20 Z5 P18 Pour le branchement du beeper, il faut le faire la pin A4, entre les broches en vert sur l'image : NB : si pas de beeper une led de la carte MELZI va s'allumer ! Voici le détail de la "nouvelle" instruction : // Syntaxe (l'ordre des lettre n'a pas d'importance): // X[pos] Y[pos] Z[relative lift] : Position parking (par défaut en absolu) // R : déplacement X et Y de la position parking en relatif (attention Z est toujours en relatif) // B[pin of the beep] : Pin du beeper (défaut = 27 => Broche A4 sur la carte électronique) // E[initial retract] : longueur de filament retiré juste avant la pause (doit être négatif !) // L[later retract] : longueur de filament (doit être négatif !) // T[time to wait] : Durée de l'attente (en secondes) // P[pin input] : Entrée sur laquelle on attent le changement d'état (par défaut 18=fin de course axe X) // I[Interval beep] : Intervale entre deux beeps (en secondes, défaut = 5 sec) // D[Beep duration] : Durée de chaque beep (en secondes, défaut = 0.5 sec) // H[time in sec] : Durée de la tempo après changement d'état sur la pin (pour retirer la main) // // Syntaxe préconisée : M601 X20 Y20 Z5 P18 // ="On remonte la tête de 5 mm, on la déplace dans un coin du plateau, on attend l'appui // sur le capteur de l'axe X, puis on relance l'impression après 2 secondes" // // Exemples de syntaxes : // Avec une tempo : // M601 Z5 T300 E-5 : Remonte de 5mm, attends 300 secondes et relance l'impression // M601 X10 Y10 Z5 T300 E-5 : Remonte de 5mm, va dans un coin du plateau (X=10,Y=10mm), attends 300 secondes et relance l'impression // // Sans tempo : // M601 Z5 P18 E-5: Remonte de 5mm, attend appui sur capteur axe X et relance l'impression après 2 secondes // M601 X10 Y10 R Z5 P18 N5 I2 D0.8 B27 E-5: Remonte de 5mm, va dans un coin du plateau en relatif (X+10,Y+10mm), attend appui sur capteur axe X et relance après 5 secondes
loukatamiaou Posté(e) Mars 16, 2016 Posté(e) Mars 16, 2016 Bon be ça y est j y suis enfin arrivé merci pour vos coup de pouces 2
SebHeuze Posté(e) Mars 23, 2016 Posté(e) Mars 23, 2016 @inteloide : Par contre il y a t'il moyen de remettre après changement de fil les axes à l'endroit ou ils étaient ? Je bouge au moins un axe à chaque fois (X) quand je change de fil. Je ne connais pas trop encore le format de fichier je débute c'est pour ça que je te demande
lefresh Posté(e) Mars 23, 2016 Posté(e) Mars 23, 2016 tu peux rajouter la commande d’étalonnage de X à la fin mais tu prends le risque d'un décalage du au manque de précision du capteur... A toi de voir ce que tu préfères.
inteloide Posté(e) Mars 23, 2016 Auteur Posté(e) Mars 23, 2016 Effectivement, c'est un problème. Le problème vient du fait que les moteurs sont "désactivés" durant le changement de filament. S'il ne l'étaient pas, il serait quasi impossible de bouger les axes. Je vais regarder pour éviter de désactiver les moteurs. En attendant la solution de lefresh est valable mais il peut y avoir un décalage en X (car la mise en référence, fait avec le capteur mécanique, ne doit pas être super précise). En tout cas, pour le faire, il faut donc mettre dans le fichier gcode les deux instructions suivantes, dans le même ordre :M601 X20 Y20 Z5 P18 G28 X Inteloide
inteloide Posté(e) Mars 25, 2016 Auteur Posté(e) Mars 25, 2016 Bonsoir, Voici une nouvelle version du fichier marlin qui maintient les moteurs activés => plus possible de bouger les axes pendants le changement de filament. Marlin_main.cpp L'instruction reste la même ( M601 X20 Y20 Z5 P18 ) mais plus besoin d'ajouter le G28 X dans le fichier gcode. Inteloide 1
Weiling Posté(e) Mars 25, 2016 Posté(e) Mars 25, 2016 (modifié) Impressionnant! Fou comme ça parait facile ainsi! O_o Merci beaucoup pour ce travail et ce partage @inteloide ! @MatC Je veux ça dans les news de la semaine si pas déjà fait! (aie, pas taper chef! ) Modifié (le) Mars 25, 2016 par Weiling
inteloide Posté(e) Mars 25, 2016 Auteur Posté(e) Mars 25, 2016 Merci pour ce message, ça fait du bien d'aider une communauté et d'avoir des retours positifs ! Il faudrait pouvoir recompiler tout dans un nouveau post car quelqu'un qui prend le sujet en cours doit relire tout le fil...(impossible d'éditer le premier post pour le mettre à jour) L'idéal serait de pouvoir faire une espèce de fiche qui ré-explique toute la démarche. Inteloide 1
Picaboubx Posté(e) Mars 26, 2016 Posté(e) Mars 26, 2016 Bon j'ai essayé de suivre mais la je suis perdu. J'ai mis a jour le firmware de la Dago en intégrant dans le Marlin le dernier Marlin_main.cpp de @inteloide . Il a remplacer l'original. Est ce normal ? J'ai créer un cube test via Cura (pas Cura by Dagoma) et généré le Gcode : dagoma0.g J'ai mis dans le dagoma0.g le code M601 X20 Y20 Z5 P18 juste avant la ligne : layer:5 (dans mon cas de test) A l'allumage de la dago elle s'est bloquée contre le contacteur X et j'ai du éteindre d'urgence. J'ai remis la tête au centre de X et rallumé mais elle a fait un petit bond a droite et plus rien, elle bouge plus et l'impression ne démarre pas. Qu'est-ce que j'ai fait de mal ou raté ? J'avoue qu'un petit résumé de la procédure sera utile.
inteloide Posté(e) Mars 26, 2016 Auteur Posté(e) Mars 26, 2016 Oula, pas normal ça.... Là je suis en train de lancer une impression de 7 heures où la pause est à la couche 51 (pour un total de 99 couches) alors j'espère que ça ne va pas planter ! J'avais fait des essais en lançant une commande dans mon plugin SketchUp et ça fonctionnait à merveille. Aussi l'impression que je viens de lancer n'a pas plantée au démarrage, donc... étrange ton problème. Je renvoi le fichier au cas où il y ait eu un bug à l'envoi : Marlin_main.cpp Je vais effectivement faire une procédure en PDF, néanmoins ce qu'il faut faire : - Éteindre l'imprimante - Télécharger une version de Marlin sur le site de Dagoma (celle qui correspond à votre imprimante + capteur de l'axe Z) - Dans le Marlin il y a plein de fichiers, il faut remplacer le fichier Marlin_main.cpp par celui de je donne. - il faut connecter l'imprimante en usb et faire le changement des cavaliers sur la carte Melzi (voir procédure Dagoma) - Il faut lancer le logiciel Arduino (lien sur le site de dagoma) et ouvrir le fichier Marlin.ino - "Téléverser" le programme dans la carte Melzi avec le logiciel Arduino. - A la fin du téléversement, débrancher le câble usb de l'imprimante - remettre les cavaliers dans leur état d'origine Et voilà, l'imprimante est prête. Inteloide
Picaboubx Posté(e) Mars 26, 2016 Posté(e) Mars 26, 2016 (modifié) @inteloide C'est exactement ce que j'ai fait. Et maintenant même en ayant remis le firmware de base non modifié, au démarrage quand la tête ne touche pas le contacteur X elle fait un petit coup a droite et plus rien, et quand par exemple j'appuie avec mon doigt sur le contacteur X au démarrage la tête part a gauche et ne s'arrête plus sauf si j'enlève mon doigt du contacteur. J'espère ne pas avoir flingué la carte ! Modifié (le) Mars 26, 2016 par Picaboubx
Invité Posté(e) Mars 26, 2016 Posté(e) Mars 26, 2016 Le marlin que tu as telechargé n'est pas configuré pour ta machine. Il y a plusieurs topics qui explique comment faire quoi.....
Picaboubx Posté(e) Mars 26, 2016 Posté(e) Mars 26, 2016 (modifié) Il semble que tout soit inversé. En plus de histoire du contacteur X qui stop la tête quand il est relâché, Je viens de tester l'impression via l'usb. au démarrage la tête fait un petit coup a droite, s'arrête (donc pas contre le contacteur comme d'hab), chauffe, puis a la température descend pendant que le plateau part vers l'ARRIERE au lieu de l'avant d'habitude. Résultat le Palpeur ne trouve pas le plateau et boum. Donc il y a un vrai problème avec ma carte suite a la mise a jour avec la version proposée. ET le firmware de base n'a pas résolu le pb. J'ai les boules :-( Modifié (le) Mars 26, 2016 par Picaboubx
Picaboubx Posté(e) Mars 26, 2016 Posté(e) Mars 26, 2016 @plexy je ne comprend pas. Qu'est ce que tu veux dire par la ? En dehors du fait que j'utilise Cura et pas Cura by dagoma, qu'elle est mon erreur ?
Invité Posté(e) Mars 26, 2016 Posté(e) Mars 26, 2016 il y a 2 minutes, Picaboubx a dit : qu'elle est mon erreur ? ne pas avoir suivi les conseil que tu donnes sur ton site : ( AVERTISSEMENT : NE LE FAITE PAS SI VOUS NE SAVEZ PAS CE QUE VOUS FAITE ! )
Picaboubx Posté(e) Mars 26, 2016 Posté(e) Mars 26, 2016 à l’instant, plexy a dit : ne pas avoir suivi les conseil que tu donnes sur ton site : ( AVERTISSEMENT : NE LE FAITE PAS SI VOUS NE SAVEZ PAS CE QUE VOUS FAITE ! ) merci c'est constructif. Et j'ai suivi les infos données à priori
Messages recommandés
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 compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant