Après un an d’utilisation de ma Tronxy, je me suis rendu compte l’élément limitant l’imprimant est la carte mère. En effet, j’avais régulièrement des reboots de l’imprimante. Et quand ça arrivait la reprise d’impression ne marchait pas.
Des fois, c’était juste après le homing ; mais des fois c’était en pleine impression, et là ca faisait chier de perdre 4h et de la matière. En plus, ca m’obligeait à ne pas faire de trop grosse impression, de peur de la voir planté.
Ajouté à cela, j’ai aussi remarqué les problèmes suivant :
- Mauvaise gestion des accélérations : d’origine ils sont trop bas et cela rallonge le temps d’impression de 25 à 50 pourcent. Si on l’augmente un peu, elle se met à faire des à-coups lors de direction.
- Vitesse d’impression limité : au delà de 60mm/s les mouvements se mettent à saccader, ce qui fait apparaitre des défaut sur les couches extérieurs.
- Manque de puissance de calcul : ca se recoupe avec les deux points précédents, mais ca impacte aussi la gestion des ventilateurs et de la chauffe. En effet, lors de grand déplacement à grande vitesse, la carte mère ne les régule plus, ce qui fait que le ventilateur de hotend s’éteint ; et en même temps le PWM de la résistance passe à 100%, ce qui va faire dépasser la température cible du hotend.
- Mauvaise intégration à Octoprint : Certain on réussi à la faire fonctionner mais c’est mal documenté et plus de la bidouille, donc j’ai pas trop chercher de ce coté.
Et puis ce qui m’a fait passer le cap, c’est qu’en bricolant j’ai fait tombé un écrou sur la carte mais je l’avais pas retrouvé et en rallumant j’ai eu un driver qui à pété.
La nouvelle carte mère : BigTreeTech Octopus Pro
Après presque deux mois d’attente de la livraison, je l’ai enfin reçu. J’ai pas fait dans la dentelle mais j’ai dans la tête quelques upgrades pour plus tard.
Il s’agit donc de la toute dernière version sortie en Septembre 2021, elle dispose d’un processeur 32bits STM32F429, de huit drivers pouvant être alimenté jusqu’à 60 Volts et tout un tas d’entrées/sorties.
Elle est compatible Marlin, Klipper et RepRap Firmware ainsi que Octoprint. Pour ma part, ce sera Klipper sous OctoPi.
Installation OctoPi et Klipper
La, je vais pas réinventer la roue. Il y a de la très bonne documentation, je vous met les liens et je vous donne les points durs que j’ai rencontré.
Pour commencer, installer OctoPi en suivant la documentation officielle : https://octoprint.org/download/
Une fois l’image déployée, nous allons d’abord tout mettre à jour.
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo rpi-update
$ sudo raspi-config
> 6 Advanced Options
> A7 Bootloader Version
J’ai eu une erreur qui ressemble à cela lors du » apt-get update » :
E: Repository 'https://xxxxxxxxx stable InRelease' changed its 'xxx' value from ......
N: This must be accepted explicitly before updates for this repository can be applied. See apt-secure(8) manpage for details.
Pour résoudre ce problème, taper la commande suivante :
$ sudo apt-get update --allow-releaseinfo-change
Ensuite, on passe à l’installation de Klipper : Installation – Klipper documentation (klipper3d.org)
Vous pouvez suivre ce tuto sur Youtube, il est plutôt complet.
Vous pouvez aussi récupérer les documentation de BigTreeTech : Download | BIQU& BigTreeTech 3D printing – bigtree-tech
Quelques points d’attentions dans l’ordre où je les ai rencontrés :
- Dans le « make menuconfig » de Klipper, faire attention à bien sélectionner le modèle de carte mère. Dans mon cas, c’était « STM32F429 » ; et le clock reference à « 8MHz »
- L’étape où on tape les commandes suivantes n’est pas nécessaire car on utilise la carte SD pour déposer le firmware sur la carte mère
sudo service klipper stop
make flash FLASH_DEVICE=/dev/serial/by-id/usb-1a86_USB2.0-Serial-if00-port0
sudo service klipper start
- J’utilise une carte SD de 1Go, préférer la formater avec l’outil de SDcard.org https://www.sdcard.org/downloads/formatter/
- dans le tuto Youtube, il prend le mauvais fichier de configuration, il faut prendre celui ci « klipper/config/generic-bigtreetech-octopus.cfg »
- A chaque fois que vous modifiez la configuration, faire « Save and close », puis « Reboot », cliquer sur le bouton « Symbole POWER » et faire un « Restart Klipper »
Cablage de l’Octopus sur la Tronxy : Moteur
Vous aller avoir besoin de nouveau câble moteur plus long car nous n’utiliserons plus la nappe de la Tronxy. Et pour me simplifier la tâche, j’ai acheté un palpeur 3DTouch.
On va commencer par la partie mouvement du chariot. Le branchement est donc le suivant :
1 | MOTOR0 | Moteur de X, c’est celui qui est au fond à droite. Aussi appelé moteur Alpha |
2 | MOTOR1 | Moteur de Y, c’est celui qui est au fond à gauche. Aussi appelé moteur Beta |
3 | MOTOR2_1 | Moteur de Z , pas d’importance droite ou gauche |
4 | MOTOR2_2 | Moteur de Z |
MOTOR3 | Ne pas utiliser, réserver pour des fonctions avancées | |
5 | MOTOR4 | Moteur de l’Extrudeur |
6 | STOP0 | Fin de cours de X |
7 | STOP1 | Fin de course de Y |
8 | BL_Touch | Se référer à la doc BigTreeTech. De gauche à droite : Maron;Rouge;Jaune;Noir;Gris |
Firmware
- Configurer la cinématique de la carte mère en CoreXY :
[printer]
kinematics: corexy
- Inverser la logique des fin de course en ajoutant un ! :
[stepper_x]
endstop_pin: !PG6
[stepper_y]
endstop_pin: !PG9
- Déclarer le BLTouch (BL-Touch – Klipper documentation (klipper3d.org)) :
[stepper_z]
endstop_pin: probe:z_virtual_endstop
[bltouch]
sensor_pin: ^PB7
control_pin: PB6
pin_up_touch_mode_reports_triggered: False
z_offset: 0
[safe_z_home]
home_xy_position: 175,175 # Change coordinates to the center of your print bed
speed: 50
z_hop: 0 # Move up 10mm
z_hop_speed: 5
Test du mouvement du chariot
Placer le chariot au milieu du plateau et lancer un HomeXY via Octoprint. Couper immédiatement l’alimentation s’il le chariot de va pas vers la gauche.
S’il part dans la bonne direction, appuyer sur le fin de course X avec le doigt deux fois. Le chariot doit maintenant aller vers l’avant de la machine. Si non, couper l’alimentation. Appuyer ensuite deux fois sur le fin de course Y.
Le chariot doit s’arrêter.
A la main, placer le plateau à mi hauteur et lancer un HomeZ via Octoprint.Le plateau doit descendre un peu puis remonter. Avec l’ongle du doigt, appuyer sur le téton du BLTouch, le plateau doit s’arrête de monter. Si non, couper l’alimentation immédiatement.
Si vous arrivez jusque là, la partie mouvement du chariot est OK.
Erreurs rencontrées :
- Unable to write tmc spi ‘stepper_x’ register GLOBALSCALER
Cette erreur sur le driver X était du à une étourderie, j’ai enfoncé le driver dans les pins coté gauche, mais l’espacement était pas en face coté droit. Il faut juste resserrer les broches femelles sur la carte mère
- Le chariot ne part pas dans la bonne direction pour faire son homing
Vérifier que les moteurs de X et Y ne sont pas inversés.
Si le câblage est bon, ajouter un point d’exclamation à la variable « dir_pin » sur les deux moteurs X et Y: !PF12
- Comment tester le BLTouch : Connecting BL-Touch | klipper (mmone.github.io)
Cablage de l’Octopus sur la Tronxy : Hotend et plateau chauffant
Sans brancher les résistances de hotend et du plateau, brancher les sondes de température et les ventilateurs. Attention à la polarité des ventilateurs, le négatif est sur le pin le plus proche du bord. Moi j’ai du les inverser.
1 | TB | Sonde thermique du plateau |
2 | T0 | Sonde thermique du hotend |
3 | FAN0 | Ventilateur de sortie de buse |
4 | FAN1 | Ventilateur du hotend |
5 | FAN2 | Ventilateur de la carte mère |
Firmware
- Definir le type de sonde thermique
[extruder]
sensor_type: Generic 3950
[heater_bed]
sensor_type: Generic 3950
- Vérifier que les ventilateurs sont déclarés
[fan]
pin: PA8
[heater_fan fan1]
pin: PE5
Test de chauffe
Commencer par vérifier que les températures des sondes remonte correctement dans Octoprint. Elles doivent être au alentour de 20°C.
Si les sondes sont bonnes, brancher les résistance de hotend et du plateau. Puis lancer la chauffe du hotend pendant moins de 30 secondes et vérifier que la température monte correctement. Il faut que la température soit au dessus de 50°C mais éviter de monter au dessus de 100°C pour le moment.
Le ventilateur du hotend doit s’allumer dès que la température dépasse 50°C
Vérifier la chauffe du plateau en le réglant par exemple à 35°C.
Pour finir, tester le ventilateur de sortie de buse via l’interface Octoprint, dans l’onglet « Control > Fan ON ».
A partir de maintenant, l’imprimante est opérationnelle. Par contre, avant de commencer à imprimer des pièces, il faut la calibrer.
Calibration de la Tronxy sous Klipper
Calibration des PID
Il s’agit d’une fonction qui permet de calculer la puissance de chauffe afin d’avoir une température la plus stable possible.
PID_CALIBRATE HEATER=extruder TARGET=200
SAVE CONFIG
Pour le plateau, vous avez le choix entre le pid ou le watermark. Le mode watermark agit comme un thermostat avec un effet d’hystérésis, cela permet de réduire l’usure dans le cas où l’on utilise un relai de puissance au détriment d’une moins bonne stabilité.
[heater_bed]
# mode thermostat
control: watermark
max_delta: 0.5
# mode PID
#control: pid
#pid_Kp: 23.233
#pid_Ki: 1.019
#pid_Kd: 132.427
Calibration dimensionnelle
Nous allons commencer par calibrer théoriquement les mouvement de l’imprimante. Klipper utilise dans ses dernières version une nouvelle variable nommée « rotation_distance ». Il s’agit du nombre de millimètre pour un tour de moteur.
On a donc pour X et Y, « pas de courroie » x « nombre de dent pignon ». J’ai une courroie GT2 donc le pas est de 2mm et un pignon de 16 dents, j’ai donc un « rotation_distance » de 32.
Pour Z, c’est encore plus simple, la tige filetée à un pas de 8mm. On met donc un « rotation_distance » de 8.
Calibration de l’extrudeur
Pour l’Extrudeur, c’est un peu plus compliqué vu que j’ai un BMG. Du coup, j’ai pas fait de calcul théorique. Mais si vous avez un extrudeur normal laisser la valeur par défaut, pour un BMG, j’ai 7,79mm.
Faire un repère sur le filament à 110mm de l’entrée de l’extruder et extruder très lentement 4 fois 25mm (pour ne pas que l’imprimante pas en timeout).
M83 # passe l'extrudeur en positionnement relatif
G1 E25 F60 # à lancer 4 fois
Mesurer la distance restante entre l’entrée de l’extrudeur et le repère. Il doit rester 10mm. S’il y a +/-0,5mm de différence, il faut corriger avec le calcul : « nouvelle valeur » = « ancien rotation_distance » x « distance extrusion réelle » / « distance extrusion demandée »
Renouveller le test pour être en dessous des +/-0,5mm de différence.
Imprimer un cube de calibration CHEP et vérifier les dimensions XYZ. Vérifier aussi qu’il n’y ai pas trop de sur extrusion.
Calibration de l’avance de pression
Afin d’avoir une qualité augmenté au niveau des angles, il faut régler la « pressure_advance ».
Suivre la procédure officielle https://www.klipper3d.org/Pressure_Advance.html
Imprimer avec les paramètres suivants :
- Remplissage : 0%
- Epaisseur de coque : 1 couche
- Epaisseur du dessus : 0
- Vitesse d’impression : 100mm/s
- Vitesse d’impression de la paroi externe : 100mm/s (bien la forcé car la fonction de Cura est à 50% de la vitesse d’impression)
- Rétractation : Désactivé
- Hauteur de la couche : 75% du diamètre de buse recommandé
Dans le terminal, lancer les commande Klipper suivante :
SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY=1 ACCEL=500
#Si extrudeur direct drive
TUNING_TOWER COMMAND=SET_PRESSURE_ADVANCE PARAMETER=ADVANCE START=0 FACTOR=.005
#Si Extrudeur sur bowden
TUNING_TOWER COMMAND=SET_PRESSURE_ADVANCE PARAMETER=ADVANCE START=0 FACTOR=.020
Comment interpréter le résultat ?
Il faut regarder au niveau des angles de la pièce.
Quand il n’y a pas assez d’avance, on voit un bourlet sur l’angle car trop de matière arrive au niveau du changement de direction. Vous pouvez voir la zone d’ombre au niveau des couches basse en éclairant la pièce sur le coté.
Quand il y trop d’avance, c’est l’inverse, il n’y a pas assez de matière et l’angle commence à rentrer vers l’intérieur et des trous apparaissent
Il faut alors prendre là où l’angle est le plus nette entre les deux zones de défaut et mesurer la hauteur à partir de la base. Il suffit alors de multiplier cette mesure par le facteur utilisé dans la commande TUNING_TOWER
Dans mon cas, c’est environ 15mm. Donc 15*0.005 = 0.075
Puis, saisir la valeur dans la configuration
[extruder]
pressure_advance: 0.075
Profitez en pour mesurer l’épaisseur de la paroi et qu’elle correspond à votre diamètre de buse
Paramétrage d’Octoprint
Au moindre problème l’imprimante se met en erreur et c’est galère à la redémarrer
Se rendre dans les « paramètres Octoprint > Serial Connection > Behaviour > What to do on a firmware error » et sélectionner « Cancel any ongoing prints but stay connected to the printer ».
Décocher « Send M112 on disconnect due to error »
Pouvoir déplacer la tête après avoir annuler une impression (sans homing)
Se rendre dans les « paramètres Octoprint > GCODE Scripts > After print job is cancelled » et commenter en mettant un point-virgule devant M84
Conclusion
Les premiers essais sont plus que satisfaisants. Les mouvements sont fluides et rapides, plus de saccades ni de plantage.
Voici un petit Benchy imprimé à 80mm/s et 3000mm/s². J’ai un petit peu d’écho mais pour une première c’est vraiment pas mal, surtout à cette vitesse ; et un peu de stringing