Aller au contenu

GO Print

La Qidi Tech X-Max 3, revue détaillée


fran6p

Messages recommandés

Le contenu du gros colis du «koikesse» ayant été découvert, je relaterai dans ce sujet ma découverte de cette imprimante avant de publier le test final sur le blog du site.

En échauffement, un petit rappel: le colis pèse 38 kilogrammes, l'imprimante elle-même n'en pesant plus que 30 kg .

Le livreur, après m'avoir demandé de l'aide pour sortir ce colis de son estafette, une fois celui-ci déposé à l'entrée de mon couloir, il s'est empressé de remonter dans sa camionnette sans demander son reste 😞. Tant bien que mal, j'ai réussi à déplacer le carton ailleurs que dans l'entrée : mon dos s'en souvient encore.

La marque Qidi, moins connue que d'autres constructeurs asiatiques. n'est pas récente dans le monde de l’impression 3D puisqu’elle a commencé ses activités en 2014.

Evolution-Qidi.thumb.jpg.d3adea4f209bf6c0a180862b572f9306.jpg

Elle développe ses propres outils matériels et logiciels avec par exemple un trancheur (slicer) maison basé sur Prusaslicer pour ses modèles récents. C’est également une société possédant un support technique spécialisé via un Wiki et également via une chaine Youtube.

Le modèle, X-Max 3 est présenté ici. C'est une imprimante «rapide» à l'instar des modèles d'autres constructeurs : vitesse maximale de 600mm/s, accélérations de 20000 mm/s^2.

Spécifications Qidi X-Max 3

Nom du modèle

X-Max 3

Technologie

FDMFused Deposition Modeling / Modelage par dépôt de matière fondue)

Volume de construction (L×P×H)

325*325*315mm

Dimensions (L×P×H)

553*553*601mm

Poids net (kg)

30,2

Structure

CoreXY

Axe Z

Axe Z double (un moteur , synchronisation via courroie)

Axe X

Axe optique creux linéaire en acier de haute dureté

Firmware

Klipper

Vitesse maximale de la tête

600 mm/s

Accélération de l'impression

20000mm/s²

Débit maximal de l'extrudeur

35 mm³/s

Précision d'impression

± 0,1 mm

Température de la buse

350℃

Diamètre du filament

1.75mm

Mise à niveau du lit

Mise à niveau automatique 8×8 ( 9x9 après mise à jour système)

Rapport de transmission extrudeuse

9,5:1

Corps de chauffe

Noyau chauffant en céramique

Extrudeur

entraînement direct à haut débit

Matériau de la buse

alliage de cuivre pour les matériaux courants, acier trempé pour les matériaux abrasifs

Diamètre de la buse

0,4 mm (0,2, 0,6, 0,8 mm en option)

Température du lit chauffant

120℃

Plaque d'impression

Plaque HF magnétique flexible double face

Ventilateur de refroidissement du filament

tête + auxiliaire

Enceinte

Contrôle de la température de la chambre ⩽65°C + chauffage indépendant

Ventilateur de circulation de la chambre

avec filtre à air à charbon actif

Écran

5.0 pouces 800*480, tactile

Boite d'impression

Boîte de séchage + dessiccant

Connexions

2.4G Wi-Fi / USB / Ethernet

Détection du filament

Compensation de la résonance

Avance à la pression

Tension secteur

100-240VAC, 50/60Hz

Puissance nominale

900W (deux alimentations de 450 W)

Processeur principal

Microcontrôleur

Cortex-A53, 64-bit, 1.5Ghz, 8Go-EMMC, 1Go DDR3

STM32F402 pour la carte principale et STM32G0B1 pour celui de la tête

Trancheurs

QIDI Slicer et autres logiciels tiers (Ultimaker Cura, PrusaSlicer, OrcaSlicer, etc.)

Système d'exploitation

Windows, MacOS, Linux

Filaments recommandés

PAHT-CF, PET-CF, PA12-CF

Filaments compatibles

PLA, ABS, ASA, PETG, TPU, PC, UltraPA, Nylon, etc.

La QIDI X-MAX 3 est fabriquée à partir d'un cadre en tôle d'acier renforcée pour la structure, entièrement fermée avec des panneaux latéraux en plastique.

Cadre acier

Le volume d'impression de l'imprimante de 325x325x315 mm, plutôt généreux, devrait convenir à la plupart de ceux cherchant une imprimante 3D rapide, de grand format et fermée. De plus elle offre des capacités de chauffage de la chambre d'impression (⩽ 65°C). Ce qui permet de garder une température interne favorisant l'impression de filaments «techniques» ( ABS, ABS-GF, ASA, Nylon, PAHT-CF, PET-CF, …).

Comme un bon nombre d'imprimantes rapides actuellement, Klipper est le firmware faisant fonctionner celle-ci.

Pour rappel, Klipper se compose de deux éléments:

  • le firmware installé sur la carte contrôleur, gérant uniquement les éléments matériels (unité de contrôle)
  • «klippy» installé sur un SBC (Small Board Computer) chargé lui de l'impression (unité de calcul)

image.thumb.png.2a75531fb4abfab32c7d853a28f0ae9e.png

Pour plus de détails sur Klipper je vous renvoie à ce sujet du forum.

Déballage

Le Wiki de Qiditech permet d'accéder à une vidéo de déballage ainsi qu'un document texte accompagné de photos. A l'intérieur du carton, se trouvent deux manuels papier un plus complet en anglais de 14 pages, le second plus succinct en six langues (Anglais, Chinois, Italien, Français, Espagnol et Allemand), quatre pages par langue. A noter que ce second manuel multilingue correspond probablement à une première version de la X-max 3, version modifiée depuis car faisant référence à des axes en carbone pour le support de l'axe X, remplacés par des axes optiques creux en acier de haute dureté :

Axe optique creux

