Dossier: Détecteur de colmatage

Quel utilisateur d’imprimante 3D n’a pas été confronté un jour à la perte d’un temps précieux suite à l’arrêt partiel ou total de la sortie de la matière en cours d’impression?
Quand il survient, ce problème peut avoir des conséquences coûteuses en temps et en argent suivant l’importance des pièces fabriquées. Ce gâchis imprévisible peut avoir plusieurs causes comme un bouchage de la buse, un colmatage du guide-fil, un fil cassé ou noué, ou plus simplement la fin d’une bobine.
Pour éviter de perdre une impression suite à l’apparition d’un de ces phénomènes, l’ajout d’un « détecteur de colmatage » s’avère incontournable.

 

Un détecteur de colmatage, c’est quoi?
Un détecteur de colmatage (nommé ainsi en référence à une des causes fréquentes) est un système qui compare l’avance réelle du fil par rapport à la distance commandée à l’extrudeur par le programme d’impression. En fonction des impulsions qu’il envoie au firmware, ce dernier peut mettre en pause l’impression si l’écart de distance dépasse la valeur prédéfinie.

 

Comment fonctionne un détecteur de colmatage?
Une roue en contact avec le filament tourne proportionnellement au déplacement de celui-ci. Cette roue appelée « roue codeuse » permet d’envoyer au firmware un signal à intervalle régulier. Ce signal est une alternance d’état ouvert ou fermé d’un contacteur qui transmet une tension à une broche de la carte de gestion de l’impression. La distance entre deux impulsions étant prédéfinie, si le signal ne coïncide pas avec la valeur de déplacement que le firmware a calculée, ce dernier met l’impression en pause.
La pause maintient les éléments chauffants actifs, ce qui permet d’intervenir sur l’origine du problème pour ensuite poursuivre l’impression.

Intervalle d’impulsion
L’intervalle entre deux impulsions détermine le degré de précision minimum de la détection. Il représente la distance, et donc, la quantité de matière qui peut potentiellement manquer avant que l’impression ne se mette en pause.
Quand le problème se produit dans une zone de remplissage interne cela a souvent peu d’incidence, mais il n’en est pas de même quand des zones extérieures sont affectées.

Le but recherché est donc naturellement de limiter au maximum le manque de matière pouvant impacter une impression, ce qui implique un intervalle de détection réduit.

Tolérance
La précision est primordiale, mais quand elle est trop réactive cela peut être contre-productif. En effet, une détection trop sensible peut stopper des impressions pour de petits retards d’extrusion sans conséquence notables. Des arrêts que l’on nomme à tort de fausses détections parce que l’on ne les perçoit pas.
Ces petites anomalies de débit peuvent survenir par exemple quand l’espace sous la buse n’est pas suffisant pour accepter la totalité de la matière. Le débit « s’autorégule » alors par un petit patinage du galet d’entraînement ou par la perte de quelques pas au niveau du moteur. Ces retards peuvent survenir pendant l’impression de la première couche si la buse est trop proche du plateau, ou alors dans des zones étroites où le chevauchement de dépôts génère une accumulation de matière.
D’autres phénomènes peuvent aussi intervenir, comme l’incapacité de la résistance chauffante à fondre assez rapidement la matière, ou une pression insuffisante du système d’entraînement sur le filament.
Pour éviter les arrêts intempestifs, il est donc important d’ajouter une distance de tolérance à celle de la détection pour absorber ces aléas.

Suivant le type d’imprimante et les réglages utilisés, cette tolérance peut être assez étendue. Il faut donc garder en tête que plus les facteurs à l’origine des retards sont maîtrisés, plus la plage de tolérance peut être réduite.

 

Comment les firmwares interprètent-ils les signaux ?
La compréhension du fonctionnement des firmwares vis-à-vis d’un détecteur de colmatage n’est pas toujours chose aisée compte tenu de la faible documentation existante. Des phases de tests sont souvent nécessaires pour parvenir à un paramétrage satisfaisant.

