octobre 21

Autolevelling avec BLtouch sur Ultimaker Original+

La capteur BLtouch permet de mesurer la distance entre lui et le plateaux afin ensuite d’ajuster la distance buse/plateaux automatiquement. Plus besoin de régler  le plateaux à la main, avec les vis.

BLtouch

Fixation à la tête d’impression

Pour ce faire, il faut d’abord le fixer sur la tête de l’UMO à une hauteur prédéterminé par la hauteur du BLtouch et la distance de sa fixation à la tête et mesurer les coordonnées (X et Y) de la tige du Bltouch par rapport à la buse d’impression.

mesures BLtouchfusion-screen

Le fichier stl du support est disponible sur Thinkiverse bien sur.

Pour calculer les coordonnées du BLtouch : j’ai mis un coup de marqueur noir sur la tige du BLtouch et sur la pointe de la buse, placer une feuille de papier sur la plateaux, fais monter l’ensemble à la main jusqu’à que ça touche bien les coup de marqueur, j’ai repointer les marquage avec une pointe, histoire d’avoir un truc solide.
Ensuite, on mesure les distances entre les différentes marques, par rapport aux axes X et Y.

position-bltouch

 

Ces valeurs serviront ensuite à paramétrer les valeurs   X et Y PROBE_OFFSET_FROM_EXTRUDER  du  firmware.

A noter que, si on amène la tête à fond sur l’axe Y, le BLtouch touche le cache en bois du fond. Il faudra donc plus tard dans le firmware paramétrer un maximum sur l’axe Y de 198 mm au lieu des 210 mm original. Une petite baisse donc de la surface d’impression.
En enlevant le cache en bois, ça doit corriger ça mais j’ai eu la flème de le faire 😉

Connexion à la carte mère

Le Bltouch dispose de 5 fils : 2 pour la détection de position (et le fin de course de l’axe Z) et 3 pour son alimentation et la commade de la monter/descente de la tige. On déconnecte le connecteur de fin de course Z et on branche le BLtouch comme indiqué sur l’image.

bl-touch-pour-auto-leveling pin-j26

Configuration du firmware

Cela passe par l’installation d’Arduino, logiciel qui permet de modifier et d’envoyer le firmware sur l’imprimante.
A noter que ce n’est pas destructif, Cura permet facilement d’envoyer le firmware par défaut, pas de crainte de se coté la donc.

Ensuite, on va récupérer le firmware rc7-bltouch (que j’ai adapté depuis le firmware Marlin RC7)
On ouvre le dossier Marlin et on ouvre dans Arduino le fichier Marlin.ino.

Arduino doit être configuré comme ça au niveau « type de carte » et « processeur ».

config-arduino

Pou infos, voila les modification des différents fichiers que j’ai effectué par rapport au firmware RC7.

configuration.h
90 //#define SHOW_BOOTSCREEN  // pour ne pas afficher les infos du firmware lors du démarrage
 
124 #define MOTHERBOARD BOARD_ULTIMAIN_2
 
228 #define TEMP_SENSOR_0 20
232 #define TEMP_SENSOR_BED 20
425 #define Z_MIN_ENDSTOP_INVERTING false // inversion du type de capteur
452 #define BLTOUCH
455 #define Z_ENDSTOP_SERVO_NR 0
456 #define Z_SERVO_ANGLES {10,90} // pour commande M280 P0 S10 ou S90 (descente et monté BLtouch)
479 #define X_PROBE_OFFSET_FROM_EXTRUDER -12
      #define Y_PROBE_OFFSET_FROM_EXTRUDER 43
      #define Z_PROBE_OFFSET_FROM_EXTRUDER -3 //( entre -2.9 et -3.1)
484 #define XY_PROBE_SPEED 9000 / Amax de l’UMO+
488  #define Z_PROBE_SPEED_SLOW (Z_PROBE_SPEED_FAST / 1.5) // à 2 ça plante parfois le test de levelling, le BLtouch se met en alarme 
578 #define INVERT_X_DIR true
579 #define INVERT_Y_DIR false
580 #define INVERT_Z_DIR true
611 #define X_MAX_POS 210
      #define Y_MAX_POS 198 //210 d’origine mais limité par le cache en bois
      #define Z_MAX_POS 205
656 #define AUTO_BED_LEVELING_FEATURE
678 #define AUTO_BED_LEVELING_GRID
682     #define LEFT_PROBE_BED_POSITION 0 // >=0
            #define RIGHT_PROBE_BED_POSITION 198 // >=198 (Y max)
            #define FRONT_PROBE_BED_POSITION 43 // >=43 (position BLtouch en Y, par  rapport à nozzle)
            #define BACK_PROBE_BED_POSITION 198 // >=198 (Ymax – position  BLtouch en X)