Quelques photos prises lors de ce déballage (j'ai horreur du terme anglais 'unboxing" 😉 ).

 

carton-dessus.jpg carton-dessus-ouvert.jpg carton-1er-apercu.jpg

Ce premier carton, une fois retiré ainsi que les cales polystyrène et coins de protections en carton permet d'apercevoir l'imprimante emballée dans du plastique.

xmax3-dans-carton.jpg carton-protections-internes.jpg xmax3-sortie-carton.jpg

Pour assurer une protection accrue, une bande de plastique à bulles entoure la Qidi X-max 3. Une fois sortie du carton (non sans mal à cause de son poids), il va falloir retirer tous ces emballages plastiques.

emballage-plastique-1.jpg film-plastique.jpg film-enleve.jpg

Le capot supérieur laisse entrevoir un autre carton à l'intérieur engoncé à nouveau dans des protections polystyrène.

dessus-1.jpg capot-dessus-enleve.jpg carton-interne.thumb.jpg.134ec9b292ee1b0f780aceb6c390ce9f.jpg

Une fois ces dernières retirées, l'intérieur est presque vide

carton-interne-enleve.thumb.jpg.8f2d497eda111cba31c6c95ed12e219b.jpg  vue-face.thumb.jpg.99caf885fe4f477046223d3a9a18a73f.jpg

Quelques vues des différents côtés (gauche, arrière, droite)

vue-gauche.thumb.jpg.148b2b66de457f372aaddd6bbf11ef9b.jpg vue-arriere.thumb.jpg.4bf0f0a2dbe4820c85ea8c1e481b6e10.jpg vue-droite.thumb.jpg.50df0d9c685a573dc62ea05001bc2ddd.jpg

Ainsi que le dessous et une vue interne

vue-dessous.thumb.jpg.6c30334dd670acf41a12bce4ee65f05a.jpg vue-interne.thumb.jpg.e6f0885ddaf02bd48c93e5a054a07dc4.jpg

Les deux colis contiennent pour l'un les accessoires:

  • jeu de clé Allen (1,5 / 2 / 2,5)
  • clé plate de 7 mm
  • tournevis plat
  • quatre pieds caoutchouc à clipser sur ceux existants
  • quelques vis en dépannage
  • un tube de colle
  • une feuille plastifiée pour le réglage du décalage en Z
  • une tête complète (buse en acier trempé) pour les filaments imprimés à haute température (⩽ 350 °C)
  • une clé USB contenant des modèles déjà tranchés à imprimer, le manuel PDF et le trancheur QidiSlicer (Windows, Mac, Linux)

pour l'autre colis :

  • le support de bobine
  • une boite hermétique pour maintenir le filament à humidité «maitrisée»
  • une bobine de filament PLA «rapido» (500 g), de couleur noir
  • ainsi que deux emballages plastique scellés (un contenant un sachet de dessicant, l'autre un sachet de charbon actif)
  • le cordon d'alimentation secteur

carton-accessoires.thumb.jpg.f180b18d29cd8ce324361583e1accaf2.jpg contenu-carton-accessoires.thumb.jpg.e0bc74468f7af8c78c4ac99d5d7224d5.jpg contenu-carton-interne.thumb.jpg.a922b2a6a61270c30e875a02e353074f.jpg

XMAX3-Accessoires.thumb.jpg.493cd3ba1c0bfb3a738782b6487ae433.jpg

L'imprimante désormais déballée doit maintenant trouver sa place dans mon bureau. Pour cela, elle va devoir gravir les dix-sept marches de l'escalier pour passer du rez-de-chaussée au premier étage.

Ai-je déjà dit que c'est une machine imposante, tant par sa taille (≃ 60x60x60 cm) que son poids (30,2 kg) ? Marche après marche, finalement elle a trouvé une place sur un des bureaux.

Insertion du câble secteur, après avoir évidemment vérifié que les deux alimentations au-dessous de l'imprimante soient bien réglées pour une tension secteur de 230 V (normalement ce réglage a été réalisé en usine en fonction du pays de livraison mais ça ne coûte rien de le vérifier) :

tension-secteur.jpg.e931f7cc4275910e59feaad2fb531d9e.jpg

Au premier allumage, le logo apparait sur l'écran signalant que le système démarre. Après un temps d'attente d'un peu moins de deux minutes, temps nécessaire au système d'exploitation Armbian pour booter, un assistant de configuration apparait à l'écran pour prendre en main l'utilisateur en lui indiquant les étapes à suivre.

N'ayant pas pensé à capturer les écrans / animations de cet assistant de configuration, les copies écrans ci-dessous sont extraites de la vidéo de déballage réalisée par Qidi Tech.

Choix de la langue d'affichage, instructions pour enlever les fixations (zip-ties), les vis de maintien du plateau, puis les mousses sous le plateau :

xmax3-langue-2.jpg.7642414d44837035a4fb49306ca4f584.jpg xmax3-zip-ties-1.jpg.2f59cbf58e2ec6ab6eecd7fbc3c96d20.jpg xmax3-zip-ties-2.jpg.5586576659b2dfa25dd2e116eefd7e13.jpg

xmax3-zip-ties-3.jpg.0bde98c22698d2a2513345a0a08bd213.jpg xmax3-zip-ties-4.jpg.fc17d912fc704f7b5aef98f416a57e31.jpg xmax3-vis-maintien-plateau-2.jpg.fc93cbfee209471b03a613e889afc4d3.jpg

xmax3-vis-maintien-plateau-3.jpg.da3793a26700382caaf07662d4e22f2b.jpg xmax3-vis-maintien-plateau.jpg.0eba6383d3ea0d62f8c82a3d3afd5fa9.jpg xmax3-fixations-otees.jpg.a873b92b6bb8816b7a7ed22028840166.jpg

xmax3-degager-dessous-plateau.jpg.f02df5b7faf1a7b7dbdc0cbf45d2d0b3.jpg

Mettre en chauffe le plateau afin de procéder au réglage de la distance buse / plateau à l'aide de la feuille plastifiée fournie (épaisseur de 0,25mm). Régler le «pincement» de la feuille à l'aide des boutons de réglages de l'écran :

xmax3-prechauffer-lit.jpg.2db953f24b1311edd4de78ea5c931e7e.jpg xmax3-prechauffer-lit-60.jpg.385c91908a7318a9c648d838c11511b9.jpg xmax3-prechauffer-lit-60-consigne-atteinte.jpg.20f1c4956aeeb06bb1e246601505ea94.jpg

xmax3-zoffset-1.jpg.03ddd26d02d0dcb881dbecfa62615903.jpg xmax3-zoffset-3.jpg.b06a73bb463475f339cc1124d30167e8.jpg

Une fois ce réglage réalisé (Zoffset), l'imprimante procède à la topographie du plateau, maillage de 8 x 8. Quelques poignées de minutes avant de procéder à la compensation de résonances (input shaping). C'est relativement long, d»autant plus que l'écran est figé durant ces plus de dix minutes… Toutefois, le vrombissement émis par les mini déplacements de la tête pour réaliser cette recherche de compensation permet de savoir qu'il se passe quelque chose

xmax3-maillage-1.jpg.a491a3ed1f59266700127804ab77f3fb.jpg xmax3-maillage-fini.jpg.a9996460cfb87809be528060da07cfa8.jpg xmax3-input-shaper.jpg.381bc7fc4401a0e2f0a03c293d612dd9.jpg

La dernière étape de préparation consiste à charger une bobine de filament

xmax3-chargement-filament-2.jpg.071819e221e9e804564f0b5dabc72fd0.jpg xmax3-chargement-filament.jpg.f1bb1acbe69a2e0b1ff21f143db4cbd9.jpg xmax3-chargement-filament-3.jpg.2a4a23e4ed39b9d190e4fdccda0c33dc.jpg

xmax3-chargement-filament-4.jpg.ef1b7adb26006d3453c6ff812990ec31.jpg xmax3-chargement-filament-5.jpg.492db86e18b91813cde5b293061652de.jpg xmax3-chargement-filament-6.jpg.bd00d4009fa89c47a7c3aa302fc7a5b6.jpg

L'imprimante est prête à imprimer 😄

Voilà pour cette première partie. La prochaine étape s'attachera à regarder les éléments composant cette imprimante.

🙂

A suivre…

Modifié (le) par fran6p
  • J'aime 4
  • +1 2
  • Merci ! 1
Lien vers le commentaire
Partager sur d’autres sites

Composants matériels

Dans ce post, nous allons aller regarder d'un peu plus près les entrailles de cette QIDI X-Max 3 qui je le rappelle est imposante et par sa taille et par son poids.

Cinématique CoreXY

La tête d'impression se déplace dans le plan à la fois en X et en Y, les deux moteurs agissent de conserve. Plus d'explications techniques à propos de cette cinématique ici (pour les amateurs, je sais qu'il y en a 😉 ).

Xmax3 CoreXY

Pour déplacer la tête sur l'axe X, des tiges de 10 mm sont utilisées comme rails de guidage, associées à des bagues en laiton auto-lubrifiantes avec inserts en graphite.

xmax3-tete-bague-autolubrifiante.png.868941bbdd23a7f87650bab0d2140b30.png

Le constructeur QidiTech parle d'axe optique linéaire creux, ressemblant aux tiges linéaires en acier inoxydable (argument marketing ou tiges semblables  à celles utilisées dans les scanners ?). En tout cas, utiliser des tiges creuses permet surtout d'alléger les poids de cet axe.

N'étant pas un expert des bagues de guidage, je m'interroge toutefois sur la lubrification apportée d'origine aux tiges linéaires de l'axe X. Normalement, ces bagues auto-lubrifiantes ne nécessitent pas d'apport d'huile / graisse supplémentaire.

Xmax3-x-axis.jpg.9e6ed47b45cb502ac731004df20121b8.jpg

L'axe Y, lui est guidé par des tiges linéaires «ordinaires» de 10 mm de diamètre, les bagues de guidage semblent être cette fois-ci des douilles à billes «classiques» (LMU10UU).

Pour déplacer la tête, des courroies de marque (Gates) de 10 mm de largeur d'un pas de 2 mm sont utilisées. Ces courroies peuvent être retendues si nécessaire. Un autocollant apposé sur la boite du ventilateur d'extraction d'air indique les manipulations de base à réaliser, sinon une vidéo peut être récupérée pour voir comment réaliser cette opération.

xmax3_reglage-tension-courroies.thumb.jpg.25c3fc383ea5f6674a767d8ec2932fbb.jpg

Le cadre de la structure, comme aperçu précédemment, utilise de l'acier (des magnets y adhérent sans aucune difficulté) y compris dans la partie basse sur laquelle repose les tiges de guidage, la vis trapézoïdale et le moteur de l'axe Z (un renfort métallique a même été ajouté entre les deux vis trapézoïdales

XMax 3 stucture tout acier

Les avantages théoriques de cette cinématique CoreXY :

  • espace réduit (le lit chauffant ne se déplace que de haut en bas),
  • structure cubique permettant de fermer celle-ci afin d'obtenir une enceinte étanche,
  • les deux moteurs pas à pas se complètent pour réaliser les mouvements X/Y,
  • rapide et précis lorsque utilisé avec une tête d'impression légère

Mais peut aussi présenter quelques inconvénients :

  • la tension des courroies est critique,
  • nécessite un cadre parfaitement rigide et d'équerre,
  • le système de poulies et la longueur du cheminement des courroies

Plateau d'impression

Le plateau chauffant est constitué d'une épaisse plaque d'aluminium de 6 mm. Celui-ci est guidé par, de chaque côté, deux tiges linéaires de 10 mm associées à des douilles à billes LMU10UU, la montée / descente étant assurée par des vis trapézoïdales également de diamètre 10 mm, un tour complet monte / descend le plateau de 8 mm.

Un seul moteur gère les deux vis, via une synchronisation par courroie. La tension de cette courroie peut être réglée si nécessaire en suivant cette vidéo.

Pour assurer le maintien de la plaque de tôle flexible et amovible sur le plateau chauffant, il n'y a pas de plaque magnétique collée sur toute la surface du plateau. Qiditech a inséré neuf (9) magnets dans la structure. Le constructeur certifie un magnétisme jusqu'à 120°C.

xmax3_plateau-chauffant-2.thumb.jpg.30283807f99e9fab46ca79173f5fbc39.jpg

La tôle d'acier flexible livrée avec l'imprimante  X-Max 3 (HF plate) est recouverte de chaque côté d'un revêtement «HF», un PEI structuré avec ajout de manganèse . Sur le site Qiditech, une autre plaque est en vente (Smooth plate), celle-ci est également double-face, un côté PEI texturé, l'autre une feuille de PEA, genre de PEI permettant d'obtenir un aspect lisse. Les deux tôles flexibles mesurent 330 x 330 mm pour une surface d'impression de 325 x 325 mm

xmax3-plate-HF_330.thumb.jpg.5dc0438af2013bbb7922dfea7fbb5f8e.jpg xmax3-plateau-flexible.jpg.4748982c492571eb89ffb7bbb455a0b2.jpg

Le plateau d'impression possède aux coins arrières gauche et droit un rebord permettant de placer la tôle magnétique aisément et correctement.

Normalement la planéité de la base d'impression a été réglée en usine mais il reste possible de la re-régler au cas où (vidéo disponible via cette page de dépannage).

xmax3_plateau-chauffant-4.thumb.jpg.4b12fa36df0f10ce28d7cd048a302074.jpg

Juste un regret concernant ce plateau chauffant: aucun isolant thermique ne se trouve dessous. C'est dommage car cela permettrait d'assurer une répartition plus homogène de la température et surtout éviter des pertes caloriques.

xmax3_plateau-chauffant-3.thumb.jpg.9da06c9571946e03fd615c7378aff18d.jpg

Ventilation

De nombreux ventilateurs se trouvent à l'intérieur de cette imprimante, pas moins de huit (8).

  1. la tête d'impression possède les deux habituels (un radial (5015) pour refroidir le filament, le second axial (2510) pour refroidir le radiateur)
    xmax3-refroidissement-filament-tete.thumb.jpg.5a64c3076921707d63423bc80b2e1d3c.jpg xmax3-hotend-cooling-fan.jpg.97a656ae4689f8fe58c729cacd334729.jpg xmax3-hotend.jpg.00c77fb7021d45c8c7c0d80403b27d33.jpg
  2. un «gros» ventilateur radial monté sur le côté droit assure un refroidissement de l'ensemble de la pièce sur le plateau
    xmax3_refroissement-auxiliaire.thumb.jpg.fe3659c09a634641d55a6733e6bb71e8.jpg
  3. la carte contrôleur à l'arrière est refroidie en permanence par un ventilateur 4010 rapide ( 5000 rpm)
    ventilateur-cm.thumb.jpg.b8fdcfc7299d18eb0cccd362e4e5c2b2.jpg
  4. L'extraction d'air interne se fait sur l'arrière via un ventilateur 8020. Avant d'être extrait de l'enceinte, l'air passe à travers un sachet de charbon actif. Ce sachet est livré dans la boite en carton contenant la boite hermétique disposant elle-même de son sachet de dessicant. A noter que le document PDF de Qiditech n'en fait pas mention ni sur la manière de le mettre dans la boite interne
    xmax3-fan-exhaust.thumb.jpg.5d3f3fc34409491c8d0f1abc6835fd7f.jpg xmax3_emballage-charbon-actif.thumb.jpg.f830aba3912adb48a1ae9b20df0981a6.jpg xmax3_charbon-actif.thumb.jpg.2966e57d949b9bf0563eb924363b0817.jpg
    xmax3_charbon-actif-1.thumb.jpg.a7dea0a958dd17ddcc9849c1c1f55583.jpg xmax3_charbon-actif-2.thumb.jpg.220aa56987a0a043195002b4b89740de.jpg xmax3_charbon-actif-4.thumb.jpg.e9a4f4582e3e57896c13d410dcdf9134.jpg
  5. La chambre interne peut être chauffée (⩽ 65°C) via un ventilateur et son élément chauffant (300W). Une sonde de mesure de température de l'enceinte se trouve en haut à droite du portique de l'axe Z
    xmax3-chauffage-300W-24V.thumb.jpg.0ed46e188c01449b884bcb685c940345.jpg xmax3_sonde-temperature-chauffage-enceinte.thumb.jpg.e3e5d4bbdcfc5d22a5829ddd2e1800de.jpg
  6. Les deux alimentations 450W (Meanwell) au-dessous de l'imprimante possèdent chacune un ventilateur (6010) ne se déclenchant qu'au-delà d'une certaine température / charge. Ils se font surtout entendre lors de la chauffe du plateau.

Malgré la présence de ces nombreux ventilateurs, la QIDItech X-Max 3 n'est pas si bruyante que ça. Le plus «sonore» étant le gros ventilateur de refroidissement du plateau, surtout audible quand on imprime porte ouverte et capot supérieur retiré avec PLA, PETG, TPU.

Tête d'impression

Cette tête possède un corps de chauffe en céramique, la cartouche de chauffe permet normalement de monter en températures jusqu'à 350°C (c'est hénaurme 😱), de nombreux matériaux techniques devraient pouvoir être imprimés 👍. La sonde de température est un thermocouple (MAX6675).

La tête d'impression montée d'origine est celle avec une buse cuivre recouvert d'un revêtement plaqué (copper plated), une seconde tête est livrée, elle montée avec une buse en acier renforcé (hardened steel) pour les matériaux plus techniques chargés en particules (fibres de carbone ou fibres de verre). La seule différence entre ces têtes est uniquement le matériau composant la buse (laiton, cuivre plaqué, acier renforcé). Les deux buses livrées sont celles de diamètre 0,4mm (le site Qiditech propose également des buses en 0,2 - 0,6 - 0,8 mm (pas de 0,2 mm pour l'acier)).

Dommage que cette seconde tête ne soit pas équipée de son ventilateur de refroidissement du radiateur. En cas de permutation, il sera nécessaire de démonter celui présent sur la tête en cours.

L'arrière de la tête donne accès aux connexions sur la carte fille.

La topographie (maillage) du plateau est assurée par un Bltouch originel de Antclabs. Par contre son montage n'est pas habituel, il est enserré dans une coque permettant la fixation sur la tête d'impression.

xmax3-capot-refroidissement-ote.thumb.png.f3d99447ff524a9839e270b3ff6034e5.png xmax3-carte-fille-tete.png.90ef15f21ac027fc68cc975e885c47c5.png

A propos des buses utilisées sur cette tête, bien que ressemblant aux buses Volcano, elles n'ont pas les mêmes dimensions (longueur de 19 mm), des Volcano mesurent plutôt 21 mm. Sur la photo ci-dessous, en haut la buse Qidi, en bas une Volcano :

xmax3-nozzle-size-diagram.png.db0bac98e27d5e1a68b2e6820f80f390.png comparaison-buses-xmax3-volcano.thumb.jpg.51ef3d806b16aad05eba4e3370f5ab85.jpg

C'est bien dommage car des buses plus techniques, genre des CHT (Bondtech) permettraient probablement un débit volumétrique encore plus important.

Extrudeur à entrainement direct (direct-drive)

Qiditech a conçu son propre modèle inspiré du Bondtech LGX. Les roues d'entrainement du filament plus grandes permettent de saisir le filament sur une plus grande longueur que de petites roues dentées.

Le système d'engrenages utilise un ratio de 9,5 : 1 (1628:170 déclaré dans Klipper), ce qui permet une force d'extrusion accrue. Qiditech annonce une extrusion volumétrique de 35 mm^3/s

La photo ci-dessous, extraite d'une vidéo de dépannage, permet d'apercevoir sa conception bien mieux que sur l'éclaté (2) trouvé sur le site de Qidi :

xmax3-extrudeur-ouvert.jpg.76957766f2201b8b2ce3e978f8801c15.jpg xmax3-extrudeurcooling-system.jpg.f197279956bc13e23118577c061c24ee.jpg

Les deux engrenages sont faciles d'accès une fois le capot avant retiré. Cela permet l'entretien, le nettoyage régulier.

 

Voilà, c'est tout pour cette fois-ci.

La suite au prochain épisode sera consacrée à l'électronique. D'ici là, pensez à vous rafraichir et rester tranquille au frais durant cette période caniculaire qui ne devrait plus tarder à se terminer 🤞

Modifié (le) par fran6p
  • J'aime 3
  • +1 1
Lien vers le commentaire
Partager sur d’autres sites

On continue l'examen des entrailles par l'alimentation électrique et l'électronique

Alimentation électrique

Pour pouvoir alimenter tous les éléments électriques de cette imprimante, Qiditech a choisi de mettre deux alimentations Meanwell de 450W chacune plutôt qu'une «grosse» alimentation.

En effet, outre les éléments habituels: lit chauffant de 6 mm d'épaisseur alimenté en 24V, tête capable de monter à 350°C, six ventilateurs (plus deux, un chacun à l'intérieur de chaque alimentation), bandeau de LEDs en 24V, carte contrôleur, carte fille sur la tête, Mosfet pour le lit, il faut également fournir les 300W nécessaires au chauffage de l'enceinte.