Repetier-Firmware a été un des premiers à proposer cette fonctionnalité. Il a la particularité d’utiliser la longueur correspondant à l’intervalle réel de la roue codeuse indépendamment de la tolérance. Cette valeur de référence lui permet d’offrir un mode intermédiaire qui a pour but de réduire la vitesse pour tenter de supprimer la dérive. Il compare le nombre de pas exécutés par le moteur de l’extrudeur entre 2 signaux avec le nombre de pas prédéfini pour cet intervalle. Si ce nombre est dépassé, mais qu’il reste en dessous d’une première tolérance, le firmware applique une réduction de la vitesse d’impression. Si le nombre de pas continu a augmenter et dépasse une deuxième limite, l’impression se met en pause.

La version 2 (Beta) réécrite pour la gestion des cartes 32 bits conserve ce mode de fonctionnement. Dans cette version, à l’heure actuelle, la détection n’est utilisable que par l'intermédiaire de l’interface web Repetier Host.

Marlin utilise quant à lui uniquement une information globale regroupant la longueur du pas du codeur et la tolérance. Il vérifie que le signal change d’état (allumé / éteint) et qu’il revient à son état initial avant la fin de l’intervalle défini. Dès que le signal reprend son état d’origine, le compteur se réinitialise pour analyser un nouveau cycle. Si la distance théorique est dépassée sans que le signal ait changé, ou qu’il n’est pas revenu à l’état initial, le firmware met l’impression en pause. Cette analyse ne semble pas tenir compte de la durée du signal, mais seulement du moment de son changement d’état.
On retrouve ce fonctionnement dans le firmware des écrans BigTreeTech pour les versions permettant la connexion directe de détecteurs. Il ne gère toutefois pas le contrôle entièrement seul, mais calcul les distances en fonction de ce que lui transmet Marlin au travers de la commande M114 (option détail activée).

Incidence de la précision
Pour appréhender concrètement l'incidence de la précision sur une pièce imprimée, voici un exemple avec Marlin:

Prenons une roue codeuse avec un pas de 4mm et une tolérance de sécurité de 2mm. Dans cette configuration, la valeur d’analyse est donc de 6mm. Si le problème d'extrusion intervient aussitôt après le signal d’initialisation du cycle, il manquera l’intégralité des 6mm sur la pièce avant que l’imprimante ne se mette en pause. Par contre, si l’arrêt intervient juste avant le pas suivant, le manque de matière ne sera que des 2mm de tolérance.

Avec ces paramètres, on peut considérer qu'en cas de détection le manque de matière moyen sera d'environ 4mm.

 

Limiter les perturbations

Avoir une distance de détection réduite étant essentielle, il est donc nécessaire de prendre quelques précautions pour la limiter.
Pour avoir un maximum d’efficacité, le détecteur doit être placé au plus près du système d’entraînement (qu’il soit dans la tête ou déporté). Cette proximité permet de limiter l’impact de la détente du fil dans le tuyau entre ces deux éléments, notamment au moment des rétractations.


Il est important aussi de vérifier que le débit de filament est bien étalonné.


Pour le contrôler, assurez-vous que la pression d’entraînement est suffisante pour éviter le patinage. Placez une marque sur le filament à 110mm de l’entrée du système (un adhésif fait très bien l’affaire). Chauffez suffisamment pour avoir la bonne viscosité, puis extrudez 100mm de fil, en choisissant une vitesse réduite pour éviter d'éventuels patinages ou pertes de pas. Mesurez ensuite la distance résiduelle pour vérifier qu’elle est bien de 10mm. Si ce n’est pas le cas, modifiez les paramètres dans votre firmware.

 

Les détecteurs

Les détecteurs de colmatage ne sont pas nombreux sur le marché actuellement.
 Depuis 2016 nous proposons une version d'un pas de 3,6mm conçue pour nos besoins internes, puis proposée à nos clients.
À l'origine, ce dispositif ciblait principalement les utilisateurs de Repetier-Firmware, car pendant des années ce dernier a été le seul à disposer de cette fonctionnalité.

 