691     #define AUTO_BED_LEVELING_GRID_POINTS 3 // 9 points de contrôle du plateaux
734  #define Z_SAFE_HOMING  //recommandé car le BLtouch sert aussi de capteur Z end stop
743 #define HOMING_FEEDRATE_Z  (4*70)//4*60 par défaut, pour que le plateau monte/descende plus rapidement
752 #define DEFAULT_AXIS_STEPS_PER_UNIT   {78.7402,78.7402,200.0,760*1.1}
753 #define DEFAULT_MAX_FEEDRATE          {500, 500, 30, 25}
754 #define DEFAULT_MAX_ACCELERATION      {9000,9000,100,10000}
756 #define DEFAULT_ACCELERATION 4000
780 #define EEPROM_SETTINGS // afin de pouvoir écrire des valeurs dans l’eeprom (M500)
939 #define LCD_LANGUAGE fr // affichage en Français
984 #define SDSUPPORT / activation du lecteur de carte de l’ulticontroller
1077 #define ULTIMAKERCONTROLLER / activation de l’UltiController
1285 #define NUM_SERVOS 3 // pour dire il y a 3 servo moteurs dispo, Servo index starts with 0 for M280 command
ultralcd.h
65   #define LCD_TIMEOUT_TO_STATUS 30000 / temps de retour automatique à l’écran d’accueil (30 sec)
pins.h
rajout : #define SERVO0_PIN 13 //activation de la broche 3 du connecteur J26
configuration_adv.h
320 #define HOMING_BUMP_DIVISOR {2, 2, 2} // sinon, le plateau ralenti à la 2e monté
321 #define QUICK_HOME  // le HOME se fait plus rapidement car les axes bougent en diagonal
342 #define DEFAULT_STEPPER_DEACTIVE_TIME 60 // désactivation des moteurs au bout de 60 sec (120 par défaut)
UPDATE
Le firmware RC7 me faisait des mises en alarme parfois lors du G29.
Avec le RC8, je n’ai plus ce problème. Par contre, le code à un peu changé par rapport au RC7.
J’ai la flemme de remettre mes modifications mais je le met à disposition : Marlin BLtouch RC8

Réglages

La partie délicate est d’avoir la tige du BLtouch (en position home Z) au même niveaux que la buse.
  1. mettre Z_MIN_POS et Z_PROBE_OFFSET_FROM_EXTRUDER sur la même valeur négative (plus grande que la distance entre la buse et la plateaux, style -50)
  2. Régler la platitude du plateaux grace aux vis de réglages, la buse étant à 43 mm du BLtouch si le plateaux n’est pas horizontal, on aura un décalage.
  3. Faire chauffer la buse à 180°, histoire de la nettoyer (pour ne pas avoir un reste de filament durcit qui fausserait la mesure  )mais sans avoir de filament qui coule
  4. placer la buse au centre du plateaux
  5. faire un Z home, mettre une feuille de papier sur le plateaux puis le remonter , par pas de 0.1 mm, jusqu’à avoir un bon frottement avec la buse.
  6. Noter la valeur Z renvoyé par l’ulticontroller, c’est le décalage entre la buse et le BLtouch en home, dans mon cas -2.8 mm
    (Une valeur négative  plus grande réduit l’écart entre la buse et le plateaux)
  7. mettre Z_MIN_POS à 0 et Z_PROBE_OFFSET_FROM_EXTRUDER à la valeur trouvé en 6
  8. Renvoyer le firmware

Note :

On peut ensuite modifier temporairement, pour des tests, la valeur de Z offset via le Ulticontroller ou via Gcode : M851 Z-2.8; (pour un offset de -2.8 par exemple).
Et ensuite les inscrire dans le firmware via M500
Ou, avec  Arduino /croquis/exporter les binaires compilées (création d’in fichier Marlin.ino.mega.hex) et l’importer dans l’Ultimaker via Repetier ou autre.

 

Voir Gcode

Utilisation

Une fois fait, le BLtouch peut monter et descendre via la commande M280 P0 S10; et M280 P0 S90;

Le test de niveaux par le code G29; mais aussi via le Ulticontroller.

Il faut donc rajouter dans son sclicer préféré un G29; (avec un HOME avant) pour avoir un test de niveaux avant chaque impression !
Perso, je l’ai mis une fois que le plateaux et chaud, histoire de prendre en compte ses éventuels déformations dus à la température.




Ecrit 21 octobre 2016 par Pit dans la catégorie "Impression 3D

2 COMMENTS :

  1. By Pit (Auteur) on

    Exacte… j’ai corrigé l’image, merci de suivre 😉

  2. By JayB on

    Hello,
    Super tuto!

    J’ai noté une petite coquille mais du coup ça porte à confusion. Dans les modifications de firmware, vous indiquez ceci:

    #define X_PROBE_OFFSET_FROM_EXTRUDER 43
    #define Y_PROBE_OFFSET_FROM_EXTRUDER -12

    Hors le schéma des mesures indique ceci:

    X = -12
    Y = 43

    => Il y a là une inversion des axes X et Y entre ce qui est indiqué dans le schéma et ce qui est écrit dans le firmware.
    Du coup l’axe XY du schéma ne devrait-il tout simplement pas être inversé? (l’axe X serait l’axe Front/Back et l’axe Y serait l’axe Left/Right).

    Encore merci pour le tuto et merci d’avance pour la réponse à ce post 🙂

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée.

quatre × cinq =