Impression 3D : un seul niveau de lit pour les gouverner tous

Dans un monde idéal, le lit de votre imprimante 3D FDM serait parfaitement parallèle au plan de mouvement de la tête d’impression. Nous disons généralement que cela signifie que le lit est « de niveau », mais en réalité, cela n’a pas d’importance s’il est de niveau au sens traditionnel du terme, tant que la tête et le lit sont à la même distance l’un de l’autre en tout point. Bien sûr, en pratique, rien n’est parfait.

La deuxième meilleure situation est lorsque le lit est parfaitement plat, mais incliné par rapport à la tête d’impression. Même si ce n’est pas idéal, le logiciel peut déplacer la tête d’impression de haut en bas de manière linéaire pour compenser l’inclinaison. Les choses sont bien pires si le lit n’est pas lui-même plat et a des bosses irrégulières de haut en bas partout.

Pour lutter contre cela, certains micrologiciels d’imprimante prennent en charge le sondage du lit pour déterminer sa forme et ajustent la tête d’impression de haut en bas au fur et à mesure qu’elle se déplace sur la carte. Bien sûr, vous ne pouvez pas sonder le lit à chaque point possible, donc l’imprimante devra interpoler entre les points de référence mesurés. Le nivellement du lit bilinéaire de Marlin en est un exemple.

Mais si vous disposez de suffisamment d’espace flash et que vous utilisez Marlin, vous pouvez essayer le nivellement de lit unifié (UBL). C’est comme le nivellement bilinéaire sur les stéroïdes. Malheureusement, la documentation de ce mode n’est pas aussi simple que vous pourriez le souhaiter. Tout est là, mais il est difficile de démarrer et les informations sont dispersées autour de quelques pages et vidéos. Réparons ça.

L’idée de base

Un capteur inductif

L’idée est simple. L’imprimante sonde le lit à de nombreux endroits. Idéalement, vous utilisez pour ce faire un capteur qui n’est pas trop loin de votre tête d’impression. Vous pouvez avoir jusqu’à 225 points, bien que 100 ou 49 soient des tailles courantes, c’est-à-dire 15 x 15, 10 x 10 ou 7 x 7 et le lit n’a pas besoin d’être carré. Le firmware stocke les valeurs de la sonde dans l’EEPROM. En fait, il peut stocker plus d’un maillage, ce qui est utile si vous avez plusieurs surfaces d’impression : vous pouvez stocker un maillage pour un lit de verre dans un emplacement et un pour un lit PEI dans un autre, par exemple.

Une fois que les données de sonde sont en place, vous ne devriez pas avoir à les sonder à nouveau, au moins pendant une longue période. Cependant, il y a quelques problèmes possibles. Premièrement, votre lit pourrait ne pas sonder exactement à chaque endroit. Encore plus probable, votre sonde peut ne pas être en mesure d’atteindre tous les endroits du lit que la buse peut atteindre. Enfin, les choses changent avec le temps. Votre lit risque de s’enfoncer un peu sur ses supports. Le système peut s’adapter à tout, mais c’est un peu complexe jusqu’à ce qu’on s’y habitue.

Tout ce qui est ancien est nouveau

Bien sûr, le nivellement du lit n’est pas exactement une nouvelle technologie. Les imprimantes ont la capacité d’en faire une version depuis longtemps. Si votre lit est parfaitement plat, il peut suffire d’incliner simplement le lit virtuel. Ceci est courant avec, par exemple, les surfaces vitrées, où il est possible de simplement déterminer la pente de l’inclinaison X et Y et de l’appliquer linéairement.

La sonde plane un peu plus haut que la buse de pinte.

UBL est un peu différent. Il utilise de nombreux points et interpole linéairement entre chaque ensemble de points. Imaginez chaque point de mesure comme faisant partie d’une grille plus large. Au fur et à mesure que la tête d’impression se déplace dans la grille, l’imprimante s’ajuste en fonction de la pente des lignes imaginaires reliant le point de grille le plus proche à ses voisins.