Marlin2 l'ayant finalement intégré, cela a permis d'ouvrir son utilisation au plus grand nombre.
Cette possibilité à notamment permis fin 2019 à la St BigTreeTech de proposer son modèle, le Smart filament detection module. Il est donné pour un réglage minimum de détection de 7mm. Le constructeur ne détaille pas la part de tolérance dans cette valeur, mais on peut en avoir une idée approchante. 
Étant donné que la roue codeuse dispose de 8 pas, et que le déplacement du fil est d’environ 50mm par tour, on peut en déduire que le pas fait aux alentours de 6mm auquel s’ajoute une tolérance de 1mm.
Avec ces valeurs, le manque de matière moyen par détection doit être de 6,5mm.

Après quelques années d'utilisation de notre premier détecteur, malgré son bon fonctionnement, nous avions comme objectif de lui apporter quelques améliorations.
La mise à jour de notre dernière imprimante a été l’occasion de développer une nouvelle version. Cette dernière permet maintenant un réglage de la pression d’entraînement par l’intermédiaire d’une vis comprimant un ressort. Cette possibilité permet de maîtriser d'éventuels risques de glissement, quelle que soit la nature du filament utilisé. Cette modification a aussi permis de remplacer la poulie en caoutchouc par une en acier, dans un souci de durabilité.
Sur ce module, le pas entre deux signaux est maintenant de 1,3mm. Si on considère un réglage minimum de 2mm, le manque matière s’échelonne alors de 1,3 à 2mm, ce qui fait une sécurisation moyenne de 1,65mm.
Comme pour notre première version, nous proposons maintenant une déclinaison de ce détecteur dans notre boutique. Pour la première fois, en plus de la version pour filament de Ø1,75 nous proposons aussi une version Ø2,85.
Pour apporter encore plus de flexibilité, pour les utilisateurs qui en auraient besoin, nous mettons en téléchargement libre des versions STL de roues codeuses avec différents pas. Cela offre la possibilité de changer celle d’origine pour l’adapter à d’autres configurations ou firmwares.

 

Paramétrage du firmware
Le paramétrage dépend principalement du firmware, des spécificités du détecteur et de la carte de gestion. Sans rentrer trop dans les détails, les possibilités étant nombreuses et les évolutions fréquentes, voici quelques informations pour débuter:


Marlin

Ouvrez la page dédiée à votre carte dans le sous-répertoire « pins » et indiquez la référence de la broche à la ligne #define FIL_RUNOUT_PIN. Renseignez #define FIL_RUNOUT2_PIN si vous avez un deuxième détecteur.                 

Dans Configuration.h,
Activez la ligne #define FILAMENT_RUNOUT_SENSOR pour indiquer la prise en compte d’un détecteur de filament.
Renseignez le nombre de détecteurs que vous utilisez à la ligne: #define NUM_RUNOUT_SENSORS.
Activez la ligne #define FILAMENT_RUNOUT_DISTANCE_MM et indiquez la distance d’analyse (pas + tolérance). Dans le cas de l'utilisation d'un détecteur de fin de filament à la place d'un détecteur de colmatage, ce paramètre est destiné à définir la longueur d’impression autorisée après la détection pour consommer le fil résiduel entre le contacteur et l’extrudeur.
Activez la ligne #define FILAMENT_MOTION_SENSOR pour indiquer que vous utilisez un détecteur de colmatage (roue codeuse) et non un détecteur de fin de filament (contacteur on/off).
Activez la ligne #define NOZZLE_PARK_FEATURE pour spécifier la position de la tête d’impression lors d’une pause.

Dans Configuration_adv.h
Activez la ligne #define ADVANCED_PAUSE_FEATURE pour bénéficier des réglages avancés de la pause d’impression.


BigTreeTech-TouchScreen

Dans Marlin Configuration_adv.h, activez la ligne #define M114_DETAIL pour permettre la communication détaillée des déplacements des moteurs vers l’écran (communication par la commande M114)
Vérifiez que la ligne « #define LIN_ADVANCE » est désactivée pour qu’elle n’interfère pas avec #define M114_DETAIL.