Il faudrait au moins avec une seule alimentation, une de 750W. En mettant deux alimentations moins puissantes, chacune ne sera donc pas utilisée à pleine puissance, ce qui pour la longévité ne pourra qu'être bénéfique. En plus deux alimentations ajoutent plus de poids ce qui accroit la stabilité structurelle.

Les deux alimentations sont placées à la base de la structure, base accessible aisément si besoin après avoir basculé les plus de 30 kilogrammes de la X-Max 3 sur un côté.

Deux étiquettes jaunes rappellent de vérifier le bon positionnement du sélecteur de tension. Le manuel papier le rappelle également.

xmax3-deux-meanwell-450w.jpg.baadb3f31214939682bd89f502cff851.jpg

xmax3_alimentation-meanwell-1.thumb.jpg.30c653437af8d78d2676146b01f909d8.jpg xmax3_alimentation-meanwell-2.thumb.jpg.57294e5b8b72101acda811ba383d0617.jpg

xmax3-choix-tension-secteur.thumb.jpg.d88188585fbe2ddd4719245c7d7a90b0.jpg

 

La connexion au secteur se fait à l'arrière de l'imprimante via un cordon secteur classique, l'interrupteur d'alimentation est muni d'un voyant. Au cas où, le fusible dans le tiroir rétractable peut être remplacé. 

Il est possible de connecter la X-Max 3 à un réseau via la prise Ethernet, en plus de la connexion Wifi.

230Vinterrupteur.thumb.jpg.14dc3cd6a51533fc160a067b81e48f8f.jpg

Électronique

L'accès à l'électronique s'effectue sur la partie arrière de la X-Max 3. Une fine plaque en acier doit être dévissée avant de pouvoir aller observer la carte contrôleur  ( 8 vis en tout ).

xmax3-cmmosfetfan.thumb.jpg.c8d5e029bd1f621a1bccf2958daab34f.jpg

Sur cette plaque d'acier est vissé un ventilateur (4010, 5000rpm) refroidissant:

  • les pilotes moteurs,
  • le processeur de la carte (Rockchip RK3328) lui même déjà refroidi par un radiateur,
  • le microcontrôleur ( STM32F402RCT6 ) gérant les éléments matériels via le firmware Klipper.

ventilateur-cm.thumb.jpg.5c648c35a579725787afb67fc58c13a1.jpg

Carte «mère»

La sérigraphie sur la carte indique « X-4 v1.1 », pas d'autres indications y compris sur le site du constructeur, hormis son prix «astronomique» 😱. Par contre la lecture du fichier «printer.cfg» permet de savoir qu'elle est une dérivée allégée de la carte Makerbase SKIPR (dont le prix est bien plus raisonnable 😉 ).

