Réglage manuel du Z-offset
Posted on Fri 04 June 2021 in 3Dprinting
Récemment propriétaire d’une imprimante 3D Dagoma DiscoUltimate, il ne m’a pas fallu longtemps pour pimper un petit peu la bête. À commencer par l’ajout d’un plateau chauffant, et forcément, le changement de firmware qui va avec.
Chez Dagoma, pour faire le réglage du Z-offset, ils donnent leur procédure en passant par leur application Dagom'app. L’application est pas trop mal foutu et le réglage est assez intuitif.
Sauf que je n’ai jamais réussi à le lancer sur mon Archlinux… Voici donc ma façon de faire le réglage du Z-offset, lorsqu’on a un firmware Marlin custom et qu’on accède à son imprimante via Octoprint.
Repérage dans le firmware
Position de la sonde
Il est important de repérer dans le fichier Configuration.h
du firmware
utilisé la valeur de NOZZLE_TO_PROBE_OFFSET
. Dans mon cas, cette valeur
indique :
#define NOZZLE_TO_PROBE_OFFSET { 0, 21, -1.5 }
Ceci indique que mon capteur de position en Z est situé dans l’axe X de la buse
(le premier 0
), 21 mm en arrière de la buse, sur l’axe Y (la deuxième valeur
21
) et 1.5 mm au dessus de la buse sur l’axe Z (la dernière valeur -1.5
).
C’est surtout le -1.5
qui nous intéresse.
Activation du Babystepping
Là il s’agit de vérifier que le Babystepping est activé dans le firmware. Pour
ça, il faut vérifier dans le fichier Configuration_adv.h
que le flag
BABYSTEPPING
est définie, grâce à la ligne suivante :
#define BABYSTEPPING
Manipulation
Une fois que ces valeurs sont connus, passons à la pratique. Sur Octoprint, il faut aller sur l’onglet terminal.
Je vous conseille de cocher toutes les cases Suppress en bas de la page pour ne pas être polluer par le dialogue assez verbeux qui existe entre Octoprint et l’imprimante.
Ensuite, dans la console, taper les commandes suivantes :
M851 Z-10
G28
M114
La première fixe le Z-offset à -10 histoire d’être assez loin du plateau pour ne pas le rayer, mais pas trop loin non plus pour éviter de perdre trop de temps à l’étape d’après.
La seconde commande demande à l’imprimante de faire le Homing, de repérer les butés des axes et de se mettre en position d’attente au milieu du plateau à la hauteur de la première couche.
Enfin la dernière demande à l’imprimante la position de la buse. Elle retourne une ligne de cette forme :
Send: M114
Recv: X:102.00 Y:81.00 Z:12.00 E:0.00 Count X:16320 Y:12960 Z:19200
Recv: ok P15 B3
Ici, ma buse est à la position Z = 12.00
. Je garde la valeur sous le coude.
Ensuite, il faut venir placer la cible Dagoma (ou n’importe quelle carte de visite) sous la base, et venir la pincer – mais juste pincé – entre la buse et le plateau avec les commandes de mouvement, soit en utilisant le panneau de contrôle d’Octoprint, soit avec les commandes gcode suivantes :
G1 Z-1 F200 (pour baisser la buse de 1 mm)
Une fois que la carte est pincée, il faut alors rééxécuter la commande
M114
Et noter la nouvelle position de la buse.
Send: M114
Recv: X:102.00 Y:81.00 Z:9.10 E:1103.64 Count X:16320 Y:12960 Z:5472
Recv: ok P15 B3
Ensuite, il suffit de calculer le nouvel offset à l’aide de la formule suivante :
Zoff = Z - Zorig - Znozzle
où Z
est la dernière valeur récupérée, Zorig
la valeur prise juste avant
de pincer la carte de visite et enfin Znozzle
la valeur récupérer dans le
fichier Configuration.h
.
Avec mes valeurs, ça devient donc :
Zoff = (9.10) - (12.00) - (-1.50)
= -1.40
Ma nouvelle valeur de Z-offset est donc -1.40, pour la sauvegarder dans la mémoire de l’imprimante, il faut alors taper les commandes suivantes :
M851 Z-1.40
M500
La première enregistre une nouvelle valeur d’offset, ici -1.40, et la deuxième enregistre la configuration dans la mémoire persistante de l’imprimante.
Affinage
Pour ceux qui ont bien suivi depuis le début, ils vont me demander : « mais alors, tout à l’heure, tu nous a parler du babystepping et tu l’as complètement oublié depuis ? »
Je vous répondrais donc, j’y viens !
Pour pouvoir affiner correctement le réglage, il faut avoir du filament et un modèle à imprimer, de préférence un modèle conçu pour le bed-levelling, comme par exemple celui-ci : Bed Leveling/Calibration Test Pads
Dans votre slicer préféré, paramétrez votre impression comme d’habitude puis lancer l’impression.
Pendant l’impression, vous pouvez encore ajuster la valeur de l’offset grâce aux commandes de babystepping suivante :
M290 Z0.02
M290 Z0.01
M290 Z-0.01
M290 Z-0.02
Jusqu’à obtenir une première couche parfaite.
Bonus 1
En petit bonus, histoire que le babystepping soit plus simple, il est possible
d’ajouter des boutons dédiés au panneau de contrôle dans Octoprint. Pour ce
faire, ouvrez le fichier de configuration d’octoprint
(~/.octoprint/config.yaml
) et ajoutez à la fin du fichier :
controls:
- children:
- children:
- command: M290 Z0.02
confirm: null
name: Babystep Up
- command: M290 Z-0.02
confirm: null
name: Babystep Down
- command: M290 Z0.01
confirm: null
name: Microstep Up
- command: M290 Z-0.01
confirm: null
name: Microstep Down
layout: horizontal
layout: vertical
name: Live-Z Probe Offset
Le babystepping est maintenant tout simple à faire à n’importe quelle impression, directement depuis le panneau de contrôle d’Octoprint
Bonus 2
Ça n’a pas forcément grand chose à voir avec le réglage du Z-offset, mais je le note ici, principalement pour m’en souvenir.
Comme je l’ai dit plus haut, l’application Dagom'app ne se lance pas. Or, en plus de faire le réglage du Z-offset, elle permet aussi de flasher un nouveau firmware sur l’imprimante.
Voici donc mon petit script qui permet de flasher le firmware en ligne de commande :
#!/usr/bin/env bash
if [ -z "$1" ]; then
echo "No firmware specified"
exit 1
fi
avrdude -v -p atmega2560 -C /etc/avrdude.conf -c wiring -b 115200 -P /dev/ttyUSB0 -D -U "flash:w:${1}:i"
J’attire votre attention sur le fait que ce script fonctionne chez moi, sur une Dagoma DiscoUltimate, basé sur une carte F5. Il sera peut être nécessaire de modifier atmega2560 en fonction du micro contrôleur de votre carte, ou de modifier /dev/ttyUSB0 en fonction du port série attribué à votre imprimante.