Mais ce sont bien plus que les nombreux points qui rendent UBL différent. Premièrement, UBL vous permet d’affiner facilement les points. Étant donné que la correction entre les points n’est qu’une supposition, il y a des cas où la supposition est fausse et vous devez modifier le point pour donner plus ou moins de correction à un endroit particulier.

Il y a plusieurs ramifications à cette édition qui pourraient ne pas être évidentes à première vue. D’une part, vous pouvez configurer UBL sans aucune sonde Z. Bien sûr, c’est pénible, mais vous pouvez mesurer manuellement tous les points et l’imprimante a des dispositions pour vous aider à faire cette mesure. Idéalement, cependant, vous aurez une sonde Z quelconque. Les sondes inductives sont populaires tout comme BL-Touch et ses nombreux imitateurs. La photo montre un capteur inductif typique.

L’autre chose que l’édition peut faire pour vous est de définir des points que votre sonde Z ne peut pas atteindre. La plupart des sondes ont un certain décalage par rapport à la tête d’impression et ne peuvent pas atteindre tous les points que la tête d’impression peut atteindre. Par exemple, si la sonde est à 10 mm à droite de la tête et que la tête ne peut aller qu’à 0 mm, alors la sonde ne peut mesurer que des coordonnées X de 10 mm ou plus.

Il s’avère que si votre lit est assez cohérent, vous n’aurez peut-être pas à mesurer ces points supplémentaires, mais vous pouvez le faire si vous en avez besoin. Marlin est assez bon pour deviner les valeurs manquantes et même si c’est faux, il peut être plus facile de commencer par deviner, puis de faire des ajustements.

Un effet secondaire intéressant est qu’une fois que vous avez un filet, il existe une variété de façons de visualiser à quoi ressemble votre lit. Ensuite, vous voudrez peut-être ajuster votre lit pour qu’il soit plus plat, mais si vous le faites, vous devrez reconstruire votre maille. Je vais vous montrer quelques façons d’obtenir un complot comme celui-ci la prochaine fois.

Bâtiment UBL

Vous devriez déjà savoir comment construire Marlin pour votre machine. Sinon, vous devrez commencer par là. Une fois que vous pouvez faire en sorte que Marlin se construise normalement, vous devrez gérer ces paramètres de configuration :

Dans configuration.h (avec quelques commentaires ajoutés pour plus de clarté) :


#define AUTO_BED_LEVELING_UBL  // and turn off or remove other AUTO_BED_LEVELING_* defines
#define RESTORE_LEVELING_AFTER_G28 // pick one of these if you want Home to restore level or turn it on
//#define ENABLE_LEVELING_AFTER_G28

//#define PREHEAT_BEFORE_LEVELING // you can enable this section or just preheat manually
#if ENABLED(PREHEAT_BEFORE_LEVELING)
#define LEVELING_NOZZLE_TEMP 120 // (°C) Only applies to E0 at this time
#define LEVELING_BED_TEMP 50
#endif

#define MANUAL_PROBE_START_Z 0.2 // Manual probes will start here so if this value is large, you will waste a lot of time

#define ENABLE_LEVELING_FADE_HEIGHT // When to fade leveling effect to zero (10mm is good)
#if ENABLED(ENABLE_LEVELING_FADE_HEIGHT)
#define DEFAULT_LEVELING_FADE_HEIGHT 10.0 // (mm) Default fade height.
#endif

