TouchMi
Snarf edited this page 2 years ago

WORK IN PROGESS MAY BE INACCURATE. THIS PIECE OF DOC MAY CONTAINS TYPOES AND GRAMMAR MISTAKES

Utilisation du Touch Mi.

Quelques remarques avant de commencer :

  • Le Touch Mi fonctionne fondamentalement comme un BLTouch ou un capteur inductif.
  • Cela permet de detecter les défauts du bed, une très bonne explication de ce que cela fait et ne fait pas est ici
  • La methode de bed leveling est appelée ABL (pour Automatic Bed Leveling), il ne s'agit pas (obviously) de Bed Leveling Manuel (via le LCD par exemple) ou d'UBL (Unified Bed Leveling). Ce point est important, certaines commandes, comme la G29, reagissent différement en fonction du type de leveling.
  • Le Touch Mi permet de faire de la correction de leveling de façon manuelle (deploiement du palpeur et mesure sur demande), semi auto (deploimenent auto du palpeur et mesure sur demande) ou full auto (la procédure complete est déroulée à chaque impressionn. Cela se defini en fonction du GCODE ajouté au slicer et de la présence ou non de l'aimant.

Firmware

J'utilise la version 1.1-bugfix de Marlin. Ma version est disponible ici : https://git.dahwa.fr/3DPrinting/Tips/src/master/firmwares/marlin

Sur l'Ender-3, la carte mère necessite de passer par le bootloader arduino. Personnellement, j'utilise un clone de l'Arduino Nano.

Je fonctionne avec un auto levelling automatique, mais pas systèmatique, avant chaque impression.

Je suis parti, de la documentation officielle (disponible ici ou sur le Google Drive de hotends.fr) et de l'howto d'ender3.fr

Support Touch-Mi et Aimant

Le palpeur du Touch Mi se deploie soit manuellement, soit de maniere automatique, via un aimant au niveau de l'Endstop X.

Le support pour le Touch Mi est sur le carter stock de l'ender 3 (en jaune) et le support de l'aimant est sur la carter de l'axe X (en violet)

Support Touch Mi

Ces supports ont été désigné par fluffaille et sont disponible sur thingiverse

Il n'y a pas de contraite d'installation si ce n'est que vous devez connaitre la distance en X et Y entre la buse et le palpeur, et que l'extremité du palpeur rentré doit etre entre 2,5mm et 1mm plus haut que la buse.

Procédure de réglage du Touch Mi.

Le réglage se fait en plusieurs étapes :

  1. Une mise à niveau à la louche du bed
  2. La définition du Z-Offset
  3. L'auto level
  4. Le GCODE pour le slicer.

Step 1 : Mise à niveau du Bed.

La mise à niveau classique, pour avoir un bed à peu près à niveau avant d'attaquer avec le palpeur.

Step 2 : Reglage du Z-Offset

Step 2.1 : Deplacement de la tête

Le GCODE d'initialisation

M420 S0; Ensure previous mesh is unused
G28; Homing XYZ 
M851 Z0; Setting Z=0 
M500; Save to EEPROM
G28 Z0; Homing Z
G1 F50 Z0; Ensure Z=0
M211 S0; Overriding Soft Endstops

Step 2.2 : Determination de l'Offset

  • Deplacer le Z avec le LCD, pronterface, octoprint, etc ... comme pour faire un leveling
  • Une fois que la feuille frotte, relever le Z-offset (sur l'ecran ou via M114)

Step 2.3 : Sauvegarde de l'offset

 M211 S1; reenabling soft endstops
 M851 Z<Z_Offset_Value>; Setting Z Offset
 M500; Save to eeprom 

Une fois que c'est fait, refaire un G28 puis un G1 Z0 et verifier que la feuille touche toujours de la même maniere

Ne pas hésiter à refaire un niveau à l'ancienne et de recheck le Z offset avant de passer au step 3

Step 3 : Creation du mesh

Personnellement, je passe par le controlleur LCD via le menu Prepare -> Level Bed.

Une fois activé, l'imprimante va collecter les points de mesure ( une grille de 5x5 pour moi) et sauver dans l'EEPROM les données.

Vous pouvez voir les données collectées avec la commande M420 T1 V

Send: M420 T1 V
Recv: Bilinear Leveling Grid:
Recv:       0      1      2      3      4
Recv:  0 -0.104 -0.070 -0.024 +0.022 +0.039
Recv:  1 -0.101 -0.053 -0.038 -0.019 +0.015
Recv:  2 -0.029 -0.002 -0.043 -0.014 -0.004
Recv:  3 +0.042 +0.056 +0.001 -0.007 -0.026
Recv:  4 -0.002 +0.020 +0.008 +0.005 -0.026
Recv: 
Recv: echo:Bed Leveling On
Recv: echo:Fade Height Off
Recv: ok

Dans le menu Prepare, l'option Bel Leveling va passer de Off à On.

Step 4 : Le GCODE pour les slicers

Je n'utilise pas l'ABL à chaque impression, en revanche, l'activation du palpeur est automatique. Mon gcode va donc juste d'assurer que le bed levellingest bien actif et faire en sorte de desactiver le palpeur avant de se deplacer sur le plateau :

; Ender 3 Custom Start G-code
G28 ; Home all axes
M420 S1 ; Ensure BL loaded from EEPROM. 
G92 E0 ; Reset Extruder
G1 Z2.0 F3000 ; Move Z Axis up little to prevent scratching of Heat Bed
G1 X0.1 Y20 Z0.3 F5000.0 ; Move to start position
G1 X0.1 Y200.0 Z0.3 F1500.0 E15 ; Draw the first line
G1 X0.4 Y200.0 Z0.3 F5000.0 ; Move to side a little
G1 X0.4 Y20 Z0.3 F1500.0 E30 ; Draw the second line
G92 E0 ; Reset Extruder
G1 Z15.0 F8000 ; Move Z Axis up little to prevent scratching of Heat Bed
G1 X50 Y50 F8000 ; Going in a safe place to rectract pin 
G1 Z0.5 F8000 ; deactivating Touch Mi 
G1 Z1 F1500 ; Ensure some height before printing. 
; End of custom start GCode

NOTE : la commande M420, qui permet de controler l'usage des données de leveling, n'est pas nécessaire ici dans la mesure où la feature RESTORE_LEVELING_AFTER_G28 est active. Je l'ai conservée néanmoins pour m'assurer que c'est bien le cas et pour avoir un rappel que c'est ici qu'il faut mettre un M420 S0 si je dois imprimer sans utiliser ces données.

[BONUS] Le plugin Bed Visualizer d'Octoprint

Ce plugin permet d'avoir une représentation visuelle de votre bed et d'en estimer la planéité (en fait, c'est la planéité, plus les erreurs et plus les effets de la mise à niveau du bed)

La page du projet est ici et le plugin est disponible dans le catalogue des plugins

il permet de tranformer la sortie de la commande M420 T1 Ven une représentation d'une surface 3D

par exemple, les données suivantes :

Send: M420 T1 V
Recv: Bilinear Leveling Grid:
Recv:       0      1      2      3      4
Recv:  0 -0.104 -0.070 -0.024 +0.022 +0.039
Recv:  1 -0.101 -0.053 -0.038 -0.019 +0.015
Recv:  2 -0.029 -0.002 -0.043 -0.014 -0.004
Recv:  3 +0.042 +0.056 +0.001 -0.007 -0.026
Recv:  4 -0.002 +0.020 +0.008 +0.005 -0.026
Recv: 
Recv: echo:Bed Leveling On
Recv: echo:Fade Height Off
Recv: ok

donne cette representation

BV

[BONUS] Je suis un gros bourrin en décollant mes prints et je dois refaire le niveau de mon bed.

Si comme moi, vous avez la flemme d'être délicat et que lors du retrait de la piece, vous avez tendance à defoncer votre leveling ou que votre chat (ou enfant) a tripoté les molettes de réglage, il faut refaire le niveau. L'auto leveling a ses limites.

Pour le refaire, j'utilise deux méthodes, pas forcément académique :

A la main

L'idée est de corriger le niveau manuellement. et quand je dis manuellement, c'est avec la main.

  1. un petit G28 pour refaire le homing
  2. on place la feuille sous la buse.
  3. un petit G1 Z0 pour aller à niveau zéro du bed
  4. M18 X Y pour couper l'asservissement des steppers X et Y (histoire de pouvoir les bouger à la main)
  5. On fait son niveau en bougeant délicatement le chariot et les molettes à l'ancienne
  6. Une fois fini, on relance un bed leveling (le step 3)

Avec le plugin Bed Leveling Wizard

Ce plugin est également dispo dans le catalogue de plugin. il permet de pré-placer la buse pour le leveling

Ma configuration est la suivante :

  • Travel Speeds
    • X/Y Axes : 120mm/s
    • Z Axis : 20 mm/s
  • Custom points
    • X = 40mm / Y = 40 mm
    • X = 190mm / Y = 190 mm
    • X = 40mm / Y = 190 mm
    • X = 190mm / Y = 40 mm
    • X = 115mm / Y = 115mm
    • Z Traveling Height : 50 mm pour etre sur que le palpeur déployé ne heurte pas le bed (c'est du vécu ^^)
    • Z Leveling Height : 0 mm

Il y a 2 options :

  • soit faire le bed leveling normalement.
  • soir le faire SANS l'ABL, avec un M420 S0 AVANT si vous voulez refaire completement le mesh.

Dans les deux cas, il faut refaire un bed leveling (step 3)

Vous pouvez aussi utiliser le plugin pour valider que le mesh est bon et verifiant juste avec une feuille pour chaque point. Dans ce cas, il faut laisser l'ABL actif

ENABLE_LEVELING_FADE_HEIGHT

Depuis marlin 1.1, il existe une feature qui permet de couper la correction du leveling a partir d'une certaine hauteur. Cette fonctionnalité est disponible en activant ENABLE_LEVELING_FADE_HEIGHT lors de la compilation.

L'interet de cette fonctionnalité est d'arreter de compenser les défauts du bed et donc de ne pas "reporter" la correction sur toute la hauteur de l'impression.

Je la configure dans le Gcode de démarrage apres le G28 avec la commande M420 Z<height>height est la hauteur à partir de laquelle vous ne voulez plus de correction.

Normalement, un M420 Z<height> suivi d'un M500 devrait la stocker avec le mesh. On devrait pouvoir se passer de cette ligne dans le Gcode de démarrage, mais, j'en suis pas sûr à 100%, bien qu'on puisse le regler depuis le menu Prepare

C'est bizarre, depuis que j'ai le touch mi, ca adhère super mal.

C'est un comportement assez ennuyeux dans la mesure où la sonde sert exactement à contrer ce problème ;)

J'ai un peu ce souci sur mon Ender 3, regulierement, j'ai un mesh trop écarté de la buse a droite du plateau. Je pense que c'est un souci purement mécanique et pas lié à la sonde. Fondamentalement, ce problème peut apparaitre avec n'importe capteur (BLtouch, inductif, etc .. )

L'Ender 3 utilise un simple axe Z. Toute sa précision part du principe que tout deplacement de l'axe Z est identique pour les deux cotés de la poutre qui soutient le chariot d'impression. Si vous faites du Z-Hop lors de l'impression, vous devriez voir que le deplacement sur Z pour la partie droite de la potence à un léger décalage temporel la partie gauche.

C'est 'normal', enfin ... logique. Le but est que cela se voit le moins possible, en reglant les exentriques des 2 cotés de la potence (coté alim et coté Z).

L'autre chose a verifier est la tension des ressorts du bed. En decollant ou bougeant le print ou le bed, on peut arriver à une situation ou le niveau du bed change sans qu'on le remarque.

Il faut aussi verifier que le cadre en alu est bien monté, et que l'ensemble de la strucuture n'est pas déformée. Cela se produit si c'est trop ou pas assez vissé. De même pour le reglage des différentes pièces de la potence (cf. cette vidéo https://youtu.be/pu6bJwq60oc?t=1543 )

Pour savoir si un truc déconne, une methode simple consiste a faire un mesh from scratch, puis de replacer la buse a Z=0 plusieurs fois pour voir si le niveau est toujours le même.

Quelques liens utiles :