Qiditech, comme d'autres constructeurs a sans doute demandé à Makerbase de lui fabriquer sa propre carte en fonction des caractéristiques de son matériel. Cette carte «tout-en-un» assure le fonctionnement à la fois de Klipper (klippy) et la gestion matérielle qu'habituellement on retrouve en deux parties séparées (voir ce sujet pour plus d'explications si besoin) : une unité de calcul plus une unité de contrôle

image.thumb.png.018136f2551848fb3b66864361198a11.png <=>  archi-klipper.thumb.jpg.15f17f2aa2a99a985e2d10143586722a.jpg

Vue de la carte avec ses connexions (à droite, carte seule, photo du site Qiditech)

cm.thumb.jpg.b3c1a71f708ba3cff398be34350bf15e.jpg xmax3-mb.thumb.jpg.d94a5d3f5ac770c8d24693cb09b59b12.jpg

 

Qiditech fournit le schéma des connexions sur cette carte (en anglais), j'en ai fait une traduction :

cnx-cm-fr.jpg.5f4836f46c87754d3340bbae8d770691.jpg

Caché sous le radiateur vert, se trouve le processeur (Rockchip RK3328, Quad-core Cortex-A53, 1,5Ghz) avec à sa droite deux puces de RAM DDR3 de 512 Ko (1 Go en tout)

xmax3-cm-cpuram.jpg.0f76fafeb3078089fe3468d34be5015f.jpg

Le «MCU» (micro controler unit) est assuré par un microcontrôleur STM, un STM32F402RCT6, un Dual core Cortex M4 de 256Ko de mémoire flash d'après la codification («C») (Makerbase avec sa carte SKIPR utilise un STM32F407) :

xmax3-cm-stm32.jpg.2b655814f8762f0eccab1e0ad4f5187d.jpg

Trois emplacements accueillent les pilotes moteurs TMC2209 bien refroidis par de gros radiateurs, un par axe X, Y et Z. Ces pilotes sont amovibles et pourront donc être remplacés si nécessaire. Le pilote de l'extrudeur se trouve sur la carte fille au niveau de la tête d'impression :

xmax3-cm-xyztmc-amoviblebig-radiateur.jpg.567ab4869440d929a63a2fd600a1250d.jpg

En plus de la connexion réseau Ethernet, cette carte est munie d'une clé USB procurant le Wifi (2,4Ghz). Clé connectée sur le port USB 3.0. Deux autres prises USB 2.0 sont disponibles, l'une étant occupée par le report de la prise USB sur le haut arrière de la X-Max 3. Une autre prise USB C est utilisée pour la liaison vers la carte fille de la tête.

ethernet.thumb.jpg.7a046cbc6fad0336728ad71223558251.jpgcle-wifi-prise-usb-dessus.thumb.jpg.0c1aae3c016859301abce1686567bd48.jpg usb-carte-tete-can.thumb.jpg.c601690917d63037849996d7d48a56e3.jpg

Pour accueillir le système d'exploitation (Armbian), une mémoire EMMC est utilisée en lieu et place d'une traditionnelle carte SD moins fiable dans la durée et surtout moins rapide. Dommage qu'elle ne fasse que 8 Go; une fois l'OS installé, il ne reste qu'un peu plus de 512 Mo disponibles pour stocker les fichiers Gcode, voire si une caméra était utilisée, des timelapses (l'OS étant un Linux, il est toujours possible de bidouiller (j'adore ça) pour déporter ou ajouter du stockage 😉 ).

emmc.thumb.jpg.4bcc27d4a9e43a436e43c3377abea069.jpg

Autre caractéristique de cette carte: l'ajout d'un super condensateur. Cela permet de palier aux micro-coupures de courant. Testé hors impression, après extinction de l'imprimante la tension est encore disponible pendant une vingtaine de secondes. Bien en tenir compte car une extinction puis allumage immédiat ne relancera pas la machine. Mon conseil: attendre un petit moment après extinction et rallumage de la X-Max3 😉

xmax3-cm-super-condensateur-aka-mini-ups.jpg.c61e56616c87dde5ff64b0beca63728f.jpg

A noter que le lit chauffant n'est pas alimenté directement par la carte contrôleur mais par un Mosfet externe, sans doute dans un soucis de décharger l'intensité passant par la carte

mosfet-lit.thumb.jpg.7023eebb7d79756ece8dc1584eb9fcf1.jpg

Carte fille extrudeur

Pour limiter le câblage vers la tête d'impression, au lieu d'un habituel faisceau de câbles de dix-sept (17) fils (moteur:4, bltouch:5: deux ventilateurs:4, cartouche de chauffe:2, thermistance:2). un seul câble USB-C est utilisé pour relier la carte mère et la carte fille.

Cette liaison ne se fait pas via un bus CAN mais via une liaison série «classique» en mode USB.

Le câble USB est guidé dans une chaine de câbles, le PTFE (reverse bowden) n'est pas lui contraint par cette chaine.

xmax3-carte-fille-tete.png.fdc51d4aa3817410e70ff4316dde2a72.png tool-board.hotend.thumb.jpg.fdc6337a1455bd2fc00d3392582485d7.jpg

Lors du remplacement de la tête par celle HF (buse acier trempé), il faudra ouvrir le boitier arrière de la tête pour déconnecter ventilateur, cartouche et thermocouple pour pouvoir brancher / débrancher les prises JST-XH

Écran 5 pouces

Pour pouvoir photographier le PCB de l'écran, il m'a fallu démonter les deux capots plastiques de chaque côté pour accéder au démontage de la façade avant. Une vue des «dégâts» 😄 :

xmax3-a-coeur-ouvert.thumb.jpg.d716dd67ab7a5c75ae7e6d3cd41974b6.jpg

La sérigraphie «X 5.0 v1.0» ne m'éclaire pas beaucoup. Par contre la puce AIHMI T7 me fait pencher vers le fabricant chinois TJC dont le modèle X5 propose des caractéristiques assez semblables à celles de l'écran Qiditech.

La liaison entre la carte contrôleur et l'écran se fait via une liaison série ( TX, RX plus alimentation et masse ).

C'est un écran tactile résistif de 800 x 480, lumineux et acceptant un angle de vue plutôt correct. Bien que de type résistif, la dalle tactile réagit bien, même avec mes gros doigts.

xmax3-ecran5-pcb.thumb.jpg.5c3e38b63f13505bc8684faf7a4a6318.jpg  xmax3-puce-ecran5.thumb.jpg.64042a75fbb5abdede10c0c4bbc57186.jpg

1-accueil.jpg.c55b410d1ea7ada9a5f864e166e7a0d2.jpg

 

La prochaine étape consistera à un survol logiciel (Klipper, Moonraker, Fluidd) ainsi que du système d'exploitation (Armbian). D'ici là, bonne lecture

🙂

 

Modifié (le) par fran6p
  • J'aime 5
Lien vers le commentaire
Partager sur d’autres sites

TLDR; Sujet plutôt technique qui n'intéressera que les férus d'informatique (Linux toussa…).

Nous aborderons dans ce sujet la partie logicielle, à savoir :

  • le système d'exploitation (Armbian),
  • l'écosystème Klipper (Klipper, Moonraker, Fluidd)
  • et le trancheur QidiSlicer (basé sur Prusaslicer, lui-même basé sur Slic3r, …).

Armbian

La carte Qiditech est un ordinateur monocarte (SBC en anglais, Small Board Computer) dont le contrôleur Rockchip RK3328, fonctionne avec un système d'exploitation dérivé de la distribution Debian pour les architectures ARM: Armbian.

Qiditech utilise l'image système fournie par Makerbase pour son matériel MKS PI, ce que semble nous indiquer la section «Information système» de l'interface Web Fluidd (accès via le port «inhabituel» de 10088 ) :

xmax3-fluidd-vuegen-infos-systeme.thumb.jpg.8d7dd7f73d1790a67a4cc035b59cbad0.jpg  xmax3-fluidd-infos-systeme.jpg.c0da7d4713f7cc05875c2cb7e3e9fddf.jpg

Dommage que cette version soit ancienne (buster), deux versions majeures sont apparues depuis (bullseye et bookworm il y a quelques mois déjà).

Le Github de Makerbase du MKSPI précise quels utilisateurs (avec leur mot de passe 😉 ) existent (root et mks) :

utilisateurs-armbian-mks-pi.jpg.f351e542871998c73eed8a12fe663d14.jpg

Ni une, ni deux, je tente une connexion ssh vers cette carte (PuTTY, Mobaxterm, le ssh natif de Windows ou encore WSL… il n'y a que le  choix).

ssh mks@192.168.1.125

et voilà le résultat (connexion via MobaXterm) :

ssh-mkspi-home.thumb.jpg.603e9719501d333357b5dda031bc087c.jpg

Cool 😄 Même si Qiditech ne donne pas ces informations, on a donc un accès complet au système. On va donc pouvoir aller regarder de plus près ce qui existe sans avoir à «bidouiller» pour accéder au système d'exploitation (d'autres constructeurs feraient bien de s'en inspirer).

Le «home» de l'utilisateur mks ainsi que celui de l'utilisateur «root» (celui qui a tous les droits sur un système Unix) permet de prendre connaissance ce qui a été installé :

ssh-mlspi-home-mksroot.thumb.jpg.e66138dec39573e56145639be2a883f8.jpg

Chose intéressante, KIAUH est installé mais comme préconisé par Qiditech, je ne vais pas, pour le moment, l'utiliser pour faire des mises à jour. A son premier lancement `./kiauh/kiauh.sh`, j'ai droit à une demande de mise à jour de lui-même :

ssh-kiauh-maj.thumb.jpg.9cf95eeb35079725545b9c95a5c4ad29.jpg

Une fois KIAUH mis à jour, je vérifie simplement quelles sont les versions de Klipper, Moonraker et consorts. Comme je le redoutais, ce sont d'anciennes versions qui si elles devaient être mises à jour nécessiteraient de reflasher le firmware Klipper sur les cartes et de sérieuses modifications ayant été introduites dans Moonraker en fin d'année passée (novembre / décembre 2022) demanderaient là aussi un peu de travail pour rendre le tout compatible (chemins d'accès, base de données, etc.) : 

kiauh-20230810.jpg.5f696c689e506ffad84270139d8b5006.jpg

Avant d'aller plus loin avec l'écosystème Klipper, revenons au système d'exploitation proposé par Qiditech (Armbian buster).

Mise à jour du système

En remarque préalable, aucune notification de la part du système ne nous signale quand / s'il y a une mise à jour disponible 😞. C'est à l'utilisateur d'aller consulter soit le Github de la X-Max3 ou cette page du site Qiditech.

Mince, une mise à jour «toute» fraiche est proposée (début septembre), une version v4.3.8. Ce sera la seconde depuis réception de cette imprimante.

D'origine, la version système était en v4.3.3 passée après une première mise à jour en v4.3.6 :

12-systeme-en-version-reception.jpg.0dbda1489a969a0682b7c49146d29df7.jpg  v436-actuelle.thumb.jpg.5d08ad3b6a3cb865b5ce355183e24b20.jpg

Je vais profiter de cette nouvelle mise à jour (v4.3.8) pour reprendre les étapes :

  • récupérer l'archive via le lien plus haut,
  • décompresser celle-ci,
  • copier le dossier QD_Update avec son contenu (contient trois fichiers: printer.cfg, QD_Max_SOC et QD_Max3_UI5.0) à la racine d'une clé USB formatée FAT32, sectorisation de 4Ko, sans nommer cette clé (Qiditech fournit une jolie clé USB de 16Go)
    cle-usb-kioxia-16g.thumb.jpg.9eeabf0f3cadf5a96d31beb9e843ead3.jpg cle-usb-kioxia-taiwan.thumb.jpg.5bb0e8d102665a67a68c2374047be5a9.jpg
  • après avoir éjecté cette clé du PC, l'insérer dans la prise USB en haut à l'arrière droit de la X-Max 3,
    cle-usb-insre.thumb.jpg.076b96b004da4fe41fcced0ed9a2ecc5.jpg
  • via l'écran tactile, accéder à la page d'informations système, puis cliquer sur le bouton Updating
    update-detectee-apres-insertion-cle-usb.thumb.jpg.75182929454ffa665b25ffad2432b2fa.jpg
  • Au bout d'un moment (très rapide en fait), cette page s'affiche
    update-finie-eteindre-pendnat-au-moins-30-secondes.thumb.jpg.d500ceec0755e8a5170ddd36e0c68b3c.jpg
  • Éteindre l'imprimante et bien attendre au moins 30 secondes (le super condensateur de la carte contrôleur doit se décharger) avant de rallumer. L'écran quasi «blanc» est très peu lisible mais on arrive à distinguer que quelque chose se passe (le pourcentage croit régulièrement mais lentement ainsi que le nombre d'octets transférés.
    La communication se fait à 115200 bauds, Il y a une vingtaine de méga octets à transférer (probablement le firmware de l'écran (QD_MAX3_UI5.0) flashé en mode série)… Et c'est très très très long (entre une demi-heure et pas loin de quarante minutes lors de ma première mise à jour)
    Il vaut mieux que durant cette mise à jour, il n'y ait pas de coupure de courant 🙄
    update-ecran-0.thumb.jpg.c89245dcb4452161110f8cc9ba81ab79.jpg
  • Finalement après avoir patienté (un bon thermos de café), le système redémarre, la page «à propos» affiche la nouvelle version (4.3.8) ainsi que deux boutons supplémentaires (Restaurer les réglages «usine» et Activer/Désactiver la mise en veille de l'écran)
    IMG_20230902_145428411.thumb.jpg.185fc132a00562e29535e374867a83ec.jpg  v438-installe.thumb.jpg.cc617e55ebca74cdb27f445cc13eab68.jpg

Pour des mises à jour, j'ai déjà connu mieux et surtout plus rapide. Un point que Qiditech devrait améliorer à mon avis 🙏.

Autres remarques:

  • Cette mise à jour remplace purement et simplement le fichier «printer.cfg» donc si des modifications y avaient été faites, elles seront perdues sauf si une sauvegarde a été réalisée,
  • Après cette mise à jour du système, il faut refaire deux étapes d'étalonnage (à cause du point précédent 😉, les paramètres des résultats des calibrations en fin du ficher sont effacés (la section SAVE_CONFIG DO NOT EDIT)) :
    • Zoffset et topographie du plateau («bed mesh»),
    • Compensation de résonances (Input shaping)
  • L'historique des impressions est remis à zéro 😞 et ce point là est vraiment «pénible»

Survol du système, de Klipper et Moonraker

L'accès ssh permet d'obtenir plus d'informations sur les versions installées même si la page d'informations système de Fluidd donne déjà des indications pour Klipper, version ancienne 0.10

version-firmware-klipper.jpg.176f30b1237f39cd1fbdc5b3b4ae6a25.jpg

Comme on l'a vu précédemment, la page des mises à jours de KIAUH affiche les versions installées et celles en cours des dépôts Github. Aucun des composants n'est récent:

Klipper:              v0.10.0-530, actuellement 0.11.0-267

Moonraker:       v0.7.1-600,    actuellement 0.8.0-138

Fluidd:               v1.19.0,          actuellement 1.25.2

Klipperscreen:  v0.2.4-14   actuellement 0.3.4-14

Le système Armbian lui non plus n'est pas «up to date».

Un «git status» dans chacun des dossiers (Klipper, Moonraker et Klipperscreen) apporte les informations indiquant quels fichiers ont été modifiés par rapport aux versions officielles

ssh-gitstatus-klipper.thumb.jpg.f2c8a352a54feac405fc0980adc011ad.jpg  ssh-gitstatus-moonraker.thumb.jpg.9fef97f418b28df8281ecd960ad6226c.jpg

De plus dans dossier QD_Update ayant servi à la mise à jour, le fichier QD_MAX_SOC (mise à jour partielle de l'OS) est une archive qui contient elle-même une archive data.tar. Son contenu permet de connaitre quels fichiers sont ajoutés et/ou remplacés dans le système Armbian

Contenu de l'archive data.tar

dossiers-data-tar.jpg.5ff3618e4db426cad76b3a66854a45b7.jpg

 /home/mks

dossiers-data-tar-home-msk.jpg.2e5b141e66c81a719f5eb02572978596.jpg

/home/mks/klipper/klippy

dossiers-data-tar-home-msk-klipper-klippy.jpg.13971c2cf1c1a4d0945a31b0e9a855e5.jpg

/home/mks/klipper/klippy/extras

dossiers-data-tar-home-msk-klipper-klippy-extras.jpg.db2ce6d3e9383a4bd95207e602b01403.jpg

/home/mks/moonraker/moonraker/components

dossiers-data-tar-home-msk-moonraker-moonrake-components.jpg.2423806910312df9793d9be68524f9ba.jpg

/home/mks/moonraker/moonraker/components/file_manager

dossiers-data-tar-home-msk-moonraker-moonrake-components-file_manager.jpg.bc8833532df35191ee93afc7d5a5c14e.jpg

/home/mks/moonraker/moonraker/components/file_manager/update_manager

dossiers-data-tar-home-msk-moonraker-moonrake-components-file_manager-update_manager.jpg.f09bd70bd9a608a26030e06625255102.jpg

/home/mks/klipper_config

dossiers-data-tar-home-msk-klipper_config.jpg.d3fa6376718bc24cc1414c41ba0d4c0b.jpg

/root

dossiers-data-tar-root.jpg.0f1beccc3be6a6a4d14dd0c0d48f46c4.jpg

 

En conclusion de ce survol rapide, Qiditech utilise des briques logicielles «Open source» mais à partir de versions datées.

Qiditech a modifié un peu Klipper et Moonraker pour prendre en compte leur écran 5" associé à son serveur X (xindi). C'est la raison pour laquelle, ce constructeur recommande de ne pas faire de mise à jour mais d'utiliser plutôt ses propres mises à jour, voir cette page.

Révélation

Attention :
Ne mettez pas à jour la version de Klipper vous-même. Notre imprimante Klipper sera mise à jour avec notre version personnalisée. La version publique de Klipper ne correspond pas à notre carte mère.
La modification de Klipper peut entraîner le non fonctionnement de l'imprimante, il peut y avoir des problèmes pour lesquels nous ne pouvons pas vous aider à distance.
Aucun de ces problèmes n'est couvert par la garantie !
Nous avons développé Klipper sur la base d'une version spéciale et y avons ajouté de nombreuses nouvelles fonctionnalités. Une version stable nous permettra d'améliorer notre développement. Si vous avez vos propres idées pour mettre à jour KLIPPER, nous pouvons vous fournir un espace de bac à sable (burner ?), ainsi qu'un support et des fichiers miroirs. Nous rassemblerons et mettrons en open source tous les micrologiciels afin de faciliter les modifications et les mises à jour par les clients. Nous fournirons également des méthodes de compilation. Mais cela prendra du temps. Nous vous remercions de votre patience.
Si vous avez des questions ou des suggestions, n'hésitez pas à contacter le service après-vente.

C'est certainement, à l'heure  actuelle, l'imprimante respectant le plus la philosophie Open source et ses licences (GPL principalement).

Ultérieurement, je me pencherai plus sur la faisabilité de mettre à jour Klipper et consort dans leurs versions «vanilla». Cela nécessitera certainement de reflasher Klipper pour la carte contrôleur et la carte fille de l'extrudeur, rien qui ne me semble insurmontable mais l'objet du test de la Qidi X-Max 3 n'est pas là (j'ai encore quelque filaments à tester 😉 ).

Les seules modifications / mises à jour que je me suis permis de réaliser sont :

  • via KIAUH, mise à jour de Fluidd et instalation de l'interface Web Mainsail
    ssh-kiauh-update-menu.thumb.jpg.db6abc65d4635934c09598a9f930f7fc.jpg
    • Les deux interfaces Web fonctionnent (Fluidd via le port 10088, Mainsail via le port 80). Mainsail signale juste qu'il serait bien de mettre à jour les versions de Klipper et moonraker pour profiter de toutes ses fonctionnalités
      xmax3-mainsail-warnings.jpg.389aee758bfae92dcfb45a70e8d1c89e.jpg
  • ce n'est peut-être que sur mon imprimante mais les dates et heures n'étaient pas actualisées. Après analyse, il apparait que deux daemons de synchronisation de l'heure sont activés et visiblement entrent en conflit et se mettent en échec (chronyd et systemd-timesyncd) :
    • Etant plus familier de chronyd que du systemd, volià les étapes que j'ai utilisées:
      • Désactivation de systemd-timesyncd
        • systemctl status systemd-timesyncd
        • systemctl stop systemd-timesyncd
          systemctl disable --now systemd-timesyncd.service
          systemctl status systemd-timesyncd
      • Modifications du fichier de configuration (serveur de temps):
        • cat /etc/chrony/chrony.conf
          sudo nano /etc/chrony/chrony.conf
          sudo systemctl restart chronyd
          systemctl status chronyd
          chronyc sources
          date
          chronyc tracking

    • Maintenant les dates et heures correspondent 😉

  • La plupart de mes matériels (imprimantes 3D, Lasers, …) sont équipés de caméras permettant de surveiller mais aussi de prendre des clichés, des vidéos. D'origine, Qiditech n'a pas de caméra. Qu'à cele ne tienne et à l'impossible nul n'est tenu. J'avais en stock une Webcam qu ne demandait qu'à être utilisée et installée. C'est chose faite (Fluidd) :
    webcam.jpg.f312a46c6f2d36a80b3dabb8bb80b6c7.jpg

Le trancheur QIDITECH, QIDISlicer

Pour ses imprimantes «série 3», Qiditech ne base plus son trancheur (slicer) sur une version de Cura mais utilise comme base Prusaslicer, lui-même basé sur Slic3r, … Dans le respect de la licence, Qiditech ouvre son dépôt Github accessible ici (dernière version v1.0.5 de fin août 2023), le trancheur est aussi téléchargeable via cette page (un manuel succinct mais suffisant est également de la partie)

Les profils de ses imprimantes récentes ainsi que ceux des filaments sont évidemment intégrés. Pour ceux préférant / utilisant un autre trancheur, Qiditech fournit également des profils (pour le moment Prusaslicer, Simplify3d, (Cura à venir)) ou signale que Orcaslicer peut être utilisé (pas utilisé car pas fan du tout d'une inscription obligatoire pour pouvoir utiliser ce logiciel).

Dans l'ensemble, c'est le trancheur que j'ai utilisé pour tous les tests d'impression. Basé sur Prusaslicer, seules quelques modifications cosmétiques ont été apportés. Il y a juste deux onglets ajoutés:

onglets-device-guide.jpg.43a95f882dda0bed16fdfa2a9fe66c60.jpg

L'onglet (Device) permet dans un premier temps de paramétrer la connexion réseau vers la X-Max 3 (un didacticiel animé prend en main l'utilisateur), une fois paramétrée, la sélection de cet onglet affiche l'interface Web directement dans le trancheur

onglet-device-acces-fluidd.thumb.jpg.4490d234ae65d11112ce4aa452fb4cbb.jpg

L'onget (Guides) donne accès à des didacticiels animés à propos de quelques manipulations de ce trancheur:

qidi-slicer_guides.thumb.jpg.5f9966245547659a0355a0150d43609d.jpg

Même si l'accès à Fluidd peut se faire via Qidislicer, je préfère y accéder via mon navigateur (Firefox ou Vivaldi), je peux y régler la taille et le nombre de colonnes de ce qui est affiché (CTRL + / CRTL -) :

xmax3-fluidd-sierpinski-pyramide.thumb.jpg.5799ad7450266d88c97237f175df6da0.jpg

La version de Qidislicer que j'avais installée était la version 1.0.4. Dernièrement, j'ai vu surgir cette fenêtre

maj-104-105.jpg

Mise à jour effectuée sans soucis.

 

Voilà c'est terminé pour cette fois, en espérant n'avoir été ni trop long ni trop court (contrepéterie inside 😄 )

🙂

 

 Pour les tests d'impression, vous pouvez aller consulter le test complet : https://www.lesimprimantes3d.fr/test-qidi-x-max-3-20231010/

Modifié (le) par fran6p
  • J'aime 5
Lien vers le commentaire
Partager sur d’autres sites

Le fichier de configuration : printer.cfg

Qiditech fournit dans ce fichier à la fois:

  • la configuration matérielle de tous les composants gérés par le firmware Klipper flashé sur les deux cartes contrôleurs
  • un ensemble de macros

Ayant plutôt l'habitude de séparer «serviettes et torchons» ma première modification a été de scinder et réorganiser ce gros fichiers en deux parties:

  1. printer.cfg (configuration matérielle uniquement)
  2. macros.cfg (les macros QIDI utilisées via une directive [include macros.cfg] au début du fichier ci-dessus

Analyse de la configuration matérielle

MCU

La X-Max 3 gère trois (3) «mcu» (micro controler unit) :

  • le principal est celui correspondant au microcontrôleur STM32F402 via une liaison série USB
    [mcu]
    # The hardware use USART1 PA10/PA9 connect to RK3328
    serial: /dev/ttyS0
    restart_method: command
  • le second est celui de la carte fille situé sur la tête, microcontrôleur STM là encore en liaison série USB
    [mcu MKS_THR]
    serial:/dev/serial/by-id/usb-Klipper_rp2040_65054E953D866458-if00
  • le troisième correspond au contrôleur de la carte (le Rockship RK3328) à l'identique d'un Raspberry Pi
    [mcu rpi]
    serial: /tmp/klipper_host_mcu

[printer]

La section de configuration (printer) correspondant à la cinématique de l'imprimante, ses accélérations et vitesses maximales    

[printer]
kinematics: corexy
max_velocity: 600
max_accel: 20000
max_accel_to_decel: 10000
max_z_velocity: 20
max_z_accel: 500
square_corner_velocity: 8

Pilotes moteurs

On trouve évidemment les déclarations de paramètres des moteurs pilotant les axes (stepper …). Les axes X et Y utilisent la mise à l'origine sans capteur permise grâce aux pilotes TMC 2209. Exemple pour le pilote de l'axe X :

[stepper_x]
…
endstop_pin: tmc2209_stepper_x:virtual_endstop
…
[tmc2209 stepper_x]
…
driver_SGTHRS: 85
…

L'utilisation de ce mode nécessite la modification du processus de mise à l'origine via la directive [homing_override] (réduction du courant envoyé aux pilotes le temps de cette mise à l'origine) :

Citation

## Modification du processus de mise à l'origine
[homing_override]
set_position_X: 0
set_position_y: 0
set_position_z: 0
axes: xy
gcode:
    {% set HOME_CUR = 1 %}
    {% set driver_config = printer.configfile.settings['tmc2209 stepper_x'] %}
    {% set RUN_CUR = driver_config.run_current %}
    {% set HOLD_CUR = driver_config.hold_current %}
    {% if params.X is defined %}
        SET_TMC_CURRENT STEPPER=stepper_x CURRENT={HOME_CUR * 0.8}
        G28 X
        SET_TMC_CURRENT STEPPER=stepper_x CURRENT={HOME_CUR}     
        BEEP I=1 DUR=100       
        G1 X10 F1200
    {% endif %}
    {% if params.Y is defined %}
        SET_TMC_CURRENT STEPPER=stepper_y CURRENT={HOME_CUR * 0.9}
        G28 Y
        SET_TMC_CURRENT STEPPER=stepper_y CURRENT={HOME_CUR}   
        BEEP I=1 DUR=100          
       G1 Y10 F1200
    {% endif %}
    {% if params.Z is defined %}
#        G90
#        G1 X{printer.toolhead.axis_maximum.x/2 - printer.probe["x_offset"]} Y{printer.toolhead.axis_maximum.y/2 - printer.probe["y_offset"]} F7800
#        G91
        G28 Z
        G1 Z20 F600      
        BEEP I=1 DUR=100      
    {% endif %}
    {% if params.X is undefined %}
    {% if params.Y is undefined %}
    {% if params.Z is undefined %}
    G91
#    G1 Z5 F600    
    G1 X10 F2400
    G1 Y10 F2400
    G4 P2000
    SET_TMC_CURRENT STEPPER=stepper_x CURRENT={HOME_CUR * 0.8}
    G28 X
    SET_TMC_CURRENT STEPPER=stepper_x CURRENT={HOME_CUR}
    BEEP I=1 DUR=100  
    G1 X10 F1200
    SET_TMC_CURRENT STEPPER=stepper_y CURRENT={HOME_CUR * 0.9}
    G28 Y
    SET_TMC_CURRENT STEPPER=stepper_y CURRENT={HOME_CUR}
    BEEP I=1 DUR=100        
    G90
    G1 X{printer.toolhead.axis_maximum.x/2 - printer.probe["x_offset"]} Y{printer.toolhead.axis_maximum.y/2 - printer.probe["y_offset"]} F7800
    G91
    G28 Z
    BEEP I=1 DUR=100  
    G1 Z50  F600
    {% endif %}
    {% endif %}
    {% endif %}
    SET_TMC_CURRENT STEPPER=stepper_x CURRENT={RUN_CUR}
    SET_TMC_CURRENT STEPPER=stepper_y CURRENT={RUN_CUR}
    M204 S10000

Gestion des mises en chauffe et surveillance des températures

  • Lit chauffant
    [heater_bed]
    heater_pin: PC8
    sensor_type: NTC 100K MGB18-104F39050L32
    sensor_pin: PA0
    max_power: 1.0
    control: pid
    pid_kp: 71.039
    pid_ki: 2.223
    pid_kd: 567.421
    min_temp: -50
    max_temp: 125

    et la vérification de ce capteur

    [verify_heater heater_bed]
    max_error: 200
    check_gain_time: 60
    hysteresis: 5
    heating_gain: 1
  • Extrudeur

    [extruder]
    step_pin: MKS_THR:gpio5
    dir_pin: MKS_THR:gpio4
    enable_pin: !MKS_THR:gpio10
    rotation_distance: 53.5
    gear_ratio: 1628:170				
    microsteps: 16
    full_steps_per_rotation: 200
    nozzle_diameter: 0.400
    filament_diameter: 1.75
    min_temp: 0
    max_temp: 360
    min_extrude_temp: 170
    smooth_time: 0.000001
    heater_pin: MKS_THR:gpio0
    sensor_type: MAX6675
    sensor_pin: MKS_THR:gpio17
    spi_software_sclk_pin: MKS_THR:gpio18
    spi_software_mosi_pin: MKS_THR:gpio19
    spi_software_miso_pin: MKS_THR:gpio16
    max_power: 1.0
    control: pid  
    pid_Kp: 14.734
    pid_Ki: 6.549 
    pid_Kd: 8.288
    pressure_advance: 0.032
    pressure_advance_smooth_time: 0.03
    max_extrude_cross_section: 10
    instantaneous_corner_velocity: 10.000
    max_extrude_only_distance: 100.0
    max_extrude_only_velocity: 5000
    max_extrude_only_accel: 2000
    step_pulse_duration: 0.000002

    et la vérification de ce capteur

    [verify_heater extruder]
    max_error: 120
    check_gain_time: 20
    hysteresis: 5
    heating_gain: 1
  • Chambre (enceinte / caisson)
    [heater_generic chamber]
    heater_pin: PB10
    max_power: 1.0
    sensor_type: NTC 100K MGB18-104F39050L32
    sensor_pin: PA1
    control: watermark
    max_delta: 1.0
    min_temp: -100
    max_temp: 70
    déclenchement du ventilateur associé à ce capteur
    [temperature_fan chamber]
    pin: PC9
    max_power: 1
    hardware_pwm: false
    off_below:.1
    sensor_type: NTC 100K MGB18-104F39050L32
    sensor_pin: PA1
    control: pid
    pid_kp: 60
    pid_ki: 1
    pid_kd: 900
    pid_deriv_time: 120
    min_temp: 0
    max_temp: 90
    target_temp: 50.0
    max_speed: 1
    min_speed: 0.0
    gcode_id: chamber
    et la vérification de ce capteur
    [verify_heater chamber]
    max_error: 300
    check_gain_time: 480
    hysteresis: 5
    heating_gain: 1
  • Ventilateur de refroidissement du radiateur de la tête
    [heater_fan hotend_fan]
    pin: MKS_THR:gpio1
    max_power: 1.0
    kick_start_time: 0.5
    heater: extruder
    heater_temp: 50.0
    fan_speed: 1.0
    off_below: 0
  • surveillance des températures hôte et MCU
    [temperature_sensor RPI]
    sensor_type: rpi_temperature
    sensor_type: temperature_host
    min_temp: 10
    max_temp: 85
    
    [temperature_sensor mcu_temp]
    sensor_type: temperature_mcu

Ventilateurs

Les ventilateurs sont gérés via des directives [output_pin] et seront donc actionnés via des macros Gcode en utilisant la commande «SET_PIN PIN=broche_a_actionner VALUE=valeur»

  • Refroidissement du filament (buse) => fan0
    [output_pin fan0]
    pin: MKS_THR:gpio2
    pwm: True
    cycle_time: 0.0100
    hardware_pwm: false
    value: 0
    scale: 255
    shutdown_value: 0.0
  • Refroidissement du filament (auxilaire) soufflant sur le plateau => fan2
    [output_pin fan2]
    pin: PA8
    pwm: True
    cycle_time: 0.0100
    hardware_pwm: false
    value: 0.00
    scale: 255
    shutdown_value: 0.0
  • Extraction air interne à travers filtre à charbon actif => fan3
    [output_pin fan3]
    pin: PC9
    pwm: True
    cycle_time: 0.0100
    hardware_pwm: false
    value: 0.0
    scale: 255
    shutdown_value: 0.0

Détecteur de fin de filament

Activé par défaut, permet de mettre en pause l'impression quand il n'y a plus de filament, voir ce lien

[filament_switch_sensor fila]
pause_on_runout: True
runout_gcode:
            PAUSE
            SET_FILAMENT_SENSOR SENSOR=fila ENABLE=1
event_delay: 3.0
pause_delay: 0.5
switch_pin: !PC1

Un message s'affiche sur l'écran, l'écran suivant après remplacement du filament permet de purger le nouveau puis de reprendre l'impression (testé à deux reprises, en tout cas chez moi, il fonctionne parfaitement).

asa_yenaplus.thumb.jpg.2af9e5d79190b8cdd7c4d263def0649a.jpg

Le processus de retrait de l'ancien filament s'effectue en trois étapes via l'appel à une macro Gcode M603:

  1. extrusion lente d'une petite quantité de filament
  2. pause
  3. retrait «rapide» de la quantité nécessaire à sortir le filament des roues dentées d'entrainement
    [gcode_macro M603]
    description: filament unload
    gcode:
        G92 E0
        G0  E15 F400
        G4  P1000
        G92 E0
        G1  E-80 F800

     

tip_dechargement-filament.thumb.jpg.99e2638d30636c77f1a0d67d5c99cb2f.jpg

A noter que l'extrudeur ne possède pas de levier permettant la libération / l'insertion du filament, Il faut procéder via des manipulations sur l'écran. Le mieux est d'extraire le PTFE guidant le filament vers la tête au niveau de celle-ci (pas très pratique ni facile quand on a des gros doigts ou qu'on imprime avec le caisson totalement fermé).

La chaine Youtube Qiditech propose cette vidéo pour le processus de changement de filament 😉

Nivelage du lit d'impression

Le capteur Bltouch est à la fois:

  • le dispositif permettant de détecter la mise à l'origine de l'axe Z (remplace l'interrupteur de fin de course)
  • une sonde permettant de réaliser la topographie (maillage / mesh) via le palpage du plateau suivant une matrice de points 9x9 (8x8 avec le firmware originel)
    [bed_mesh]
    speed: 150
    horizontal_move_z: 10
    mesh_min: 30,15
    mesh_max: 310,310
    probe_count: 9,9
    algorithm: bicubic
    bicubic_tension: 0.2
    mesh_pps: 4, 4
    
    [bltouch]
    sensor_pin: ^MKS_THR:gpio21
    control_pin: MKS_THR:gpio11
    stow_on_each_sample: False
    x_offset: 28
    y_offset: 4.4
    z_offset: 0.0
    speed: 10 #5
    samples: 2
    samples_result: average
    sample_retract_dist: 3.0
    samples_tolerance: 0.08
    samples_tolerance_retries: 3

Une fois le réglage du Zoffset puis de la topographie du plateau faits via l'écran tactile, le maillage palpé est enregistré dans le fichier printer.cfg tout à la fin :

#*# <---------------------- SAVE_CONFIG ---------------------->
#*# DO NOT EDIT THIS BLOCK OR BELOW. The contents are auto-generated.
#*#
…
#*#
#*# [bed_mesh default]
#*# version = 1
#*# points =
#*# 	  -0.426250, -0.312500, -0.252500, -0.201250, -0.303750, -0.256250, -0.220000, -0.217500, -0.323750
#*# 	  -0.207500, -0.126250, -0.111250, -0.066250, -0.113750, -0.090000, -0.100000, -0.107500, -0.147500
#*# 	  0.000000, 0.008750, 0.057500, 0.058750, 0.036250, 0.041250, 0.030000, -0.001250, -0.020000
#*# 	  0.071250, 0.086250, 0.126250, 0.153750, 0.127500, 0.122500, 0.108750, 0.072500, 0.038750
#*# 	  0.022500, 0.127500, 0.192500, 0.198750, 0.086250, 0.162500, 0.150000, 0.138750, 0.020000
#*# 	  0.173750, 0.190000, 0.190000, 0.213750, 0.213750, 0.183750, 0.206250, 0.143750, 0.125000
#*# 	  0.165000, 0.200000, 0.210000, 0.256250, 0.210000, 0.175000, 0.178750, 0.123750, 0.145000
#*# 	  0.150000, 0.175000, 0.226250, 0.216250, 0.180000, 0.192500, 0.172500, 0.160000, 0.100000
#*# 	  0.025000, 0.136250, 0.187500, 0.198750, 0.091250, 0.187500, 0.170000, 0.180000, 0.026250
#*# tension = 0.2
#*# min_x = 30.0
#*# algo = bicubic
#*# y_count = 9
#*# mesh_y_pps = 4
#*# min_y = 15.0
#*# x_count = 9
#*# max_y = 309.96
#*# mesh_x_pps = 4
#*# max_x = 310.0

Dans l'interface Web Fluidd, on peut visualiser ce maillage :

maillage-plateau.thumb.jpg.8a37be62b4748b83a69df44352ce8a06.jpg

Malgré la représentation ci-dessus, une fois le Zoffset correctement réglé, je n'ai rencontré aucun problème avec les pièces imprimées (pas de gauchissement, pas de décollement, …).

A noter que Qiditech gère le «z_offset» via l'écran d’étalonnage puis sauvegarde la valeur trouvée non pas à la fin du fichier «printer.cfg» mais stocke cette valeur dans le fichier de  configuration de l'écran (config.mksini). Inconvénient de cette méthode: on ne peut plus utiliser les outils habituels de Klipper (probe_calibrate, …) et surtout il faut laisser le z_offset à 0 dans la section [bltouch].

Compensation de résonance

La puce ADXL345 est située sur la carte fille au niveau de la tête. Avec une imprimante CoreXY, comme la X-Max 3, la calibration se trouve facilitée. Avec mes autres imprimantes non CoreXY (des «bed slinger», le plateau se déplace sur l'axe Y), il faut ou deux ADXL345 (un par axe) ou déplacer le matériel de la tête au plateau.

[adxl345]
cs_pin: MKS_THR:gpio13
spi_software_sclk_pin: MKS_THR:gpio14
spi_software_mosi_pin: MKS_THR:gpio15
spi_software_miso_pin: MKS_THR:gpio12
axes_map: -x, z, -y

[resonance_tester]
accel_chip: adxl345
probe_points:
    160, 160, 10 

Une fois le processus de tests des fréquences de vibrations  réalisé, le résultat (type de compensation et fréquence pour chaque axe ) est enregistré à la fin du printer.cfg dans la section réservée :

#*# <---------------------- SAVE_CONFIG ---------------------->
#*# DO NOT EDIT THIS BLOCK OR BELOW. The contents are auto-generated.
#*#
#*# [input_shaper]
#*# shaper_type_x = ei
#*# shaper_freq_x = 53.8
#*# shaper_type_y = zv
#*# shaper_freq_y = 45.2

J'ai ajouté l'extension «G-Code Shell Command» (un script Python) de KIAUH (Kiauh est installé dans le répertoire de l'utilisateur «mks»), puis créé les scripts shell et les macros Gcode nécessaires pour produire les graphiques :

# Process csv files issued from "input_shaping" to obtain png files
# 
[gcode_macro PROCESS_SHAPER_DATA]
description: process csv file to png
gcode:
    RUN_SHELL_COMMAND CMD=adxl_x
    RUN_SHELL_COMMAND CMD=adxl_y
  
[gcode_shell_command adxl_x]
command: sh /home/mks/klipper_config/shell_commands/adxl_x.sh 
timeout: 300.
verbose: True

[gcode_shell_command adxl_y]
command: sh /home/mks/klipper_config/shell_commands/adxl_y.sh 
timeout: 300.
verbose: True

# Pour faire une sauvegarde "régulière" via Github
# https://github.com/th33xitus/kiauh/wiki/How-to-autocommit-config-changes-to-github%3F
#
[gcode_shell_command backup_cfg]
command: sh /home/mks/klipper_config/shell_commands/autocommit.sh
timeout: 30.
verbose: True

[gcode_macro BACKUP_CFG]
gcode:
    RUN_SHELL_COMMAND CMD=backup_cfg

Ce fichier shell_command.cfg est inclus au début du fichier printer.cfg via une directive [include shell_command.cfg]. Un répertoire nommé «shell_commands» est créé dans ~/klipper_config dans lequel je stocke les scripts shell. Exemple pour l'axe X (remplacer x par y pour obtenir le script de l'axe Y) :

#!/bin/sh
#
# Create PNG from csv file issued after INPUT_SHAPING, X axis
#

# Paths
# Qiditech use the old configuration ~/klipper_config
#
DATE=$(date +"%Y%m%d")
SCRIPTS="/home/mks/klipper/scripts/calibrate_shaper.py"
CSV_FILE="/tmp/calibration_data_x_*.csv"
PNG_FILE="/home/mks/klipper_config/shaper_calibrate_x_$DATE.png"

$SCRIPTS $CSV_FILE -o $PNG_FILE

L'appel de la macro «PROCESS_SHAPER_DATA» dans la console Fluidd permet d'obtenir les graphiques suivants. Étant enregistrés dans ~/klipper_config, ils sont facilement téléchargeables sur un matériel informatique (clic droit sur le fichier, téléchargé)

shaper_calibrate_x_20230902.pngshaper_calibrate_y_20230902.png

Reste de la configuration

Emplacement du stockage de la carte SD virtuelle :

[virtual_sdcard]
path: ~/gcode_files

Quelques paramètres utiles ( exclusion d'objet, gestion des courbes, délai d'inactivité ) :

[exclude_object]

[gcode_arcs]
resolution: 0.1 # 1.0

[idle_timeout]
timeout: 5400 # en secondes

Voilà pour l'essentiel du fichier «printer.cfg»

Les macros

Pour les macros fournies par Qiditech, je ne détaille pas plus que cela et livre seulement le contenu

Révélation

## Macros QidiTEch (from printer.cfg)
[gcode_macro M84]
rename_existing: M84.1
gcode:
    SET_STEPPER_ENABLE STEPPER=stepper_x enable=0
    SET_STEPPER_ENABLE STEPPER=stepper_y enable=0
    SET_STEPPER_ENABLE STEPPER=stepper_z enable=0
    SET_STEPPER_ENABLE STEPPER=extruder enable=0
    SET_KINEMATIC_POSITION
    
#[gcode_macro G30]
#    G28
#    G1 X100 Y130 Z10
#    PROBE_CALIBRATE

[gcode_macro SHAPER_CALIBRATE]
rename_existing: RESHAPER_CALIBRATE
gcode:
    RESHAPER_CALIBRATE FREQ_START=30 FREQ_END=150

[gcode_macro HOT_CALIBRATE_START]
variable_k: 0
gcode:
    {% if k == 0 %}
        {% if printer['heater_generic chamber'].temperature > 49 %}
            SET_GCODE_VARIABLE MACRO=HOT_CALIBRATE_END VARIABLE=hot_set VALUE=1
            SET_GCODE_OFFSET Z_ADJUST=-0.05 MOVE=0
            SET_GCODE_VARIABLE MACRO=HOT_CALIBRATE_START VARIABLE=k VALUE=1
        {% endif %}
    {% endif %}

[gcode_macro HOT_CALIBRATE_END]
variable_hot_set: 0
gcode:
    {% if  hot_set == 1 %}
        SET_GCODE_VARIABLE MACRO=HOT_CALIBRATE_END VARIABLE=hot_set VALUE=0
        SET_GCODE_OFFSET Z_ADJUST=+0.05 MOVE=0
        SET_GCODE_VARIABLE MACRO=HOT_CALIBRATE_START VARIABLE=k VALUE=0
    {% endif %}

[gcode_macro PRINT_START]
gcode:
    HOT_CALIBRATE_START

[gcode_macro PRINT_START_QD]
gcode:
    HOT_CALIBRATE_START

[gcode_macro CANCEL_PRINT]
rename_existing: BASE_CANCEL_PRINT
gcode:
    {% if (printer.gcode_move.position.z) < 200 %}       ; check that zhop doesn't exceed z max
        G1 Z200 F600                                         
    {% endif %}
    G1  X0 Y0 F12000
    SDCARD_RESET_FILE
    PRINT_END
    BASE_CANCEL_PRINT

[gcode_macro PRINT_END]
gcode:
    M106 P2 S0
    M106 P0 S0
    M106 P3 S0  #关闭活性炭风扇 (Eteindre le ventilateur à charbon actif)
    M104 S0
    M140 S0
    M141 S0
    M220 S100
    M221 S100
    SET_IDLE_TIMEOUT TIMEOUT={printer.configfile.settings.idle_timeout.timeout} ; set timeout back to configured value
    CLEAR_PAUSE
    HOT_CALIBRATE_END
    M84
#    SET_STEPPER_ENABLE STEPPER=stepper_x enable=0
#     SET_STEPPER_ENABLE STEPPER=stepper_y enable=0
#     SET_STEPPER_ENABLE STEPPER=stepper_z enable=1
#     SET_STEPPER_ENABLE STEPPER=extruder enable=0
    BED_MESH_CLEAR      #恢复调平数据 (# Récupération des données de nivellement)
    BED_MESH_PROFILE LOAD=default
    G31
    BEEP I=2 DUR=500

[gcode_macro PRINT_END_POWEROFF]
gcode:
       M107
       M104 S0
       M140 S0
       G28 Z
       M84
#       BEEP I=2 DUR=500
       M81    
    
[gcode_macro PAUSE]
rename_existing: BASE_PAUSE
gcode:
    # Parameters
    {% set z = params.Z|default(50)|int %}                                                   ; z hop amount
    {% if printer['pause_resume'].is_paused|int == 0 %}     
        SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=zhop VALUE={z}                              ; set z hop variable for reference in resume macro
        SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=etemp VALUE={printer['extruder'].target}    ; set hotend temp variable for reference in resume macro
#        SET_FILAMENT_SENSOR SENSOR=fila ENABLE=0                        ; disable filament sensor       
        SAVE_GCODE_STATE NAME=PAUSE                                                          ; save current print position for resume                
        BASE_PAUSE                                                                           ; pause print
        {% if (printer.gcode_move.position.z + z) < printer.toolhead.axis_maximum.z %}       ; check that zhop doesn't exceed z max
            G91                                                                              ; relative positioning
            G1 Z{z} F600                                                                     ; raise Z up by z hop amount
        {% else %}
#            { action_respond_info("Pause zhop exceeds maximum Z height.") }                  ; if z max is exceeded, show message and set zhop value for resume to 0
            SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=zhop VALUE=0
        {% endif %}
        SAVE_GCODE_STATE NAME=PAUSEPARK2
        G90                                                                                  ; absolute positioning
        G1 X{printer.toolhead.axis_maximum.x/2} Y{printer.toolhead.axis_maximum.y} F6000   ; park toolhead at front center
        SAVE_GCODE_STATE NAME=PAUSEPARK                                                      ; save parked position in case toolhead is moved during the pause (otherwise the return zhop can error)
        M104 S0                                                                              ; turn off hotend
        SET_IDLE_TIMEOUT TIMEOUT=43200                                                       ; set timeout to 12 hours
    {% endif %}

[gcode_macro RESUME]
rename_existing: BASE_RESUME
variable_zhop: 0
variable_etemp: 0
gcode:
    # Parameters
    {% set e = params.E|default(2.5)|int %}                                          ; hotend prime amount (in mm)
    {% if printer['pause_resume'].is_paused|int == 1 %}
#        SET_FILAMENT_SENSOR SENSOR=fila ENABLE=1                          ; enable filament sensor
#         INITIAL_RGB                                                                 ; reset LCD color
        SET_IDLE_TIMEOUT TIMEOUT={printer.configfile.settings.idle_timeout.timeout}  ; set timeout back to configured value
        {% if etemp > 0 %}
            M109 S{etemp|int}                                                        ; wait for hotend to heat back up
        {% endif %}
        RESTORE_GCODE_STATE NAME=PAUSEPARK MOVE=1 MOVE_SPEED=150                     ; go back to parked position in case toolhead was moved during pause (otherwise the return zhop can error)  
        G91                                                                          ; relative positioning
        M83                                                                          ; relative extruder positioning
        {% if printer[printer.toolhead.extruder].temperature >= printer.configfile.settings.extruder.min_extrude_temp %}                                                
            G1  E{e} F900                                   ; prime nozzle by E, lower Z back down
#        {% else %}                      
#            G1 Z{zhop * -1} F900                                                     ; lower Z back down without priming (just in case we are testing the macro with cold hotend)
        {% endif %}  
        RESTORE_GCODE_STATE NAME=PAUSEPARK2 MOVE=1 MOVE_SPEED=150                           
        RESTORE_GCODE_STATE NAME=PAUSE MOVE=1 MOVE_SPEED=10                          ; restore position
        BASE_RESUME                                                                  ; resume print
    {% endif %}

[gcode_macro BEEP]
gcode:
    # Parameters
    {% set i = params.I|default(1)|int %}        ; Iterations (number of times to beep).
    {% set dur = params.DUR|default(100)|int %}  ; Duration/wait of each beep in ms. Default 100ms.

    {% if printer["output_pin sound"].value|int == 1 %}
        {% for iteration in range(i|int) %}
            SET_PIN PIN=beeper VALUE=1
            G4 P{dur}
            SET_PIN PIN=beeper VALUE=0
            G4 P{dur}
        {% endfor %}
    {% endif %}

#[gcode_macro _CG28]
#gcode:
#    {% if "xyz" not in printer.toolhead.homed_axes %}
#        G28
#    {% endif %}

[gcode_macro G30]
gcode:
    BED_MESH_CLEAR
#    G28
    BED_MESH_CALIBRATE mesh_min=10,10  mesh_max=310,310  METHOD=manual

[gcode_macro M141]
gcode:
      #SET_HEATER_TEMPERATURE HEATER=hot TARGET={params.S}
      SET_HEATER_TEMPERATURE HEATER=chamber TARGET={params.S}

[gcode_macro M106]
gcode:
    {% if params.P is defined %}
      {% if params.S is defined %}
        SET_PIN PIN=fan{params.P|int} VALUE={params.S|int}
      {% else %}
        SET_PIN PIN=fan{params.P|int} VALUE=255
      {% endif %}
    {% endif %}
    {% if params.T is defined %}
        {% if (params.T|int)==-2 %}
          {% if params.S is defined %}       
            SET_PIN PIN=fan3 VALUE={params.S|int}
          {% else %}
            SET_PIN PIN=fan3 VALUE=255
          {% endif %}
        {% endif %}
    {% endif %}
    {% if params.P is undefined %}
    {% if params.T is undefined %}
    {% if params.S is defined %}
            SET_PIN PIN=fan0 VALUE={params.S|int}
       {% else %}
            SET_PIN PIN=fan0 VALUE=255       
    {% endif %}
    {% endif %}
    {% endif %}

[gcode_macro M107]
gcode:  
    SET_PIN PIN=fan0 VALUE=0
#    SET_PIN PIN=fan1 VALUE=0
#    SET_PIN PIN=fan2 VALUE=0

[gcode_macro M303]
gcode:
    {% if params.E is defined %}
     {% if params.S is defined %}
        {% if (params.E|int)==-1 %}
         PID_CALIBRATE HEATER=heater_bed TARGET={params.S|int}
        {% endif %}
        {% if (params.E|int)==0 %}
         PID_CALIBRATE HEATER=extruder TARGET={params.S|int}
        {% endif %}
     {% endif %}
  {% endif %}

[gcode_macro M8029]
gcode:
     {% if params.D is defined %}
       {% if (params.D|int)==1 %}
        SET_FILAMENT_SENSOR SENSOR=fila  ENABLE=1
       {% endif %}
       {% if (params.D|int)==0 %}
        SET_FILAMENT_SENSOR SENSOR=fila  ENABLE=0
       {% endif %}
     {% endif %}

[gcode_macro M900]
gcode:
    {% if params.K is defined %}
          SET_PRESSURE_ADVANCE ADVANCE={params.K}
    {% endif %}  
    {% if params.T is defined %}    
       SET_PRESSURE_ADVANCE SMOOTH_TIME={params.T}
    {% endif %}

[gcode_macro M290]
gcode:
   SET_GCODE_OFFSET Z_ADJUST={params.Z}

[gcode_macro M901]
gcode:
    G28
    SHAPER_CALIBRATE

[gcode_macro M0]
gcode:
    PAUSE

[gcode_macro M25]
rename_existing: M9925
gcode:
    PAUSE

[gcode_macro beep_on]
gcode:
    SET_PIN PIN=sound VALUE=1
    
[gcode_macro beep_off]
gcode:
    SET_PIN PIN=sound VALUE=0

[gcode_macro M109]
rename_existing: M99109
gcode:
    #Parameters
    {% set s = params.S|float %}
    M104 {% for p in params %}{'%s%s' % (p, params[p])}{% endfor %}  ; Set hotend temp
    {% if s != 0 %}
        TEMPERATURE_WAIT SENSOR=extruder MINIMUM={s} MAXIMUM={s+1}   ; Wait for hotend temp (within 1 degree)
    {% endif %}
    
[gcode_macro M4029]
gcode:
    BED_MESH_CLEAR
    G28
    G1 X{printer.toolhead.axis_maximum.x/2 - printer.probe["x_offset"]} Y{printer.toolhead.axis_maximum.y/2 - printer.probe["y_offset"]} F7800
    G1 Z15 F600
    ABORT
    PROBE_CALIBRATE
    ABORT
    G0 Z0

[gcode_macro M603]
description: filament unload
gcode:
    G92 E0
    G0  E15 F400
    G4  P1000
    G92 E0
    G1  E-80 F800

##################################### KAMP
[gcode_macro G31]
gcode:
    SET_GCODE_VARIABLE MACRO=G29 VARIABLE=k VALUE=1

[gcode_macro G32]
gcode:
    SET_GCODE_VARIABLE MACRO=G29 VARIABLE=k VALUE=0

[gcode_macro G29]
variable_k:1
gcode:
    {% if k|int==1 %}
        BED_MESH_CLEAR
        #G28   
        BED_MESH_CALIBRATE PROFILE=kamp
    {% endif %}

[gcode_macro M204]
rename_existing: M99204
gcode:
    {% if params.S is defined %}
        {% set s = params.S|float %}
    {% endif %}
    {% if params.P is defined %}
      {% if params.T is defined %}
        {% set s = [params.P|float ,params.T|float] | min %}
      {% endif %}
    {% endif %}
    SET_VELOCITY_LIMIT ACCEL={s}
    SET_VELOCITY_LIMIT ACCEL_TO_DECEL={s/2}


[gcode_macro M1029]
gcode:
#    X_TWIST_PROFILE_LOAD NAME=default
#    X_TWIST_COMPENSATE_MESH MESH_NAME=default COMPENSATION_NAME=default
#    SAVE_CONFIG

Les seules modifications que j'ai apportées sont principalement cosmétiques (remplacement des «=» par «:», suppression / ajout d'espaces pour les indentations, suppression de lignes vides, …).

Remarques à propos de ces macros:

  • Fulidd et Mainsail utilisent désormais tous deux un fichier de configuration (client.cfg) qui propose :
    • des macros PAUSE, RESUME, CANCEL_PRINT plus abouties et facilement configurables via l'ajout au début du fichier printer.cfg d'une macro Gcode _CLIENT_VARIABLE,
    • quelques directives Klipper ( virtual_sdcard, pause_resume, display_status, respond )
  • Il n'y a pas les macros START_PRINT / END_PRINT habituelles, permettant d'être intégrées dans les sections dévolues au Gcode de début / fin des trancheurs. Cependant Qiditech utilise le système KAMP (Klipper Adaptive Meshing & Purging) pour réduire le temps de palpage en fonction de la taille du fichier imprimé
  • Pas de macro M600 (facile à ajouter)
  • La macro M106 gère les trois ventilateurs (refroidissement filament, refroidissement auxiliaire, extraction air)
  • Plusieurs macros xx29 (1029, 4029, 8029) probablement utilisées en association avec l'écran 🤔
  • le M141 gère le chauffage de la chambre

 

C'est tout pour ajourd'hui. Le test final approche (ou pas).

🙂

Modifié (le) par fran6p
  • J'aime 4
  • Merci ! 2
Lien vers le commentaire
Partager sur d’autres sites

  • fran6p featured et pinned this topic
il y a 2 minutes, PPAC a dit :

Hâte de lire la suite.

Ça vient mais les jours qui viennent avec les températures annoncées vont retarder un peu quelques tests.

🙂

Lien vers le commentaire
Partager sur d’autres sites

Bien que je ne l'achèterais pas j'ai un apriori positif sur cette machine.

J'ai jeté un œil sur un ou deux bancs d'essai qui ont l'air d'être bon.

Je me doute bien que la présence de Klipper a du être un argument pour toi.

Lien vers le commentaire
Partager sur d’autres sites

Il y a 4 heures, Funboard29 a dit :

la présence de Klipper a du être un argument pour toi.

Cépafô 😄 CoreXY aussi, volume d'impression itou et d'autres dont je parlerai dans la suite de ce sujet si j'arrive à passer le cap de la canicule 😉 

Modifié (le) par fran6p
  • J'aime 1
Lien vers le commentaire
Partager sur d’autres sites

Le 24/08/2023 at 11:04, Rony a dit :

curieux de connaître la suite !

C'est disponible plus haut.

🙂

  • Merci ! 1
Lien vers le commentaire
Partager sur d’autres sites

Merci pour cette suite !

Sinon il me semble avoir trouvé des coquilles/typos.

Le 08/08/2023 at 10:35, fran6p a dit :

les deux moteurs agissent de conserve

concert ? 

Le 08/08/2023 at 10:35, fran6p a dit :

La tension de cette courroie peut être églée si nécessaire en suivant cette vidéo.

réglée / ajustée ?

lien de la vidéo ? https://wiki.qidi3d.com/en/X-Max3/Troubleshooting?z_code=p12711140855145122921#how-to-adjust-the-belt-tension-of-z-axis

Le 08/08/2023 at 10:35, fran6p a dit :

le site Qiditech propose également des buses en 0,2 - 0:6 - 0,8 mm

0,6 ?

 

Commentaire a éventuellement masquer quand corrections effectuées.

Bonne suite de test.

Modifié (le) par PPAC
Lien vers le commentaire
Partager sur d’autres sites

Merci de me le signaler.

il y a 13 minutes, PPAC a dit :

concert ? 

Les deux expressions sont plus ou moins équivalentes 😉 , en gros ça veut dire «ensemble», voir ce lien par exemple.

il y a 13 minutes, PPAC a dit :

0,6 ?

Exact, corrigé

Pourquoi masquer ? Si tu y tiens, juste fais-le (pas juste un brie doux, hein 😄 ).

🙂

Modifié (le) par fran6p
  • J'aime 1
  • +1 1
  • Merci ! 1
Lien vers le commentaire
Partager sur d’autres sites

Il y a 15 heures, fran6p a dit :

Les deux expressions sont plus ou moins équivalentes 😉 , en gros ça veut dire «ensemble», voir ce lien par exemple.

Me coucherait moins bête 😛 

Lien vers le commentaire
Partager sur d’autres sites

Je me suis aperçu que j'avais oublié de parler de l'extrudeur dans cette seconde partie. Ajout effectué.

🙂

  • J'aime 1
Lien vers le commentaire
Partager sur d’autres sites

Nouvelle mise à jour: cette fois-ci l'électronique

Voir plus haut

🙂

  • J'aime 2
  • +1 1
Lien vers le commentaire
Partager sur d’autres sites

Merci @medmed

Moi aussi 😉

J'essaie d'être exhaustif, tout en restant impartial. Si des soucis apparaissaient, ce qui n'est pas le cas pour le moment ( mais comme chacun le sait, il suffit de le dire pour que Murphy en embuscade pointe le bout de son nez… Vade retro 🙏 🤞) je les relaterais.

Le test final qui paraitra si tout va bien d'ici deux semaines max, devrait l'être un peu moins en ne reprenant que les points essentiels (le lien vers ce sujet sera évidemment donné).

🙂

  • J'aime 2
Lien vers le commentaire
Partager sur d’autres sites

@tous   (heureusement que ce pseudo n'existe pas 🙄)

La suite est disponible plus haut, bonne lecture, au frais et à l'ombre si possible avec les chaleurs actuelles.

🙂

  • J'aime 1
  • Merci ! 2
Lien vers le commentaire
Partager sur d’autres sites

Il y a 2 heures, medmed a dit :

Merci pour le printer.cfg

De rien, il me semble toutefois que je ne l'ai pas donné 😉. Un sujet plus détaillé sur la configuration est prévu, les modifications que j'ai apportées et les ajouts de «confort», inutiles donc totalement indispensables (gcode_shell_command, fluidd-config, timelapses et touti quanti). Je proposerai à l'occasion mon fichier «printer.cfg» (sépare configuration matérielle et macros). Le dépôt Github est pour le moment privé.

Les ventilateurs sont gérés via des directives [output_pin nomduventilateur] et [temperature_fan nomduventilateur] pour la configuration de Klipper et gérés via le trancheur Qidislicer :

qidi-slicer_ventilation-explained.thumb.jpg.088c5c14f9fad62d94e6dac3f701c525.jpg

Prusaslicer n'a pas les options pour ces deux ventilateurs :

prusaslicer-filament-refroidissement.thumb.jpg.ba424c6a2b1dcf83e530236f0cca8baf.jpg

🙂

  • J'aime 1
Lien vers le commentaire
Partager sur d’autres sites

Mais il n'y a pas le fichier de configuration de la carte fille de la tête ni le fichier de configuration de l'écran 😉

  • J'aime 1
Lien vers le commentaire
Partager sur d’autres sites

Nouvelle mise à jour: cette fois-ci un survol du fichier «printer.cfg»

Disponible en scrollant vers le haut ou directement en cliquant >>><<<

🙂

  • J'aime 1
  • Merci ! 2
Lien vers le commentaire
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
  • Sur cette page :   0 membre est en ligne

    • Aucun utilisateur enregistré regarde cette page.
  • YouTube / Les Imprimantes 3D .fr

×
×
  • Créer...