#define SEGMENT_LEVELED_MOVES // split moves into small pieces instead of entire grid
#define LEVELED_SEGMENT_LENGTH 5.0
// This section sets the parameters for the mesh validation pattern if you want to use it
#define G26_MESH_VALIDATION
#if ENABLED(G26_MESH_VALIDATION)
#define MESH_TEST_NOZZLE_SIZE 0.4 // (mm) Diameter of primary nozzle.
#define MESH_TEST_LAYER_HEIGHT 0.2 // (mm) Default layer height for G26.
#define MESH_TEST_HOTEND_TEMP 205 // (°C) Default nozzle temperature for G26.
#define MESH_TEST_BED_TEMP 60 // (°C) Default bed temperature for G26.
#define G26_XY_FEEDRATE 20 // (mm/s) Feedrate for G26 XY moves.
#define G26_XY_FEEDRATE_TRAVEL 100 // (mm/s) Feedrate for G26 XY travel moves.
#define G26_RETRACT_MULTIPLIER 1.0 // G26 Q (retraction) used by default between mesh test elements.
#endif

#elif ENABLED(AUTO_BED_LEVELING_UBL)  // settings for UBL
//#define MESH_EDIT_GFX_OVERLAY // Display a graphics overlay while editing the mesh
#define MESH_INSET 0 // Set Mesh bounds as an inset region of the bed -- to avoid clips or other margins
// Set the # of rows/columns to use 
#define GRID_MAX_POINTS_X 7 // Don't use more than 15 points per axis, implementation limited.
#define GRID_MAX_POINTS_Y GRID_MAX_POINTS_X
//#define UBL_HILBERT_CURVE // Use Hilbert distribution for less travel when probing multiple points
#define UBL_MESH_EDIT_MOVES_Z // If you turn this off, the nozzle could scrape the bed while moving between edit points
#define UBL_SAVE_ACTIVE_ON_M500 // Save the currently active mesh in the current slot on M500
//#define UBL_Z_RAISE_WHEN_OFF_MESH 2.5 // You can force a height when there is no data for a point

#define UBL_MESH_WIZARD // add a wizard for setup to the menu

// more menu setup
#define LCD_BED_LEVELING
#if ENABLED(LCD_BED_LEVELING)
#define MESH_EDIT_Z_STEP 0.025 // (mm) Step size while manually probing Z axis.
#define LCD_PROBE_Z_RANGE 4 // (mm) Z Range centered on Z_MIN_POS for LCD Z adjustment
#define MESH_EDIT_MENU // Add a menu to edit mesh points
#endif

// What do do after a Z probe
#define Z_PROBE_END_SCRIPT "G1 Z10 F12000nG1 X15 Y200nG1 Z10"

Il y a aussi quelques paramètres dans configuration_adv.h si vous devez remplacer, par exemple, les coins de la sonde à trois points et des choses comme ça. Vous pouvez généralement les laisser seuls. Si vous avez un contrôleur 8 bits, vous n’avez peut-être pas assez de mémoire pour créer UBL. Il existe plusieurs façons de réduire l’empreinte mémoire, mais pas de beaucoup. Mieux vaut passer à une carte plus grande.

La prochaine fois

Une fois que vous avez créé et téléchargé le micrologiciel sur votre imprimante, vous êtes prêt à partir, n’est-ce pas ? Pas exactement. Même si l’imprimante connaît maintenant UBL, vous devez le configurer, ce qui implique de définir une hauteur Z et de mesurer votre premier maillage. Je vous montrerai comment cela fonctionne la prochaine fois.

5/5 - (1 vote)
François Zipponi
Je suis François Zipponi, éditorialiste pour le site 10-raisons.fr. J'ai commencé ma carrière de journaliste en 2004, et j'ai travaillé pour plusieurs médias français, dont le Monde et Libération. En 2016, j'ai rejoint 10-raisons.fr, un site innovant proposant des articles sous la forme « 10 raisons de... ». En tant qu'éditorialiste, je me suis engagé à fournir un contenu original et pertinent, abordant des sujets variés tels que la politique, l'économie, les sciences, l'histoire, etc. Je m'efforce de toujours traiter les sujets de façon objective et impartiale. Mes articles sont régulièrement partagés sur les réseaux sociaux et j'interviens dans des conférences et des tables rondes autour des thèmes abordés sur 10-raisons.fr.