Schyzo Posté(e) Avril 26, 2019 Posté(e) Avril 26, 2019 (modifié) Petit tuto sans prétention pour qui veut comprendre quelques aspects de Marlin, et surtout comment trouver de la place pour ceux qui, comme moi, ont une carte mère limitée. Les plus assidus du forum n'y apprendront rien ou presque, pour le reste, j'espère que ce post pourra être utile. Je suppose dans ces lignes que le lecteur sait déjà comment flasher sa machine avec le logiciel Arduino, et modifier les fichiers configuration.h et configuration_adv.h Je vais essayer de suivre l'ordre des fichiers de configuration, pour ne pas avoir à chercher trop longtemps les lignes correspondantes, mais il faut savoir que je ne détaillerai pas tout : Bien des lignes doivent rester telles quelles si l'on veut garder une imprimante fonctionnelle.Pour info, je me base sur une version de Marlin 1.1.9. Fausses idées toutes faites Tout d'abord, je souhaitais tuer dans l’œuf les fausses croyances que j'ai déjà pu lire ici et ailleurs : Il est inutile de supprimer les commentaires, cela ne vous fera que perdre votre temps Les fonctions commentées (celles commençant par '//'), ne sont pas incluses à la compilation, il est tout aussi inutile des les supprimer Fichiers de langues inutilisées : Dans language_fr.h par exemple, on voit que des tas de lignes concernant le détecteur de fin de filament, l'utilisation de l'UBL (Unified Bed Leveling), etc qui ne sont pas commentées. Même si vous n'utilisez pas ces fonctions, il est inutile de supprimer ou commenter ces variables de langue, elles ne seront pas incluses dans la compilation de Marlin. Lors de la compilation, Arduino va aller chercher et compiler uniquement les informations qui sont nécessaires, aucun superflu ne sera mis en mémoire. Dans la même lignée, rien ne sert de supprimer les lignes vides. Pour la bonne compréhension : - Chaque ligne qui commence par '//' est un commentaire ou une fonction commentée. Cela veut dire qu'Arduino ne lira pas cette ligne, et passera à la suite. - Chaque ligne qui commence par '#' est une instruction. Seules ces lignes seront lues, interprétées et compilées pour votre imprimante. Configuration.h Je ne détaillerai ici que le fichier configuration.h. J'espère avoir le temps dans les jours à venir de faire la même chose pour le fichier configuration_adv.h. Jacky Tuning On commence avec du superflu, l'écran de démarrage : Ligne 80 du fichier : #define STRING_CONFIG_H_AUTHOR "Schyzo, Anet E12 BLTouch" // Who made the changes. #define SHOW_BOOTSCREEN #define STRING_SPLASH_LINE1 "V1.1.9 for Anet E12" // will be shown during bootup in line 1 #define STRING_SPLASH_LINE2 "Adapted For Schyzo" // will be shown during bootup in line 2 Ces 4 lignes ne font qu'afficher l'écran de démarrage ( Boot Screen). L'imprimante n'a pas besoin de ça, et moi non plus. Sans cet écran, l'imprimante sera lancée environ 5 secondes plus rapidement. Commentez-donc ces 4 lignes (en ajoutant '//' devant chaque ligne) si vous voulez gagner plus de 1000 octets (1282 chez moi). Toujours dans le look, ligne 97 : #define SHOW_CUSTOM_BOOTSCREEN Ceci ne sert qu'à afficher une image personnalisée définie dans le fichier Marlin/_Bootscreen.h au démarrage. Certains fournissent une image comme TH3D qui ne fait qu'alourdir le firmware. Vous pouvez commenter Puis, à la ligne 100 : #define CUSTOM_STATUS_SCREEN_IMAGE Même combat, une image personnalisée sur l'écran d'accueil, définie dans le fichier Marlin/_Statusscreen.h comme ici : Vous pouvez commenter cette ligne pour gagner de précieux octets (voir plus). PID Le PID (Proportional Integral Derivative) est un procédé de Marlin et autres firmwares qui permet une montée en température optimisée des éléments chauffants (buse et lit). Lorsque le PID de ces éléments n'est pas activé, la montée en température est définie en 'bang-bang', comprendre en gros en binaire : "Si c'est trop froid, j'envoie du courant à fond, si c'est à bonne température, je coupe". Aussi la température ne fait que monter et descendre, ce qui peut poser une dégradation de l'impression notamment avec la température de la buse. A titre d'exemple, j'ai trouvé cette image sur le forum reprap.org : Page en question : https://reprap.org/forum/read.php?262,782815 Exemple de courbe de température en bang-bang : Avec utilisation du PID : Bref, si j'en parle ici c'est que l'utilisation du PID pèse quand même quelques kilos dans la bataille du gain de mémoire. Pour ma part, j'ai activé le PID de la buse et du lit, quitte à supprimer d'autres fonctions. PID de la buse : Pour l'activer, il faut se rendre à la ligne 362 : #define PIDTEMP Puis environ 20 lignes plus bas, il faut définir les valeurs Kp, Ki et Kd : #define DEFAULT_Kp 28.94 #define DEFAULT_Ki 2.37 #define DEFAULT_Kd 88.30 Si ces lignes sont commentées, décommentez-les. Ces valeurs que je n'expliquerai pas faute de compétence (et ce n'est pas le sujet), sont MES PROPRES valeurs. C'est elles qui définiront la montée en température de votre élément chauffant. A chaque changement de buse ou matériel chauffant (cartouche chauffante par exemple), il faut redéfinir ces valeurs. Pour cela, je vous renvoie vers un tuto du forum qui explique pas à pas la marche à suivre pour récupérer ces 3 paramètres selon votre machine : A noter que l'utilisation du PID pour la hotend requiert environ 3300 octets. PID autotune : Marlin propose d'ajouter un menu dans l'imprimante afin de lancer un autotune, c'est à dire que vous pourrez lancer directement depuis l'écran de l'imprimante un autotune qui calculera et enregistera les meilleurs valeurs pour votre imprimante. Cette fonction lancera une montée en température de la buse (température que vous définirez via l'écran de l'imprimante directement), jugera et enregistrera dans l'EEPROM des meilleurs valeurs obtenues. Pour cela, décommentez la ligne 367 : #define PID_AUTOTUNE_MENU Lors de l'autotune, sélectionnez une température que vous employez le plus. Par exemple si vous n'imprimez que du PLA et PETG, prenez une moyenne haute à 230° par exemple.Le PID autotune occupera 600 octets environ de plus. PID du bed : Pour le lit, l'utilisation du PID reste identique, à savoir une température constante. En mode BED_LIMIT_SWITCHING en revanche, on retrouve la chauffe binaire : On chauffe à fond ou rien du tout. Si vous souhaitez activer l'utilisation du PID pour le lit chauffant, décommentez la ligne 407 : #define PIDTEMPBED Et n'oubliez pas de commenter la ligne 409 afin de libérer un peu de place : //#define BED_LIMIT_SWITCHING Puis comme pour la buse, définissez les valeurs de Kp, Ki et Kd ligne 424 : #define DEFAULT_bedKp 255.01 #define DEFAULT_bedKi 17.39 #define DEFAULT_bedKd 934.85 L'utilisation du PID pour le lit chauffant occupera environ 1400 octets de plus que le mode BED_LIMIT_SWITCHING. A noter qu'il ne sera pas possible, même en ayant activé l'autotune, de lancer un test autotune pour le bed depuis l'écran LCD (vous ne devrez pas avoir à le changer régulièrement, je l'espère pour vous ). Là encore, je vous renvoie vers le tuto de neoraptor pour récupérer les valeurs Kp, Ki et Kd pour votre lit : Protection contre vous-même : Si jamais vous avez confiance en vous, sachez qu'il est possible de désactiver la protection d'extrusion à froid, ligne 445 : #define PREVENT_COLD_EXTRUSION // Permet de ne pas faire tourner l'extrudeur si la température de la buse n'est pas d'au moins 170° (EXTRUDE_MINTEMP) et la protection d'une trop grande extrusion manuelle, ligne 452 : #define PREVENT_LENGTHY_EXTRUDE // Protection pour ne pas extruder plus de 200mm (EXTRUDE_MAXLENGTH) en dehors d'une impression Ces 2 fonctions commentées vous feront gagner presque 1000 octets, à vous de jauger votre confiance en vous Je ne détaillerai pas la désactivation des protections thermiques du bed et de la hotend, qui sont à mes yeux essentielles et donc non négociables. Bed leveling Si certains ont déjà du mener la bataille des octets avec Arduino, ceux-ci savent combien l'utilisation d'un palpeur est lourd. Pour avoir fait quelques tests pour ce tuto, j'estime à 18ko le poids de l'utilisation d'un BLTouch par rapport à un simple endstop. Mais saviez-vous que vous pouviez tout de même espérer libérer un peu de place ? Chaque mode de leveling pèse plus ou moins lourd, et est plus ou moins complet forcément. Bi-linéaire Ligne 982 : #define AUTO_BED_LEVELING_BILINEAR Le mode certainement le plus utilisé et adapté à la plupart des plateaux. Grâce à un palpeur/sonde (BLTouch ou autre), il fait 3 palpages (points) ou plus dans chaque axe (X Y) et en détermine grossièrement ou finement selon le nombre de points déterminés les défauts du plateau, qu'il corrigera pendant l'impression. Nécessite 11 ko sur la carte. 3 points Ligne 980 : #define AUTO_BED_LEVELING_3POINT Avec un palpeur, sonde 3 points déterminés et détermine le nivellage du plateau. Plus léger (6 ko), à n'utiliser que si vous êtes sûrs que votre plateau est bien plat. Linéaire Ligne 981 : #define AUTO_BED_LEVELING_LINEAR Semblable au mode bi-linéaire, corrige un défaut de lit qui ne serait pas correctement incliné. Ce mode ne corrige pas les défauts d'un lit déformé (creux au centre par exemple). Nécessite 11 ko sur la carte, je cherche l'intérêt de ce mode. Unified Bed Leveling (UBL) Ligne 983 : #define AUTO_BED_LEVELING_UBL Ce mode est trop gros pour ma carte, aussi je n'ai pas pu le tester. Quoi qu'il en soit, celui-ci permet de créer une matrice très précise de votre lit et d'en enregistrer les relevés dans l'EEPROM. Puis à chaque impression, palpe 3 points pour déterminer l'inclinaison et les défauts du lit puis s'appuie sur les valeurs précédemment enregistrées pour corriger très précisément l'impression en fonction des défauts de votre lit. Pèse approximativement 48 ko. Mesh Leveling Ligne 984 : #define MESH_BED_LEVELING Un mode que j'ai découvert il n'y a pas longtemps. Celui-ci permet de corriger une déformation du lit, sans nécessiter de palpeur. Vous faites le sondage à la main (aidé par Marlin bien sûr) avec votre feuille de papier, vous jouez avec le Z depuis l'écran LCD et celui-ci corrige les défauts du lit pendant l'impression, comme si vous aviez un BLTouch. 9.7 ko nécessaires pour ce mode. Hauteur lissée (fade height) Avec certains bed leveling activés (Bi-linéaire, Mesh leveling ou UBL), vous avez la possibilité de définir une hauteur lissée, c'est à dire que pendant l'impression, Marlin va au fur et à mesure corriger la pièce pour que le défaut du lit ne soit plus visible à partir de X mm (définie via l'écran LCD ou par la commande M420 Z(hauteur). En exagérant, si votre lit est creux au centre, on peut imaginer imprimer une boite ainsi : En rouge en haut le résultat sans la hauteur lissée, en vert ce que donnera l'impression avec la hauteur lissée. Nécessite 1600 octets. Bed leveling via le LCD Ligne 1106 : #define LCD_BED_LEVELING Permet de faire le leveling si vous avez un des modes cités au dessus activé. Si vous avez activé le Mesh Leveling (manuel), Marlin vous guidera étape par étape via l'écan LCD pour faire le leveling. Requiert environ 1 ko. Déplacement de la tête automatique Ligne 1114 : #define LEVEL_BED_CORNERS Depuis l'écran LCD, permet de faire bouger la buse automatiquement pour faire le réglage aux 9 points du plateau en leveling mauel. Nécessite 1200 octets. Fonctions additionnelles Préchauffage J'ai lu encore récemment qu'on pouvait gagner de la place en commentant les fonctions de préchauffage de PLA et ABS. Bien que je les trouve utile, voilà comment gagner 40 octets. Oui, pas un de plus, 40... Commentez les lignes 1262 à 1268 : #define PREHEAT_1_TEMP_HOTEND 210 #define PREHEAT_1_TEMP_BED 60 #define PREHEAT_1_FAN_SPEED 0 // Value from 0 to 255 #define PREHEAT_2_TEMP_HOTEND 235 #define PREHEAT_2_TEMP_BED 80 #define PREHEAT_2_FAN_SPEED 0 // Value from 0 to 255 Il vous faudra également commenter ces lignes dans le fichier configuration_store.cpp, à la ligne 1820 : #if ENABLED(ULTIPANEL) lcd_preheat_hotend_temp[0] = PREHEAT_1_TEMP_HOTEND; lcd_preheat_hotend_temp[1] = PREHEAT_2_TEMP_HOTEND; lcd_preheat_bed_temp[0] = PREHEAT_1_TEMP_BED; lcd_preheat_bed_temp[1] = PREHEAT_2_TEMP_BED; lcd_preheat_fan_speed[0] = PREHEAT_1_FAN_SPEED; lcd_preheat_fan_speed[1] = PREHEAT_2_FAN_SPEED; #endif Notez que mes valeurs ne sont plus celles par défaut. Plutôt que de les virer, j'ai renommé 'ABS' en 'PETG' dans les fichiers de langue, bien plus utile que de tout supprimer pour gagner une misère.Je ne recommande absolument pas de toucher aux fichiers cpp, à vos risques et périls. Modifier les valeurs de l'EEPROM Ligne 1230 : #define EEPROM_SETTINGS Permet depuis votre PC relié à l'imprimante ou l'écran LCD de modifier la vitesse max, accélérations, jerk, steps/mm, offset Z etc etc Si vous êtes certains de ne plus toucher à ces réglages ou de flasher à chaque fois votre imprimante pour les modifier, vous pouvez commenter cette ligne afin de libérer 5.7 ko Récupérer les valeurs de l'EEPROM Ligne 1231 : #define DISABLE_M503 Pour gagner 2800 octets, il faut ACTIVER (ne pas commenter) cette ligne. Permet depuis un terminal de récupérer les paramètres de l'EEPROM (accélération, vitesses, steps/mm, ...). Nettoyage de la buse Il existe une fonction permettant avant chaque print de nettoyer la buse en l'envoyant à un point spécifique de votre plateau (ou légèrement en dehors). Voilà par exemple la réalisation de notre ami @Jean-Claude Garnier qui envoie sa buse se faire polisher sur une brosse à dent : Pour l'activer, ligne 1328 : #define NOZZLE_CLEAN_FEATURE Nécessite 1.7 ko Carte SD Pour ceux qui n'impriment que via PC ou Raspberry, sachez qu'il est possible de désactiver le support de la carte SD. Commentez la ligne 1433 : //#define SDSUPPORT Cela vous libérera presque 17 ko dans la carte de l'imprimante, mais impossible d'utiliser la carte SD.. Pour les extrêmes Encore une fois, si vous n'imprimez que depuis le port USB de votre imprimante, il se peut que vous n'ayez même pas besoin de l'écran. Par exemple, en désactivant l'écran LCD de mon Anet, ligne 1757 : //#define ANET_FULL_GRAPHICS_LCD Cela me fait économiser 39 ko de mémoire que je peux réutiliser ailleurs. Mais je n'ai plus d'écran, tout se fait depuis le PC ou le Raspberry. Voilà pour le fichier de configuration.h, j'essayerai de faire configuration_adv.h dans les jours à venir. N'hésitez pas d'y aller de vos retours si des passages sont à améliorer, réctifier ou clarifier. Modifié (le) Avril 26, 2019 par Schyzo 9 7
Schyzo Posté(e) Avril 26, 2019 Auteur Posté(e) Avril 26, 2019 Réservé pour configuration_adv.h J'espère ne pas brusquer les modérateurs par tant de pratique démoniaques
Jean-Claude Garnier Posté(e) Avril 26, 2019 Posté(e) Avril 26, 2019 Il y a 1 heure, Schyzo a dit : .. /.. J'espère ne pas brusquer les modérateurs par tant de pratiques démoniaques T'inquiètes, il ont le cuir épais..... 1
julu91 Posté(e) Avril 28, 2019 Posté(e) Avril 28, 2019 merci pour se tuto qui va peut être me permettre de gagner assez de place pour afficher le menu dont j'ai besoin
palouf34 Posté(e) Mai 3, 2019 Posté(e) Mai 3, 2019 (modifié) super tuto, qui m'a permis de découvrir la fonction leveling sans palpeur n'y bltouch... je vais testé tout cela ce week end.. Tu pourrais mettre le lien vers la méthode de notre ami @Jean-Claude Garnier pour le nettoyage de la buse via brosse a dent. hâte de voir pour le second fichier Modifié (le) Mai 3, 2019 par palouf34
Schyzo Posté(e) Mai 3, 2019 Auteur Posté(e) Mai 3, 2019 Désolé pas le temps en ce moment, entre le boulot qui s'accélère et mon 3DTouch qui devient aléatoire.. Il y a 2 heures, palouf34 a dit : super tuto, qui m'a permis de découvrir la fonction leveling sans palpeur n'y bltouch... je vais testé tout cela ce week end.. Tu pourrais mettre le lien vers la méthode de notre ami @Jean-Claude Garnier pour le nettoyage de la buse via brosse a dent. hâte de voir pour le second fichier Y'a t-il moyen des pouvoir éditer les 2 premiers messages de ce post svp? Ça serait utile pour ajouter 2 3 trucs. Merci.
fran6p Posté(e) Mai 3, 2019 Posté(e) Mai 3, 2019 il y a 38 minutes, Schyzo a dit : Y'a t-il moyen des pouvoir éditer les 2 premiers messages de ce post svp? En demandant gentiment au grand chef: @Motard Geek. Lui seul le peut .
Schyzo Posté(e) Mai 3, 2019 Auteur Posté(e) Mai 3, 2019 Il y a 3 heures, Motard Geek a dit : C'est good Merci Patron
HiTiH Posté(e) Juillet 11, 2020 Posté(e) Juillet 11, 2020 Merci beaucoup pour ce tuto très instructif. Ayant un plateau très (trop ?) tordu sur mon Anet A8, je voulais activer le bed leveling UBL mais en effet la mémoire est trop limitée... Grâce à ce tuto, j'ai fouillé un plus mais n'ayant pas d'écran graphique, je n'arrivai pas à gagner assez de place. Il y a une solution ! Décommenter //#define NO_LCD_MENUS qui implique de commenter #define ZONESTAR_LCD (sinon bonjour les erreurs de compil) Et là c'est magique avec l'UBL activé et deux trois autres fioritures on a seulement 82% de la mémoire occupée ! En revanche l'écran n'affiche plus rien (ce qui est normal vu qu'on l'a désactivé) mais ça peut surprendre. Si ça peut aider...
coucounain71 Posté(e) Octobre 12, 2020 Posté(e) Octobre 12, 2020 Bonjour, Quelqu'un saurais ou trouver un tuto des commandes de Marlin sur lcd12864 car étant novice je ne voudrais pas faire de bug quand j'imprime car hier je me suis aperçu qu'en imprimant pas tous était automatisé mon fan cool ne démarrait pas et la vitesse d'impression était au ralenti.. Et pouvez me dire si c'est normal que mon impression est presque parfaite disons même superbe avec Marlin... Cdlt à tous
matt974 Posté(e) Janvier 24, 2021 Posté(e) Janvier 24, 2021 Bonjour et merci pour les infos mais je suis toujours coincé avec cette histoire de vérifier compiler j'ai regarder pas mal de vidéo et suivi à la lettre mais j'ai plein de message d'erreur du coup impossible de transférer les donnée :( . Je possède un tevo tornado gold 2018 avec une carte MKS GEN L 1.0 plus BLTOUCH avec des stepper TMC2208_STANDALONE en XZE et Le Y c'est un LV8729 mais j'ai du mal à remettre un firmware correct help :( . Si y à quelqu'un qui possède la même config qui peut m'aider sa serait cool merci
AntiSlash Posté(e) Juillet 29, 2022 Posté(e) Juillet 29, 2022 Salut tout le monde, Je suis en train de dépoussiérer une CR-10 modée en CR-10S (double Z) et je me fais insulter par Octoprint car elle comporte toujours son firmware d'origine. Je voulais donc me lancer dans l'installation de Marlin, mais en gros noob dans ce domaine, je suis confronté à un doute quant au choix du fichier de config. Je me dis que c'est Configurations/config/examples/Creality/CR-10S/CrealityV1/ mais je préfère m'en remettre aux connaisseurs avant de faire des bêtises. Et pour le choix de Marlin, je peux passer directement en 2.1 ? Ci-joint la carte mais en version 2.0.
old-school Posté(e) Décembre 29, 2023 Posté(e) Décembre 29, 2023 (modifié) Rien à faire je n'arrive pas à alléger la version 2.1.2.1, as tu eu le temps de faire de même pour le fichier configuration_adv.h? Si quelqu'un a une idée de ce que je pourrais enlever en plus je suis preneur je dépasse de 6730 bytes, ce qui me parait énorme. merci, Christophe Modifié (le) Décembre 29, 2023 par old-school
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