Dans BigTreeTech-TouchScreenFirmware
Ouvrez la page dédiée à votre écran dans le sous-répertoire « Variants » et indiquez la référence de la broche à la ligne #define FIL_RUNOUT_PIN. Renseignez #define FIL_RUNOUT_PIN_1 si vous avez un deuxième détecteur.


Dans « config.ini »
Indiquez « 2 » à la variable « fil_runout: » si vous souhaitez que la détection de colmatage soit activée par défaut.
Indiquez la distance d’analyse (pas + tolérance) à la variable « fil_runout_distance: »


Repetier V1

Sur la page « Repetier-Firmware configuration tool » dans l’onglet « Mechanics », vous trouvez les paramètres destinés à la gestion du détecteur « Jam detection and out of filament detection ».
« JAM_METHOD » définit le type de signal à prendre en compte.
« JAM_STEPS » définit le nombre de pas moteur correspondant à l’intervalle d’impulsion du détecteur.
« JAM_SLOWDOWN_STEPS » définit le nombre de pas que doit faire le moteur d’extrusion avant de déclencher une réduction de la vitesse d’impression.
« JAM_SLOWDOWN_TO » définit le pourcentage de réduction.
« JAM_ERROR_STEPS » définit le nombre de pas du moteur d’extrusion au-delà duquel la pause de l’impression va être déclenchée.
« JAM_MIN_STEPS » indique quel pourcentage du pas ne sera pas contrôlé pour éviter des erreurs de détection.
« JAM_ACTION » définit le type d’action à effectuer lors d’une détection de colmatage.
Dans l’onglet « Tools » en fin de section de chaque extrudeur, vous devez renseigner la broche utilisée pour la détection.
Dans l’onglet « Feature », cochez la fonction « Enable G10/G11 retraction and filament change and allow jam detection »


Repetier V2
En version bêta au moment de l’écriture de ces lignes.

Dans Configuration_io.h
Définir le nom de la variable affectée à la broche du détecteur et le n° de broche
Ex:
IO_INPUT(IOJam1, 28)
IO_INPUT(IOJam2, 31)

Définissez le module qui va analyser le moteur concerné par le détecteur
STEPPER_OBSERVEABLE(name, driver)
name: Nom de la variable utilisée pour contrôler le moteur
driver: Nom de la variable du moteur analysé.
Ex:
STEPPER_OBSERVEABLE(E1Motor, E1MotorBase)
STEPPER_OBSERVEABLE(E2Motor, E2MotorBase)

Définissez le module de gestion du détecteur
JAM_DETECTOR_HW(name, observer, inputPin, tool, distanceSteps, jitterSteps, jamPercentage)
name: nom de la variable du détecteur.
observer: Nom de la variable utilisée pour contrôler le moteur.
inputPin: Nom de la variable affectée à la broche du détecteur.
tool: nom de la variable de la tête d’impression.
distanceSteps: Nombre de pas du moteur correspondant à l’intervalle d’impulsion du détecteur.
jitterSteps: Nombre de pas à ignorer pour éviter des erreurs de détection.
jamPercentage: Nombre de pas de tolérance avant le déclenchement de la procédure de colmatage.
Ex:
JAM_DETECTOR_HW(JamExtruder1, E1Motor, IOJam1, ToolExtruder1, 220, 10, 100)
JAM_DETECTOR_HW(JamExtruder2, E2Motor, IOJam2, ToolExtruder2, 220, 10, 100)

Dans Configuration.h
#define JAM_METHOD définit le type de signal à prendre en compte.
#define JAM_STEPS indique le nombre de pas moteur correspondant à l’intervalle d’impulsion du détecteur.
#define JAM_SLOWDOWN_STEPS: Nombre de pas que doit faire le moteur avant de déclencher une réduction de la vitesse d’impression.
#define JAM_SLOWDOWN_TO: Pourcentage de réduction
#define JAM_ERROR_STEPS: Nombre de pas du moteur d’extrusion au-delà duquel la pause de l’impression va être déclenchée.
#define JAM_MIN_STEPS: Nombre de pas à ignorer pour éviter des erreurs de détection.
#define JAM_ACTION: Type d’action à effectuer lors d’une détection de colmatage