Ajouter un détecteur de fin de filament sur CR-10 standard avec Octoprint

 

Avantages :

  • Évite de rater une impression par manque de fil pendant une absence
  • Permet d’ajouter une option de la CR 10S à moindre frais
  • Methode assez simple et peu onéreuse

 

Inconvénients :

 


 

La CR-10 standard, contrairement à sa variante S ne dispose pas de détecteur de  fin de filament, il est malgré tout possible d’en ajouter un à condition de disposer d’un serveur Octoprint sous Raspberry.

Intérêt de la manipulation :

Lorsque l’on commence une impression de grande taille ou avec une fin de bobine, il se peut que l’on arrive à court de filament avant que l’impression ne soit terminée. Sans détecteur de fin de filament, l’imprimante continue alors d’imprimer dans le vide et il n’est pas possible de récupérer l’impression.

Cette manipulation a pour avantage de ne pas nécessiter de flash du firmware de la CR-10 d’origine.

Pour rappel : la carte mère de la CR-10 n’a aucun port permettant de raccorder un détecteur de filament, de toute façon son firmware ne prévoit pas de gérer ce type de fonction.

Prérequis :

 

Le principe :

Dans la pratique, le détecteur de fin de filament est un simple interrupteur. Le filament vient appuyer sur la lamelle du contacteur tant qu’il est présent. Quand l’extrudeur tire le fil et qu’il disparait, la lamelle du contacteur saute et déclenche l’interrupteur. Le tout étant relié à un Raspberry, l’ordinateur interprète ces données via un plug-in dans Octoprint pour mettre automatiquement l’impression en pause.

On peut très bien acheter des détecteurs de filament tout fait sur Amazon… Ces derniers se montrent toutefois assez chers (entre 5 et 8 euros) alors qu’ils ne comportent qu’un simple contacteur, des câbles qu’il faudra changer, et un boitier que l’on peut imprimer pour mieux l’intégrer. Pour info, ces contacteurs sont proposés pour à peine 30 centimes l’unité en Chine.

Ces contacteurs ont 3 pattes correspondant au voltage (VCC) généralement en rouge, masse (GND) en noir et Output (Out) en blanc ou autre couleur. Il suffit de raccorder ces pattes sur les pins du Raspberry selon les ports du GPIO qui sont disponibles et en respectant ce guide (la vue se fait avec le Raspberry face à soi, framboise dans le bon sens) :

On pourra ainsi brancher:

Le VCC sur les pins 1 ou 17 (qui correspondent à une alimentation en 3v)
Le GND sur les pins 6, 9, 14, 20, 25, 30, 34 ou 39
Le Out sur le pin 7  qui correspond au GPIO4 (ou tout autre port de communication sur la plaquette, le tout étant de se rappeler sur quel port on a branché ce dernier.)

 

 

Le Plugin et configuration

Une fois branché, il faudra lancer Octoprint et aller dans les options pour installer le plug-in.
Dans la partie « Plugin Manager », on réalise une recherche avec Filament sensor et on choisit d’installer « Filament Sensor Reloaded ».

Un reboot est ensuite nécessaire.

On prend ensuite soin de paramétrer le plug-in (Option puis dans la colonne de gauche tout en bas, Plugin/ Filament Sensor Reloaded).

Dans la partie « Pin », il faut renseigner le port de communication choisi plus haut. Attention, il ne s’agit pas du numéro du Pin, mais bien du numéro GPIO comme indiqué selon le schéma fourni, soit dans notre cas le Pin 7 correspondant au GPIO4. Dans la case, on renseigne donc 4 et pas 7

On laisse Debounce Time sur 250 ms et Switch Type sur « Normally Closed » (Cette dernière option pourra varier en fonction du contacteur utilisé). On sélectionne également BCM Mode dans « Board Pin Mode » et on coche « Pause print when out of filament ». On pense ensuite à sauvegarder les réglages et à rebooter le serveur.

Désormais, le détecteur de fin de filament est fonctionnel, encore faut-il associer quelques options pour indiquer à l’imprimante quoi faire lorsqu’elle se met en pause afin qu’elle ne reste pas en place au risque d’endommager la pièce imprimée.
Pour cela, retour dans les options d’Octoprint dans la partie « GCODE Scripts »

Dans la fenêtre « After print job is paused » on renseigne le GCode :

 

G1 Z50 F4000; Remonte la tête de 5 cm

 

Puis dans la fenêtre « Before print job is resumed » on renseigne le GCode :

 

G1 Z-50 F4000 ; Descente de la tête de -50 mm

 

Cela permettra à la tête d’impression de remonter de 5 cm lorsque l’imprimante se met en pause, puis de redescendre avant de continuer l’impression. Sans un réglage ici, l’impression va stopper mais la buse va rester en place, la tête va continuer de chauffer tout comme le plateau.

On pense à sauvegarder les réglages et tout est paré, il n’y a plus qu’à tester le tout !

Note : ici, chacun est libre de mettre le code qu’il souhaite en fonction de ses besoins (CF le G-Code Wiki). Dans notre cas, la buse va remonter de 5cm et la chauffe va continuer sur le bed et la buse. Lorsque l’on aura remis le filament en place et relancé l’impression, la buse reprendra son impression. On pourra ajouter des G-Code M104/M140 pour stopper la chauffe et M109/M190 pour reprendre la chauffe avant retour à l’impression en y ajoutant les valeurs souhaitées (De type M104 S0 pour une buse à 0 degré, ou M190 S50 pour un plateau à 50 degrés.) On pourra même afficher un message ou lancer un beep selon ses envies…

Tests :

On peut facilement tester le montage sans avoir à couper son filament, il suffit de prendre un bout de chute de filament et de l’insérer dans le capteur avant le montage.
On lance alors une impression quelconque depuis OctoPrint et on retire le filament du boitier (ou plus simplement on peut scotcher la lamelle du contacteur et la relâcher pour simuler une fin de filament). L’impression devrait stopper et les commandes renseignées dans la partie GCode Script se lancer.

Pour visualiser ça d’un point de vue logiciel, on peut lancer Putty et se connecter à son serveur Octoprint.
Par défaut, le nom d’utilisateur est pi et le mot de passe raspberry.
On lance ensuite un ensemble de commandes pour visualiser les logs en direct :

 

  • cd .octoprint/
  • cd logs
  • tail -F octoprint.log

Au moment de lancer l’impression, on verra s’afficher le message INFO – PrintStarted : Enabling filament sensor. (photo ci-dessus).
En retirant le bout de fil test dans le détecteur, on devrait voir le log changer et indiquer une détection de fin de filament, ainsi que la mise en pause de l’imprimante.

Il suffira de remettre le bout de filament dans le capteur, puis de cliquer sur « Resume » (reprendre l’impression) dans Octoprint.
Il n’y a plus qu’à installer le tout, l’idéal restant le capteur juste avant l’extrudeur pour laisser suffisamment de fil dans la machine permettant de le retirer sans démonter son tube PTFE.