Atelier du Verdier

Journal de construction

L'histoire complète d'une fraiseuse CNC construite de zero, du premier montage à blanc jusqu'à la machine pleinement fonctionnelle.

5 mois
de patience, d'essais et de copeaux — janvier à juin 2026
GitHub
PrintNC — Atelier du Verdier

PrintNC — Atelier du Verdier

Journal de construction d'une fraiseuse CNC PrintNC, de la première pièce au premier copeau. Documentation complète, ouverte et reproductible.

À propos de la PrintNC

La PrintNC est une fraiseuse CNC DIY haute performance conçue autour d'un châssis acier rigide et de pièces imprimées en 3D pour faciliter l'assemblage. Lancée fin 2019 par la communauté printnc.info, elle compte aujourd'hui des centaines de machines construites dans le monde, sous licence ouverte CC BY 4.0. Pensée pour le bois et l'aluminium (et l'acier à l'occasion), elle vise une précision typique de 0.03 à 0.1 mm. Mon exemplaire est une adaptation de la V3 avec broche 2.2 kW, motorisation Nema 23 en boucle fermée et électronique pilotée par LinuxCNC.

Caractéristiques en un coup d'œil

~1275 × 1275 mm
Zone de travail (chassis)
8000 mm/min
Vitesse de travail X/Y
0.03–0.1 mm
Précision typique
2.2 kW
Broche G-Penny ER20
24000 tr/min
Vitesse broche max
Nema 23
Moteurs boucle fermée
LinuxCNC 2.9.8
QtDragon HD + FlexiHAL
~4046 €
Budget total du projet

Explorer le site

Fichiers et ressources

Tout le projet est open source. Les plans d'origine de la PrintNC viennent du wiki communautaire ; mes adaptations, configuration et outils sont sur GitHub :

Juin 2026

ATC, relais et interface

Accessoires, automatismes et personnalisation de QtDragon. 16 etapes

13/06/2026Electronique

Petite carte de contrôle en service avec quelques petits soucis de réglage

Miniature 13/06/2026
12/06/2026Mecanique

Usinage pour la fixation du radiateur

Miniature 12/06/2026
09/06/2026LinuxCNC

Encore un petit bug corrigé qui me change la vie, retour à 10000mm/min en déplacement, pas en usinage

Miniature 09/06/2026
08/06/2026LinuxCNC

Modification de l'interface LinuxCNC afin de mettre mes boutons

Miniature 08/06/2026
07/06/2026LinuxCNC

Mes relais fonctionnent avec un petit plus ... Des boutons 😁

Miniature 07/06/2026
06/06/2026Mecanique

Etape de construction (video du jour)

Miniature 06/06/2026
05/06/2026LinuxCNC

Correction de bug dans mon script de changement d'outils semi-automatique & Usinage de clamps en mdf

Miniature 05/06/2026
04/06/2026Mecanique

Etape de construction (video du jour)

Miniature 04/06/2026
04/06/2026LinuxCNC

Je suis revenu à mon script de changement d'outils semi-automatique Avec quelques améliorations 😊

Miniature 04/06/2026
03/06/2026Mecanique

Pas convaincu du système, pas assez costaud

Miniature 03/06/2026
03/06/2026Mecanique

Une idée

Miniature 03/06/2026
03/06/2026Mecanique

Pourquoi on ne peut pas enregistrer sous fusion 360 ?? 😤

Miniature 03/06/2026
03/06/2026Mecanique

Etape de construction (video du jour)

Miniature 03/06/2026
03/06/2026Mecanique

Etape de construction (video du jour)

Miniature 03/06/2026
01/06/2026Mecanique

Gravure sur bois de hêtre

Miniature 01/06/2026
Mai 2026

La renaissance et les reglages fins

Nouvelle carte, premiere decoupe, palpeur et precision. 69 etapes

31/05/2026Mecanique

Allez, je le lance dans le test d'un ATC, moi qui ne voulais pas pour le moment, je me suis laissé emporter...

Miniature 31/05/2026
31/05/2026Mecanique

Surfaçage en avance de 6000mm/min, c'est top 😁

Miniature 31/05/2026
28/05/2026Mecanique

J'ai trouvé pourquoi je marquais mon martyre lors de la découpe de mon plateau

Miniature 28/05/2026
28/05/2026Mecanique

Explication de mon petit soucis résolu du martyre et problème totalement de ma faute sur la cnc

Miniature 28/05/2026
28/05/2026Mecanique

Etape de construction (video du jour)

Miniature 28/05/2026
27/05/2026LinuxCNC

Voilà j'ai réussi, je ne fais plus aucun zéro manuel, j'ai juste a mettre les outils et le reste est automatique

Miniature 27/05/2026
27/05/2026LinuxCNC

Vidéo n.2 sur la prise Z zéro sur le haut de la pièce Avec changement d'outils

Miniature 27/05/2026
26/05/2026LinuxCNC

Mon style de changement d'outil avec le palpeur fonctionne enfin !

Miniature 26/05/2026
26/05/2026LinuxCNC

Amélioration de mon système de changement d'outils semi-automatique 1 fichier pour les gouverner tous

Miniature 26/05/2026
25/05/2026LinuxCNC

Ce que je veux faire avec le palpeur ne fonctionne toujours pas, mais j'ai réglé un problème pénible que j'avais depuis longtemps sur mes moteurs

Miniature 25/05/2026
24/05/2026LinuxCNC

En avant pour le palpeur de hauteur d'outils, en cours de configuration

Miniature 24/05/2026
23/05/2026Mecanique

Je pense que cette fois c'est un essai réussi !

Miniature 23/05/2026
23/05/2026Mecanique

Deuxième passage, je voulais voir si il n'y avait pas de décalage Par rapport au premier passage

Miniature 23/05/2026
22/05/2026Mecanique

C'est pas aussi simple que dans grbl, j'ai des histoires de limite que je dois décaler, j'ai pas trop saisie encore, mais ça va venir

Miniature 22/05/2026
22/05/2026Mecanique

Consommation environ 500VA en fraisage

Miniature 22/05/2026
22/05/2026Mecanique

Première bilan de la première gravure avec ma printnc

Miniature 22/05/2026
21/05/2026Mecanique

4 mois sans utiliser le logiciel et j'ai tout oublié !! Ça fait pas vraiment ce que je voulais 😜

Miniature 21/05/2026
21/05/2026Mecanique

La reprise est pas facile !

Miniature 21/05/2026
20/05/2026Mecanique

Petite mise au point sur mes 20 000mm/mm

Miniature 20/05/2026
20/05/2026LinuxCNC

Longue vidéo sur l'interface linuxcnc avec qtdragon-hd

Miniature 20/05/2026
18/05/2026Mecanique

Présentation du matériel utilisé

Miniature 18/05/2026
18/05/2026Mecanique

Je suis passé de 6500mm/min à 20 000 !!!

Miniature 18/05/2026
18/05/2026Mecanique

Explication de comment je suis passé de 6500 à 20 000mm/min

Miniature 18/05/2026
18/05/2026Mecanique

Impression en 3D du sabot d'aspiration

Miniature 18/05/2026
18/05/2026Mecanique

Juste pour le fun 😁

Miniature 18/05/2026
16/05/2026LinuxCNC

Réglage fin des moteurs nema23 directement sur le driver CL57T v4.1

Miniature 16/05/2026
15/05/2026Mecanique

Test de surfaçage

Miniature 15/05/2026
15/05/2026Electronique

Je valide mes réglages de tête de broche. Top 👌🏻

Miniature 15/05/2026
15/05/2026Mecanique

Soyons fous, mettons des copeaux partout 😁

Miniature 15/05/2026
15/05/2026Mecanique

Etape de construction (video du jour)

Miniature 15/05/2026
15/05/2026Mecanique

Après tant de travail pour réaliser cette cnc, c'est un plaisir de la voir en action 😊

Miniature 15/05/2026
15/05/2026Mecanique

Ma PrintNC est fonctionnelle 4 mois de réalisation Au poil 👌🏻👍🏻

Miniature 15/05/2026
15/05/2026Mecanique

Petite démo de surfaçage sur du chêne en boit de bout. Dernière passe de 4mm a 4500mm/min

Miniature 15/05/2026
15/05/2026Mecanique

La chose dont je n'avais pas pensé L'évacuation des poussières

Miniature 15/05/2026
14/05/2026Mecanique

Première utilisation de la cnc Perçage des trous pour les inserts

Miniature 14/05/2026
14/05/2026Mecanique

Pour le moment tout fonctionne bien 😌

Miniature 14/05/2026
14/05/2026Mecanique

Ma planche de base est devenue un gruyère

Miniature 14/05/2026
13/05/2026Mecanique

J'ai été un peu foufou avec le nombre de vis !! 😅

Miniature 13/05/2026
13/05/2026Mecanique

Astuces pour moi afin d'aller plus rapidement sans passer par ma perceuse à colonne sans butée

Miniature 13/05/2026
12/05/2026Mecanique

Gabarit énorme pour faire mes perçages à égale distance. Je sais que j'aurai pu faire cela avec une planche et 6 trous, mais ça permet de montrer Je montre le processus de création du gabarit sous FreeCAD

Miniature 12/05/2026
12/05/2026Electronique

Longue explication de mon raisonnement pour le réglage de ma broche avec ces histoires de plans de référence

Miniature 12/05/2026
12/05/2026Mecanique

Gabarit imprimé, je trouve ça pas trop mal comme qualité

Miniature 12/05/2026
11/05/2026Mecanique

Mes réglages de niveaux & équerrages sont OK Plus qu'à confirmer cela dans la pratique

Miniature 11/05/2026
11/05/2026Mecanique

Petite présentation de mon imprimante 3D Elegoo Neptune 4 Max

Miniature 11/05/2026
10/05/2026Mecanique

C'est en répétant les gestes que l'on s'améliore Je refais mon parallélisme et équerrage

Miniature 10/05/2026
10/05/2026Electronique

Je refais la perpendicularité Avec ma réflexion sur mes difficultés à la réaliser

Miniature 10/05/2026
10/05/2026Mecanique

Je continue mes réglages. Explication de mon processus Faut être patient...

Miniature 10/05/2026
09/05/2026Mecanique

Je prépare mes planches martyres

Miniature 09/05/2026
09/05/2026Mecanique

Positionnement des planches martyres et petit raisonnement sur la largeur de 15cm

Miniature 09/05/2026
09/05/2026Electronique

Je refais mes réglages de la broche J'avais oublié un truc essentiel 😜

Miniature 09/05/2026
09/05/2026Electronique

Explication de mon réglage pour la perpendicularité de ma broche

Miniature 09/05/2026
09/05/2026Electronique

J'ai imprimé la pièce pour faire mon réglage sur la broche

Miniature 09/05/2026
09/05/2026Mecanique

Précision de la PrintNC Au centième

Miniature 09/05/2026
08/05/2026Mecanique

J'ai fixé mon plateau. 56 trous, 56 taraudages donc 56 vis

Miniature 08/05/2026
08/05/2026Electronique

Début du réglage de la broche

Miniature 08/05/2026
08/05/2026Mecanique

Rail pour la fixation des pièces Je pense tout haut

Miniature 08/05/2026
07/05/2026LinuxCNC

Je continue mes réglages, Je passe à 3200 step J'ai mis des patins caoutchouc

Miniature 07/05/2026
07/05/2026Mecanique

Patin pour mes tubes aciers en TPU

Miniature 07/05/2026
07/05/2026Mecanique

Allez, premier petit usinage très prudent Juste un positionnement de perçage... C'est fantastique

Miniature 07/05/2026
07/05/2026Electronique

Vitesse de broche 3000trs/min

Miniature 07/05/2026
07/05/2026Mecanique

Perçage - taraudages

Miniature 07/05/2026
06/05/2026Electronique

J'ai reçu ma carte, je fais mon premier test. Un carré afin de voir justement si c'est carré. Et ouiii c'est bien carré 😁

Miniature 06/05/2026
06/05/2026Mecanique

Blabla sur le premier fonctionnement de la machine, avec 2 bêtises à ne pas faire.

Miniature 06/05/2026
06/05/2026Mecanique

GO HOME

Miniature 06/05/2026
06/05/2026Mecanique

Belle surface de travail

Miniature 06/05/2026
03/05/2026Electronique

Je vais faire une tentative de sauvetage de ma carte flexiHAL

Miniature 03/05/2026
01/05/2026Mecanique

PrintNC terminée

Miniature 01/05/2026
01/05/2026Electronique

PrintNC terminé, j'attend juste ma nouvelle carte flexiHAL

Miniature 01/05/2026
01/05/2026Mecanique

J'ai trouvé mon bout de tuyau pour les raccords du ventilateur

Miniature 01/05/2026
Avril 2026

Mise en route... et la carte grillee

Premiers mouvements sous LinuxCNC, puis un coup dur. 42 etapes

29/04/2026Electronique

J'ai trouvé pourquoi l'extension m'a fait griller la carte

Miniature 29/04/2026
29/04/2026Electronique

Petit clips pour ranger un peu mieux les cables

Miniature 29/04/2026
29/04/2026Mecanique

Radiateur de refroidissement pour ma cnc

Miniature 29/04/2026
28/04/2026Electronique

Mauvaise nouvelle Carte grillée 😭

Miniature 28/04/2026
26/04/2026Electronique

J'ai re modilisé mes supports capteur Encore un petit ajustement et ce sera parfait

Miniature 26/04/2026
25/04/2026Electronique

Liquide de refroidissement Pour la broche OK

Miniature 25/04/2026
25/04/2026Electronique

Rodage de la broche

Miniature 25/04/2026
25/04/2026Electronique

Broche à 24 000 tr/min

Miniature 25/04/2026
24/04/2026Electronique

La machine fonctionne mais je dois régler un gros problème de câble USB-C Petite démo du mouvement à 6000mm/min

Miniature 24/04/2026
23/04/2026Electronique

Présentation du boîtier de la PrintNC Terminé à 99,9%

Miniature 23/04/2026
23/04/2026Mecanique

Premier démarrage de la PrintNC 😁

Miniature 23/04/2026
19/04/2026Electronique

Mise en place du boîtier centralisateur des capteurs et pince pour regrouper les fils et tuyaux

Miniature 19/04/2026
19/04/2026Mecanique

Petit point sur l'avancement de la PrintNC

Miniature 19/04/2026
17/04/2026Mecanique

Plaque arrière refaite ainsi que des caches prises

Miniature 17/04/2026
17/04/2026Electronique

Début de mise en place des capteurs sur la PrintNC

Miniature 17/04/2026
13/04/2026Mecanique

Support de prises moins haut pour axe Y1 et Y2

Miniature 13/04/2026
13/04/2026Mecanique

Modélisation réussi Ça passe 👍🏻👍🏻

Miniature 13/04/2026
12/04/2026Electronique

Mise en place du boîtier sur les moteurs nema 23

Miniature 12/04/2026
12/04/2026Mecanique

On ne pense jamais à tout sauf lors de la mise en place 🥴

Miniature 12/04/2026
11/04/2026Electronique

Petit support pour la connectique du moteur

Miniature 11/04/2026
11/04/2026Electronique

Impression de mon premier support de connectique moteur nema23 👍🏻

Miniature 11/04/2026
10/04/2026Mecanique

youtube.com/@atelierduverdier

Miniature 10/04/2026
10/04/2026Electronique

Comment retirer les barres des chemins de cables

Miniature 10/04/2026
10/04/2026Electronique

Démontage chemin de câbles Suite

Miniature 10/04/2026
10/04/2026Electronique

Réflexion sur la création d'un boîtier pour les connecteurs

Miniature 10/04/2026
10/04/2026Electronique

J'ai reçu mes capteurs LJ8A3-2-Z/AX IMPECCABLE 👍🏻

Miniature 10/04/2026
10/04/2026Electronique

Première version de mon boîtier pour brancher les câbles sur le moteur

Miniature 10/04/2026
09/04/2026Mecanique

Début du montage final de la cnc PrintNC Encore plein de petits détails à régler

Miniature 09/04/2026
09/04/2026Electronique

Modification de l'axe Z pour y passer mon capteur

Miniature 09/04/2026
09/04/2026Electronique

Petite explication sur mes capteurs Ça cogite !!

Miniature 09/04/2026
08/04/2026LinuxCNC

VICTOIRE Les moteurs tournent enfin sous LinuxCNC Merci Jean-François 🎉

Miniature 08/04/2026
08/04/2026LinuxCNC

Longue Demo du logiciel qtdragon sous linuxcnc

Miniature 08/04/2026
07/04/2026LinuxCNC

LinuxCNC avec firmware remora-flexi Interface qtdragon-hd Sur Raspberry pi 4

Miniature 07/04/2026
07/04/2026Electronique

Impressions du support de mon chemin de câble Impeccable 👍🏻

Miniature 07/04/2026
07/04/2026LinuxCNC

J'avance dans la configuration de LinuxCNC

Miniature 07/04/2026
04/04/2026Mecanique

Le gros fail😂

Miniature 04/04/2026
04/04/2026Mecanique

Quand on croit que l'on a terminé... Il y a toujours une petite chose qu'on oubli

Miniature 04/04/2026
03/04/2026Electronique

Impressions des supports de chemin de cables

Miniature 03/04/2026
03/04/2026Electronique

Raspberry pi 4 sur la carte flexiHAL J'aimerais bien tester

Miniature 03/04/2026
01/04/2026LinuxCNC

Boîtier terminé 🥳 Explication de mon soucis avec les boutons e-stop et stop

Miniature 01/04/2026
01/04/2026Electronique

Première mise en route de la broche 🤞🏻

Miniature 01/04/2026
01/04/2026Electronique

Activation du RS485 Afin d'avoir le contrôle Sur la vitesse de broche

Miniature 01/04/2026
Mars 2026

Mecanique finalisee, place a l'electrique

Montage du portique termine, debut du boitier electrique. 42 etapes

31/03/2026Electronique

Capteurs de fin de courses OK 😁 Ça sent la fin bientôt

Miniature 31/03/2026
31/03/2026Electronique

Magnifique jonction des 2 chemins de câbles 👍🏻

Miniature 31/03/2026
30/03/2026Electronique

Enfin mes moteurs tournent 😃

Miniature 30/03/2026
26/03/2026Electronique

Premier démarrage du boîtier électrique Mais je me pose une question

Miniature 26/03/2026
25/03/2026Electronique

Je redessine tous les supports pour mes chemins de câbles Je me suis trompé de dimension lors de la commande

Miniature 25/03/2026
25/03/2026Electronique

Mon boîtier électrique pour CNC avance tranquillement Patience 😁

Miniature 25/03/2026
20/03/2026Mecanique

Je regarde les vidéos youtubes Tout le monde a un atelier tout bien rangé Moi c'est ....... Moi

Miniature 20/03/2026
18/03/2026Mecanique

Etape de construction (video du jour)

Miniature 18/03/2026
17/03/2026Mecanique

Positionnement des perçages à la CNC

Miniature 17/03/2026
17/03/2026Electronique

Début du câblage du boîtier électrique

Miniature 17/03/2026
15/03/2026Mecanique

C'est chouette l'impression 3D Je ne m'en sert que pour ce genre de pièces

Miniature 15/03/2026
14/03/2026Electronique

Début du montage du boîtier électrique

Miniature 14/03/2026
14/03/2026Mecanique

Première connerie

Miniature 14/03/2026
14/03/2026Mecanique

Comment je coupe les goulottes

Miniature 14/03/2026
13/03/2026Mecanique

Petite présentation de la printnc Partie mécanique Finalisée

Miniature 13/03/2026
12/03/2026Mecanique

Petite info sur les supports en aciers

Miniature 12/03/2026
12/03/2026Mecanique

Méthode que j'ai utilisé pour fixer le bloc

Miniature 12/03/2026
12/03/2026Mecanique

Attention à la qualité de surface des impression 3D

Miniature 12/03/2026
12/03/2026Electronique

Ma méthode pour bien fixer le support moteur.

Miniature 12/03/2026
12/03/2026Mecanique

La partie mécanique commence à se terminer, et c'est bien cool !!

Miniature 12/03/2026
12/03/2026Mecanique

Méthode de mise à niveau des 4 côtés de la cnc

Miniature 12/03/2026
11/03/2026Mecanique

Réimpressions des plaques pour la vis à billes avec taraudages

Miniature 11/03/2026
11/03/2026Mecanique

Montage des supports pour l'axe X tout est OK Ouff

Miniature 11/03/2026
11/03/2026Mecanique

Enfin tout est fluide sur les rails parallèles. J'ai trouvé le petit problème

Miniature 11/03/2026
11/03/2026Mecanique

Explication de mon petit problème que j'ai mis tant de temps à résoudre

Miniature 11/03/2026
10/03/2026Mecanique

Échec total des mes platines en aluminium,je remet mes platines en 3D

Miniature 10/03/2026
10/03/2026Mecanique

Dans les échecs il y a toujours du bon ☺️

Miniature 10/03/2026
09/03/2026Mecanique

Petit problème sur la vis sans fin, en cours de résolution

Miniature 09/03/2026
08/03/2026Mecanique

Etape de construction (video du jour)

Miniature 08/03/2026
08/03/2026Mecanique

Etape de construction (video du jour)

Miniature 08/03/2026
07/03/2026LinuxCNC

Changement de l'embase en aluminium par un tube d'acier coupé

Miniature 07/03/2026
07/03/2026Mecanique

Bientôt la fin du montage de la printnc, ouf 😅

Miniature 07/03/2026
05/03/2026Mecanique

Légé surfacage pour que ce soit joli. Je voulais poncer et peindre mais j'ai changé d'avis en voyant mon étau de perceuse !

Miniature 05/03/2026
05/03/2026Mecanique

Semelles en aluminium au lieu de l'impression 3D

Miniature 05/03/2026
04/03/2026Mecanique

Malgré mon énervement d'hier, je retente mais avec des vitesses très lentes et des passes de 0,1mm

Miniature 04/03/2026
04/03/2026Mecanique

Etape de construction (video du jour)

Miniature 04/03/2026
04/03/2026Mecanique

Etape de construction (video du jour)

Miniature 04/03/2026
03/03/2026Mecanique

Etape de construction (video du jour)

Miniature 03/03/2026
03/03/2026Mecanique

J'insiste pas avec cette cnc pour l'aluminium

Miniature 03/03/2026
02/03/2026Mecanique

Montage de la printNC. Pas de serrage de vis définitif afin de bien régler les équerrage et les petits réglages diverses.

Miniature 02/03/2026
02/03/2026Mecanique

Serrages des vis , mettre en buté pour l'équerage

Miniature 02/03/2026
02/03/2026Electronique

Bientôt la fin du montage de PrintNC, on va bientôt s'attaquer à la partie électrique/électronique

Miniature 02/03/2026
Fevrier 2026

La saga de l'axe Z

Plaques reimprimees, rajustees, et le cablage de la broche. 50 etapes

28/02/2026Mecanique

Début de montage de la printnc avec des vis de 6 mm et rondelle frein de vis.

Miniature 28/02/2026
28/02/2026Mecanique

Montage et réglage axe X

Miniature 28/02/2026
28/02/2026Mecanique

Etape de construction (video du jour)

Miniature 28/02/2026
25/02/2026Electronique

Étape cruciale sur la PrintNC : le câblage de la broche G-Penny ⚡️. Aujourd’hui, on s'attaque à la soudure du connecteur aviation GX20. Entre le câble blindé et les petites pins, j'ai dû sortir la double paire de lunettes... on ne rajeunit pas, mais la précision n'attend pas ! 🤓

Miniature 25/02/2026
25/02/2026Mecanique

Démontage d'un patin HGW20CC

Miniature 25/02/2026
25/02/2026Mecanique

Etape de construction (video du jour)

Miniature 25/02/2026
25/02/2026Mecanique

Etape de construction (video du jour)

Miniature 25/02/2026
25/02/2026Mecanique

Etape de construction (video du jour)

Miniature 25/02/2026
25/02/2026Mecanique

Etape de construction (video du jour)

Miniature 25/02/2026
24/02/2026Electronique

Nettoyage de la broche CNC g-penny 2,2kw refroidi à eau.

Miniature 24/02/2026
24/02/2026Mecanique

Dégraissage des patins de guidages des rails linéaires

Miniature 24/02/2026
23/02/2026Electronique

En attendant de recevoir la peinture et le petit matériel électrique , je fais les fonds de tiroirs pour la récupération

Miniature 23/02/2026
20/02/2026Mecanique

Clavier DIY réalisé en 2023 @qmk

Miniature 20/02/2026
20/02/2026Mecanique

J'ai mis tout de visu afin de voir comment je vais brancher tout ça !!

Miniature 20/02/2026
19/02/2026Electronique

Réglage du porte broche de la printnc. Pour ceux que ça intéresse : wiki.printnc.info

Miniature 19/02/2026
19/02/2026Electronique

Capteur de proximité inductif LJ8A3-2-Z/AX npn nc 5v

Miniature 19/02/2026
18/02/2026Electronique

Porte broche mais il me faut un gabarit pour percer au bon endroit !!

Miniature 18/02/2026
18/02/2026Mecanique

Réalisation d'un gabarit de perçage en impression 3D

Miniature 18/02/2026
18/02/2026Mecanique

Etape de construction (video du jour)

Miniature 18/02/2026
18/02/2026Electronique

Support de broche fixé

Miniature 18/02/2026
17/02/2026Mecanique

Première couche d'orange

Miniature 17/02/2026
17/02/2026Mecanique

Etape de construction (video du jour)

Miniature 17/02/2026
16/02/2026Mecanique

Partie peinture, démontage complet et sous couche et couche orange. J'en ai pour un petit moment ...

Miniature 16/02/2026
16/02/2026Mecanique

Etape de construction (video du jour)

Miniature 16/02/2026
16/02/2026Mecanique

Ponçage pour l'accroche de la peinture grain 120

Miniature 16/02/2026
14/02/2026Mecanique

Je suis enfin parvenu à faire mon axe Z, non sans mal, je la referai peut-être plus tard sur cette machine costaud car sur l'autre machine qui n'est pas fait pour ça les côtes ne sont des fois pas vraiment bonne

Miniature 14/02/2026
13/02/2026Mecanique

Etape de construction (video du jour)

Miniature 13/02/2026
13/02/2026Mecanique

Encore une plaque pour l'axe Z , j'espère que c'est la bonne cette fois !!

Miniature 13/02/2026
13/02/2026Mecanique

Etape de construction (video du jour)

Miniature 13/02/2026
13/02/2026Mecanique

Etape de construction (video du jour)

Miniature 13/02/2026
12/02/2026Electronique

Parcours d'outils sous FreeCAD pour la plaque pour le porte broche sur l'axe Z. Test sur bois avant aluminium en espérant que c'est la bonne cette fois-ci

Miniature 12/02/2026
12/02/2026Mecanique

Réimpression 3D propre d'un support BF12

Miniature 12/02/2026
12/02/2026Mecanique

Etape de construction (video du jour)

Miniature 12/02/2026
12/02/2026Mecanique

Etape de construction (video du jour)

Miniature 12/02/2026
11/02/2026Electronique

Axe Z qui rentre enfin dans le porte moteur

Miniature 11/02/2026
10/02/2026Electronique

Problème d'entre axe entre le porte moteur et la vis sans fin, 2,5mm. Je réfléchis comment faire ...

Miniature 10/02/2026
09/02/2026Mecanique

Plaque pour l'axe Z réalisée, non sans mal, avec des défauts que j'ai pu rattraper. Une fois terminé je referais peut être tout cette partie avec la PrintNC

Miniature 09/02/2026
09/02/2026Mecanique

Etape de construction (video du jour)

Miniature 09/02/2026
09/02/2026Mecanique

Profile de coupe.

Miniature 09/02/2026
09/02/2026Mecanique

Etape de construction (video du jour)

Miniature 09/02/2026
06/02/2026Mecanique

Simulation d'usinage sous 1.1.0rc2

Miniature 06/02/2026
06/02/2026Mecanique

Etape de construction (video du jour)

Miniature 06/02/2026
06/02/2026Mecanique

Etape de construction (video du jour)

Miniature 06/02/2026
06/02/2026Mecanique

Etape de construction (video du jour)

Miniature 06/02/2026
05/02/2026Mecanique

Etape de construction (video du jour)

Miniature 05/02/2026
05/02/2026Mecanique

3 problèmes à régler Patience et persévérance

Miniature 05/02/2026
04/02/2026Mecanique

Test de découpe de la plaque en Z de ma sur du bois. J'ai changé quelques pièces et je dois modifier le plan original

Miniature 04/02/2026
04/02/2026Mecanique

Légé surfacage de 0,2mm

Miniature 04/02/2026
04/02/2026Mecanique

Usinage plaque axe Z pour

Miniature 04/02/2026
02/02/2026Mecanique

J'avance doucement mais sûrement.

Miniature 02/02/2026
Janvier 2026

Les debuts et le montage a blanc

Premieres etapes de construction et essai d'assemblage. 11 etapes

30/01/2026Mecanique

Montage à blanc de la cnc , beaucoup de petit problème à régler, équerrage ... Mais la PrintNC avance bien. Très utile de faire un montage à blanc !!

Miniature 30/01/2026
27/01/2026Mecanique

Etape de construction (video du jour)

Miniature 27/01/2026
27/01/2026Mecanique

Etape de construction (video du jour)

Miniature 27/01/2026
26/01/2026Mecanique

Premier montage de la cnc afin de voir si tout est ok.

Miniature 26/01/2026
23/01/2026Mecanique

Etape de construction (video du jour)

Miniature 23/01/2026
22/01/2026Mecanique

Etape de construction (video du jour)

Miniature 22/01/2026
20/01/2026Mecanique

Etape de construction (video du jour)

Miniature 20/01/2026
19/01/2026Mecanique

Etape de construction (video du jour)

Miniature 19/01/2026
17/01/2026Mecanique

Etape de construction (video du jour)

Miniature 17/01/2026
16/01/2026Mecanique

Etape de construction (video du jour)

Miniature 16/01/2026
16/01/2026Mecanique

Etape de construction (video du jour)

Miniature 16/01/2026
Aucune etape pour cette combinaison.

Avant-propos

Ce document raconte la construction de ma fraiseuse CNC PrintNC, depuis le tout premier montage à blanc jusqu'à la machine pleinement fonctionnelle. Il a été reconstitué à partir de mon journal de bord quotidien publié sur Instagram (@atelierduverdier), où j'ai documenté presque chaque jour mes avancées, mes échecs et mes petites victoires. Plus qu'une notice technique, c'est l'histoire d'un projet mené avec patience et persévérance — deux mots qui reviennent souvent, et pour cause.

PrintNC - Orange Mécanique
PrintNC - Orange Mécanique

Janvier 2026 — Le montage à blanc

Tout commence fin janvier. Avant de visser quoi que ce soit définitivement, je procède à un premier montage à blanc de la machine, juste pour voir si tout s'emboîte correctement. Sage décision : dès le 30 janvier, je note déjà « beaucoup de petits problèmes à régler, équerrage... » mais la PrintNC avance bien. Faire ce montage à blanc se révèle très utile — c'est un conseil que je retiendrai.

La devise des premiers jours est déjà posée : « J'avance doucement mais sûrement. »

PrintNC - le commencement
PrintNC - le commencement
PrintNC -Construction table CNC
PrintNC -Construction table CNC

Février 2026 — L'axe Z, ce chantier sans fin

Le mois de février est largement consacré à l'axe Z, et il me donne du fil à retordre. Je dois usiner les plaques de l'axe Z sur mon autre machine — pas vraiment faite pour ça — et les cotes ne sont pas toujours au rendez-vous.

C'est une succession de tentatives : une plaque réalisée « non sans mal » avec des défauts rattrapés, un problème d'entraxe de 2,5 mm entre le porte-moteur et la vis, des réimpressions 3D, des tests sur bois avant de passer à l'aluminium. Le 13 février, je lâche un « j'espère que c'est la bonne cette fois !! » qui en dit long sur la persévérance nécessaire. Et le 14 février, enfin : « Je suis enfin parvenu à faire mon axe Z, non sans mal. »

PrintNC - Usinage plaque Z
PrintNC - Usinage plaque Z

En parallèle, je m'attaque à l'esthétique et aux détails : démontage complet pour la peinture (sous-couche puis une belle couche orange), réalisation d'un gabarit de perçage imprimé en 3D pour fixer le porte-broche au bon endroit, et réglage du porte-broche en m'appuyant sur le wiki PrintNC.

Fin février, le matériel sérieux entre en scène. Je nettoie la broche G-Penny 2,2 kW refroidie à eau, je dégraisse les patins des rails linéaires HGW20, et je m'attaque à une étape cruciale : le câblage de la broche, avec la soudure du connecteur aviation GX20. Entre le câble blindé et les petites pins, il a fallu sortir la double paire de lunettes — « on ne rajeunit pas, mais la précision n'attend pas ! »

PrintNC - Moi en train de souder
PrintNC - Moi en train de souder

Mars 2026 — Le montage mécanique et le début de l'électrique

Mars marque le vrai assemblage. Montage avec des vis de 6 mm et rondelles frein, réglage de l'axe X, et surtout un principe de méthode : ne pas serrer définitivement les vis avant d'avoir réglé l'équerrage. La mise en butée pour l'équerrage, les réglages divers... c'est minutieux.

PrintNC - Positionnement des rails
PrintNC - Positionnement des rails
PrintNC - Prémontage
PrintNC - Prémontage
PrintNC - Prémontage
PrintNC - Prémontage
PrintNC - Prémontage
PrintNC - Prémontage
PrintNC - Prémontage
PrintNC - Prémontage

L'aluminium me résiste : après plusieurs tentatives et un certain énervement, je finis par renoncer à usiner certaines pièces en alu sur l'ancienne machine et je reviens à des platines imprimées en 3D. « Échec total de mes platines en aluminium, je remets mes platines en 3D. » Mais comme je le note moi-même : « Dans les échecs il y a toujours du bon. » L'embase en aluminium est même remplacée par un tube d'acier coupé, dans l'esprit costaud de la machine.

Le 11 mars est un beau jour : après avoir cherché longtemps un problème, tout devient enfin fluide sur les rails parallèles. Je partage d'ailleurs la méthode qui m'a débloqué. Puis je documente plein d'astuces : fixation des blocs et supports moteur, attention à la qualité de surface des impressions 3D, mise à niveau des quatre côtés de la machine.

Le 13 mars : « Partie mécanique finalisée. » Une étape majeure.

Aussitôt, le 14 mars, j'enchaîne sur le boîtier électrique : découpe des goulottes, première « connerie » assumée avec humour, positionnement des perçages à la CNC, et début du câblage. L'atelier n'est pas aussi rangé que dans les vidéos YouTube — « Moi c'est... Moi » — mais ça avance.

PrintNC - Montage du boîtier électrique
PrintNC - Montage du boîtier électrique

Le 30 mars, grande satisfaction : « Enfin mes moteurs tournent ! » Et le lendemain, les capteurs de fin de course fonctionnent. Ça sent la fin.

PrintNC - Arrière Nema23
PrintNC - Arrière Nema23

Avril 2026 — Mise en route, et un coup dur

Le mois d'avril s'ouvre sur de belles réussites : boîtier électrique terminé, première mise en route de la broche, activation du RS485 pour contrôler la vitesse de broche. Je commence à explorer LinuxCNC avec le firmware remora-flexi et l'interface QtDragon HD sur Raspberry Pi 4.

Le 8 avril, c'est la « VICTOIRE » : les moteurs tournent enfin sous LinuxCNC (avec un remerciement à Jean-François). Je réalise une longue démo de QtDragon.

Puis viennent les détails sans fin du montage final : modification de l'axe Z pour y passer un capteur, réflexion sur les capteurs, fabrication de boîtiers de connectique imprimés en 3D pour les moteurs Nema 23, supports de chemins de câbles. « Quand on croit que l'on a terminé... il y a toujours une petite chose qu'on oublie. »

Le 23 avril : « Premier démarrage de la PrintNC ! » La machine fonctionne, avec une démo de mouvement à 6000 mm/min — même s'il reste un problème de câble USB-C à régler. Le liquide de refroidissement de la broche est mis en place, la broche est rodée et monte à 24 000 tr/min.

Mais le 28 avril, coup dur : « Mauvaise nouvelle, carte grillée. » Le lendemain, je trouve la cause — une extension qui a fait griller la carte FlexiHAL. Un moment difficile dans un projet de cette ampleur.

Mai 2026 — La renaissance et les réglages fins

Mai commence avec la PrintNC déclarée « terminée », en attendant la nouvelle carte FlexiHAL. Je tente même un sauvetage de la carte grillée. Le 6 mai, la nouvelle carte arrive et le premier test est un usinage tout simple : un carré, pour vérifier que c'est bien carré. « Et ouiii c'est bien carré ! »

S'ensuit une longue période de réglages minutieux qui montre tout le sérieux du travail : passage à 3200 step, patins caoutchouc et TPU sous les tubes acier, fixation du plateau (56 trous, 56 taraudages, 56 vis !), préparation des planches martyres. Le premier petit usinage prudent — un simple positionnement de perçage — est vécu comme « fantastique ».

Le réglage de la broche devient une quête à part entière : perpendicularité, parallélisme, équerrage, plans de référence. Je refais les réglages plusieurs fois, j'imprime des pièces dédiées, je documente longuement mon raisonnement. « C'est en répétant les gestes que l'on s'améliore. » Et le résultat est là : précision au centième.

Le 15 mai est une date charnière : « Ma PrintNC est fonctionnelle. 4 mois de réalisation. Au poil ! » Les copeaux volent, le surfaçage du chêne en bois de bout est un plaisir, et après tant de travail, voir la machine en action est une vraie satisfaction. Détail qu'on oublie toujours : l'évacuation des poussières.

La fin du mois est consacrée à l'optimisation et aux fonctions avancées : réglage fin des drivers CL57T v4.1, un bond spectaculaire de vitesse (de 6500 à 20 000 mm/min en pointe), impression d'un sabot d'aspiration. Puis la reprise de LinuxCNC après des mois sans pratique — « j'ai tout oublié ! » — et l'apprentissage de ses subtilités par rapport à GRBL (les histoires de limites à décaler).

Le palpeur de hauteur d'outil devient le grand chantier logiciel : après des essais infructueux, le 26 mai mon système de changement d'outil avec palpeur fonctionne enfin. Mieux : le 27 mai, plus aucun zéro manuel — je pose les outils et le reste est automatique. Un fichier unique « pour les gouverner tous ».

Juin 2026 — ATC, relais et interface

Début juin, je me laisse tenter par un changeur d'outil automatique (ATC), moi qui ne voulais pourtant pas m'y attaquer tout de suite. L'essai est instructif mais le verdict tombe le 3 juin : « Pas convaincu du système, pas assez costaud. » Je reviens donc à mon script de changement d'outil semi-automatique manuel avec palpage auto, en l'améliorant et en corrigeant ses bugs.

Les derniers jours sont consacrés à l'intégration d'accessoires et à l'interface : mise en service de relais pour piloter aspirateur, lumière et pompe, avec des boutons dédiés ajoutés directement dans QtDragon. Le 8 juin, je personnalise l'interface LinuxCNC pour y placer mes boutons.

PrintNC -Relais
PrintNC -Relais

Bilan

Quatre à cinq mois de travail, des dizaines de pièces imprimées et réimprimées, une carte grillée puis remplacée, d'innombrables réglages d'équerrage et de perpendicularité, et une montée en compétence continue sur la mécanique, l'électronique et le logiciel LinuxCNC.

Ce qui ressort de ce parcours, ce n'est pas la perfection du premier coup — c'est exactement l'inverse. C'est la capacité à recommencer une plaque d'axe Z autant de fois que nécessaire, à transformer un « gros fail » en leçon, et à avancer « doucement mais sûrement ». La PrintNC de l'Atelier du Verdier est le fruit de cette persévérance.

« Après tant de travail pour réaliser cette CNC, c'est un plaisir de la voir en action. »

Document reconstitué à partir du journal de bord Instagram @atelierduverdier. Les citations en italique et entre guillemets sont des extraits des légendes d'origine.

16 juin 2026 — VFD HuangYang en HYComm et refroidissement broche

Lecture des paramètres du VFD via le protocole HYComm

Le VFD HuangYang 2.2 kW n'utilise pas le Modbus RTU standard mais son propre protocole série, le HYComm. Un script Modbus classique (minimalmodbus) reste muet : le VFD ne répond pas. Après analyse des trames échangées, le format de lecture d'un paramètre PD a été identifié :

Requete  : [adresse][0x01][0x03][numero_PD][0x00][0x00][CRC16]
Reponse  : [adresse][0x01][longueur][numero_PD][valeur...][CRC16]

La longueur vaut 0x03 (PD + 2 octets de valeur) ou 0x02 (PD + 1 octet). La validation se fait par le CRC16 et par l'écho du numéro de PD dans la réponse. Un script Python (lire_vfd.py) lit ainsi les paramètres PD000 à PD189 et les enregistre dans un fichier texte. Lecture seule, LinuxCNC doit être arrêté (le composant hy_vfd occupe sinon le port /dev/ttyAMA2). Outil publié sur GitHub : github.com/atelierduverdier/huanyang-vfd-reader.

Paramètres VFD relevés et documentés

Valeurs principales lues sur la machine : fréquence max 400 Hz (PD005), tension max 220 V (PD008), moteur 220 V / 9 A / 2 pôles / 3000 tr/min à 50 Hz (PD141-144), communication adresse 1, 9600 bauds, 8N1 RTU (PD163-165). Documentés dans la section "Paramètres du VFD" du site.

Accélération / décélération VFD portées à 3 s

PD014 (accélération) et PD015 (décélération) étaient à 1.5 s. Passés à 3 s pour ménager la broche : une décélération trop rapide renvoie de l'énergie sur le bus DC du VFD (risque de défaut surtension OU) et sollicite les roulements. 3 s élimine ce risque tout en restant confortable.

Refroidissement broche : pompe (flood) + ventilateurs (AUX2) liés, avec post-refroidissement

La pompe à eau (sortie FLOOD / COOLANT, M8) et les ventilateurs (AUX2) sont désormais pilotés ensemble par un signal commun, avec maintien après l'arrêt de la broche pour évacuer la chaleur résiduelle.

Comportement : - M3 (broche ON) ou M8 : pompe + ventilateurs démarrent immédiatement. - M5 (broche OFF) ou M9 : pompe + ventilateurs restent actifs encore 30 s, puis s'arrêtent ensemble. - Bouton AUX2 et M64 P2 / M65 P2 : commande manuelle des ventilateurs (inchangé).

Réalisation avec un composant timedelay (post-refroidissement) et deux or2 en cascade. Dans remora-flexi.hal :

loadrt or2 names=aux0_or,aux1_or,aux2_or,aux3_or,cool_or1,cool_or2
loadrt timedelay names=spindle_cooldown
addf cool_or1 servo-thread
addf cool_or2 servo-thread
addf spindle_cooldown servo-thread

setp spindle_cooldown.on-delay 0
setp spindle_cooldown.off-delay 30
net spindle-on => spindle_cooldown.in

# FLOOD = M8 OU post-refroidissement broche
net coolant-m8 iocontrol.0.coolant-flood => cool_or1.in0
net spindle-cooldown spindle_cooldown.out => cool_or1.in1
net cooling-active cool_or1.out => flexi.output.COOLANT

Dans custom_postgui.hal :

# AUX2 (ventilateurs) = (bouton OU M64) OU refroidissement actif
net aux2-or-out aux2_or.out => cool_or2.in0
net cooling-active => cool_or2.in1
net aux2-out cool_or2.out => flexi.output.AUX2

Le délai se règle avec setp spindle_cooldown.off-delay (en secondes). Piège rencontré : on ne peut pas relier deux fois le pin iocontrol.0.coolant-flood (déjà lié au signal flood) ; il faut réutiliser le signal existant, pas le pin.

Correction affectation AUX2

Le tableau d'affectation indiquait AUX2 = pompe à eau. En réalité AUX2 = ventilateurs broche, et la pompe est sur la sortie FLOOD (COOLANT). Documents AFFECTATION_AUX.md et tableau corrigés.

13 juin 2026 — Télécommande RJ45 et bugs HAL CYCLE_START / HOLD

Bug CYCLE_START : le programme redémarrait en boucle, Stop ne tenait pas

La logique utilisait flexi.input.CYCLE_START.not alors que cette entrée est active HAUTE (FALSE au repos, TRUE en appui). Le .not restait donc TRUE en permanence au repos, et combine a program-is-idle, relançait halui.program.run en boucle dès que la machine redevenait idle. Corrigé en retirant le .not et en supprimant l'ancien mecanisme de single-step automatique (qui n'était plus nécessaire et participait au bug) :

net cycle-start-button flexi.input.CYCLE_START => run_and.in0
net program-is-idle halui.program.is-idle => run_and.in1
net program-run run_and.out => halui.program.run

Bug HOLD : program.pause bloqué en permanence, GO HOME impossible

Même type de bug sur le Hold : flexi.input.FEED_HOLD.not était utilise alors que FEED_HOLD est FALSE au repos (vérifié via halshow). Le .not restait donc TRUE au démarrage, déclenchant une seule fois le toggle et bloquant hold_toggle.on / halui.program.pause a TRUE de façon permanente. Conséquence inattendue : GO HOME refusait avec "Linear move on line 0 would exceed joint 0's negative limit" car la machine se croyait en pause. Corrigé en retirant le .not :

net hold_button flexi.input.FEED_HOLD => hold_button_toggle.in

Déblocage immediat effectué via Resume avant correction du fichier.

Conflit de câblage : carte de boutons locale vs télécommande RJ45

La carte de boutons (CYC/ST, HOLD, HALT, DOOR avec LEDs témoins) était câblée en parallele de la télécommande RJ45 sur les mêmes entrées FlexiHAL. Résultat : niveaux logiques perturbés sur SYS/ST et HOLD. Solution retenue : déconnexion des sorties SYS/ST et HOLD de la carte de boutons, RJ45 seul conservé sur ces deux lignes. HALT reste fonctionnel sur la carte de boutons (vérifié au multimetre, diode de protection MOSFET 2N7000 RAS). A faire si réutilisation future de la carte boutons sur ces 2 lignes : ajouter une logique de découplage (diodes OU or2 comme déjà fait pour les sorties AUX0-3) pour éviter le conflit entre les deux sources de signal.

8 juin 2026

Environnement de développement PC + simulation

Mise en place d'un PC de développement (x86_64, Debian) en complément du Raspberry Pi de production, synchronisés par git. Config de simulation créée pour travailler l'interface sans le matériel : remora-flexi-sim.ini/.hal, postgui_call_list_sim.hal, qtdragon_hd_sim.hal, custom_postgui_sim.hal. Remplace le composant flexi (SPI) et le VFD série par des équivalents simulés. Lancement : linuxcnc ~/linuxcnc/configs/flexi-hal/remora-flexi-sim.ini. Affichage fenêtre : retirer l'option -f (fullscreen) de la ligne DISPLAY.

Qt Designer sur PC (x86_64)

Paquet qttools5-dev-tools (binaire "designer"). Alias PC avec x86_64-linux-gnu au lieu de aarch64-linux-gnu sur le Pi.

Boutons lanceurs d'applications

Ajout dans le handler de 4 fonctions lançant des applications externes sans bloquer l'interface (subprocess.Popen) : terminal (xfce4-terminal), geany, navigateur, explorateur de fichiers. Connexions défensives (hasattr).

Timings d'impulsion harmonisés

Le moteur Y2 (JOINT_3) était règle a STEPLEN/STEPSPACE = 5000 (reste d'un test sur un bruit moteur dont la vraie cause était les DIP switches du driver). Harmonisé a 2500 sur tous les axes : son nettement meilleur.

Vitesse X/Y portée a 8000 mm/min

Après avoir testé 10000 mm/min (166.67 mm/s) sans perte de pas, la vitesse a finalement été ramenée a 8000 mm/min (133.33 mm/s) pour le confort sonore et thermique des moteurs (perte de couple a haute vitesse rattrapée par les drivers en boucle fermee, accentuee par la temperature). Modifications dans [AXIS_X], [JOINT_0], [AXIS_Y], [JOINT_1], [JOINT_3], [DISPLAY] et [TRAJ]. Latence du Pi vérifiée avec latency-test : excellente (jitter servo ~28 us).

Bug bouton GO HOME a haute vitesse (RÉSOLU)

A haute vitesse, en fin de déplacement GO HOME : message "EMC_TASK_PLAN_PAUSE cannot be executed". Le bouton utilise CALL_MDI_WAIT avec un delai = distance / vitesse + marge, qui ignore le temps d'accélération/décélération. Avec une marge de 1 s, le WAIT expirait avant la fin du mouvement. Correction dans qtdragon_hd_handler.py, fonction calc_mdi_move_wait_time :

avant : def calc_mdi_move_wait_time(self, dest_x, dest_y, wait_buffer_secs=1)
apres : def calc_mdi_move_wait_time(self, dest_x, dest_y, wait_buffer_secs=4)

Widget web (QtWebEngine) supprimé (RÉSOLU)

Au démarrage : erreurs "page_allocator Invalid argument (22)" + gel de la boucle (~0.18 s). Le widget QtWebEngine (page HTML de l'onglet SETUP, non utilisée) plante au démarrage. Widget web_view supprimé dans Qt Designer (onglets PDF et PROPERTIES conserves). Handler protégé par hasattr(self.w,'web_view') and hasattr(self.w,'layout_HTML').

Message EMC_TASK_PLAN_PAUSE au démarrage (RÉSOLU)

Popup au déverrouillage E-stop, présent "depuis toujours". La carte lit ses entrées en logique active basse (FEED_HOLD = TRUE au repos), donc halui.program.pause était forcé a TRUE en permanence. Correction dans remora-flexi.hal :

avant : net hold_button flexi.input.FEED_HOLD     => hold_button_toggle.in
apres : net hold_button flexi.input.FEED_HOLD.not => hold_button_toggle.in

Sujet connexe non resolu : la télécommande 3 boutons RJ45 ne répond physiquement que sur HALT ; CYCLE_START et HOLD ne changent pas d'état (câblage/brochage a vérifier).

7 juin 2026

Logique bouton OU G-code (or2)

Chaque sortie AUX est pilotee par un or2 : relais actif si le bouton OU le G-code le demandé.

loadrt or2 names=aux0_or,aux1_or,aux2_or,aux3_or
addf aux0_or servo-thread
net aux0-gcode motion.digital-out-00 => aux0_or.in0

Dans custom_postgui.hal (charge apres le GUI) :

net aux0-btn qtdragon.aux0 => aux0_or.in1
net aux0-out aux0_or.out => flexi.output.AUX0

Important : le prefixe reel des pins de boutons est "qtdragon" (et non "qtvcp"). Verifier avec halcmd show pin | grep -i aux.

Creation des boutons dans QtDragon_hd

Ecran copie avec qtvcp copy (ne jamais modifier l'ecran système). Boutons : PushButton de la categorie "linuxcnc - hal", objectName aux0..aux3, checkable coche. Le PushButton HAL créé automatiquement la pin qtdragon.<objectName>.

Incident : boutons perdus dans Designer

Erreur "Pin qtdragon.aux0 does not exist" apres manipulations. Procedure de secours : commenter les lignes aux?-btn du postgui pour démarrer, recreer les boutons, vérifier avec halcmd, decommenter. Lecon : faire fonctionner d'abord, faire joli ensuite. Une modif a la fois.

6 juin 2026

Sorties auxiliaires (relais) FlexiHAL

Piloter les relais (lumiere, arrosage, aspiration) via les sorties AUX de la FlexiHAL, commandables depuis QtDragon et le G-code (M64/M65). Configuration HAL directe, sans inversion (modules câbles en active HIGH) :

net aux0-sig motion.digital-out-00 => flexi.output.AUX0
net aux1-sig motion.digital-out-01 => flexi.output.AUX1
net aux2-sig motion.digital-out-02 => flexi.output.AUX2
net aux3-sig motion.digital-out-03 => flexi.output.AUX3

Prerequis INI (sinon M64/M65 ignores silencieusement) :

[EMCMOT]
NUM_DIO = 4

Câblage matériel valide

Alimentation ET signal pris sur le bornier AUX 2 fils. Par module : borne + du bornier vers DC+, pont court DC+ <-> IN sur le module, borne - vers DC-. Le rail AUX doit être alimente (jumper P17 = MAIN = 24V). Limites : 1000 mA combines pour les 4 AUX, bobine >= 150 Ohm.

Journal de resolution

La cause racine d'un long debogage était un jumper P17 defectueux (pas de contact) : le rail AUX n'était pas alimente (borne + a 0V au lieu de 24V). Pistes ecartees avant : NUM_DIO absent de l'INI, jumpers de modules incoherents, tentative d'inversion HAL (composant not) abandonnee. La config HAL et le câblage étaient corrects ; seul defaut matériel : le jumper.

5 juin 2026 — Debug toolchange

Recursion M6 cassant la preview

Le script toolchange.ngc appele par REMAP=M6 contenait lui-même un M6, creant une recursion infinie : la preview G-code de QtDragon ne se chargeait plus. Correction : suppression du M6 parasite.

Utilisation de #<_selected_tool>

Le script utilisait #5400 (outil courant) au lieu de #<_selected_tool> (outil demandé par T_ M6). Au premier M6 sans outil en broche, #5400 = 0 et le script sortait sans palper. Corrigé.

Gestion d'erreur incompatible avec la preview

Les blocs IF...M2...ENDIF cassaient la preview QtDragon. Supprimes : G38.2 declenche déjà automatiquement une erreur en cas d'echec de palpage, la vérification de #5070 était redondante.

TOOLSET_X incohérent

[PROBE] TOOLSET_X = -25.0 ne correspondait pas a [VERSA_TOOLSETTER] X = -50.0. Corrigé a -50.0.

Mai 2026 — Changement d'outil manuel avec palpage auto

Mise en service

Un OpenATC (changement semi-automatique) avait été tente puis abandonne. Solution retenue : changement d'outil MANUEL avec palpage AUTOMATIQUE de la longueur d'outil au palpeur fixe (X-50 Y60). Script toolchange.ngc via REMAP=M6 : double palpage (rapide + lent), mode 0 (Z zero sur martyre auto) ou mode 1 (Z zero sur piece manuel), gestion du premier outil de référence via #1000 et #1002. Subroutines MDI associees : reset_ref, set_mode_martyre, set_mode_piece.

Bonnes pratiques REMAP apprises

Ne jamais rappeler le code M qui a declenche le REMAP dans son propre script. Utiliser #<_selected_tool> et non #5400. Eviter les IF contenant M2/M30 (cassent la preview). G38.2 gere ses propres erreurs.

Liste du matériel (BOM)

Liste complète du matériel pour la construction de la PrintNC, avec les prix payés à l'achat en 2026. Articles cliquables = lien direct vers la page produit. Prix indicatifs — les tarifs Aliexpress/Amazon fluctuent.

Mécanique — Structure

ArticleQtéDétailsPrix unit.Total
Bois1180€180.00 €
Roulette Table CNC132.79€32.79 €
OSB Plateau 22mm Table CNC424.1875€96.75 €
Tube rectangulaire 100x50x4mm4Structure plateau — 1600 mm59.52€238.08 €
Tube rectangulaire 100x50x4mm2Axe Y — 1550 mm57.66€115.32 €
Tube rectangulaire 100x50x4mm6Supports — 100 mm3.72€22.32 €
Tube rectangulaire 100x50x4mm1Axe X — 1650 mm61.38€61.38 €
Sous-total746.64 €

Mécanique — Transmission

ArticleQtéDétailsPrix unit.Total
Ball Screw SFU1610 Ball Screw1X-Axis Movement — 1500108.14€108.14 €
SFU1610 Ball Screw2Axes Y — 1500 mm (rails à recouper en 1400 mm)108.39€216.78 €
SFU1204 Ball Screw1Axe Z — 300 mm18.89€18.89 €
Sous-total352.86 €

Mécanique — Guidage

ArticleQtéDétailsPrix unit.Total
Linear Rails HGR20 Linear Rail(x2)1Axe X — 1500 mm100.39€100.39 €
Linear Rails HGR20 Linear Rail(x2)1Axe Y — 1500 mm (recoupé à 1400 mm)100.39€100.39 €
Linear Rails HGR20 Linear Rail(x2)1Axe Z — 400 mm46.39€46.39 €
Sous-total247.17 €

Mécanique — Motorisation

ArticleQtéDétailsPrix unit.Total
Support moteur HM10-57 angular bearing119.29€19.29 €
Support moteur HM12-57 angular bearing318.99€56.97 €
Sous-total76.26 €

Mécanique — Broche

ArticleQtéDétailsPrix unit.Total
Spindle 2.2kw Water Cooled Spindle1Cutting249.58€249.58 €
Tuyau Orange 8x5112.1€12.10 €
Acrylic Meter G1/414.85€4.85 €
PC Water Cooling120.79€20.79 €
Pneumatique Elbow14.56€4.56 €
Sous-total291.88 €

Mécanique — Outillage

ArticleQtéDétailsPrix unit.Total
Equerre 90 Degrée Flat Edge Square 200x130119.59€19.59 €
Pointau Starrett 117B1Avant trou7.94€7.94 €
Pince à sertir122.98€22.98 €
Comparateurs à cadran217.45€34.91 €
Sous-total85.42 €

Électronique — Contrôle

ArticleQtéDétailsPrix unit.Total
Controller FlexiHAL1Controller122.59€122.59 €
Dissipateur Raspberry pi 5 8go19€9.00 €
SSD 500Go1104.99€104.99 €
Ordinateur Raspberry pi 5 8go1173.99€173.99 €
Hat Pimoroni Hat m.2122€22.00 €
Sous-total432.57 €

Électronique — Motorisation

ArticleQtéDétailsPrix unit.Total
Nema 23 Nema 23 23HS40-5004-ME1K432.8€131.20 €
Pilote CL57T-V41442.44€169.76 €
Sous-total300.96 €

Électronique — Alimentation

ArticleQtéDétailsPrix unit.Total
Contacteur 24v138.87€38.87 €
Disjoncteur fusible 2Ampére12.61€2.61 €
Module filtre de puissance117.99€17.99 €
Alimentation 24v128.81€28.81 €
Alimentation Alim 350W 48v 7.3A LE-350-48221.49€42.98 €
Alimentation Alim 350W 24v 4.5A111.05€11.05 €
Sous-total142.31 €

Électronique — Interface

ArticleQtéDétailsPrix unit.Total
Bouton13.89€3.89 €
Prise HDMI/usb Prise boîtier113.26€13.26 €
Prise coude usb Prise boîtier17.01€7.01 €
Boutons128.75€28.75 €
Ventilateurs130.03€30.03 €
Ventilateurs 2x 24v120.05€20.05 €
Bouton ON/OFF115.99€15.99 €
Sous-total118.98 €

Électronique — Capteurs

ArticleQtéDétailsPrix unit.Total
Probe128.78€28.78 €
Capteur LJ8A3-2-Z/AX4Alimentation 24V — NPN NC7.12€28.48 €
Sous-total57.26 €

Câblage

ArticleQtéDétailsPrix unit.Total
Nappe 2x10pin13.17€3.17 €
DB9 male110.07€10.07 €
Câblé Chain 1m 30x1031114.87€114.87 €
Câblé Chain 1m 30x103138.59€38.59 €
Câblé 6 couleurs117.36€17.36 €
Câblé 16awg vert bleu rouge111.48€11.48 €
Câblé 16awg vert bleu rouge122.27€22.27 €
Goulotte 40x40218.89€37.78 €
DIN Rail15.59€5.59 €
Prises GX2017.49€7.49 €
Prises GX1623.39€6.78 €
Boîtier Vevor 60x60x201103.9€103.90 €
Terminal Bloc 3,81115.58€15.58 €
Terminal Bloc 3,8117.29€7.29 €
Câblé VFD134.95€34.95 €
Câblé Kit de câble d’extension d’encodeur427.28€109.12 €
Câblé 3 Brins130.99€30.99 €
Sous-total577.28 €

Visserie

ArticleQtéDétailsPrix unit.Total
Visserie182.09€82.09 €
Sous-total82.09 €

Divers

ArticleQtéDétailsPrix unit.Total
Filament 3D Sunlu Blanc Osseux218.99€37.98 €
Capteur flux d’eau115.07€15.07 €
Peinture Orange pur RAL 2004418.9€75.60 €
Peinture Sous couche59.3€46.50 €
peinture Orange pur RAL 2004518.9€94.50 €
Sous-total269.65 €

Total général

Montant
Articles3781.33 €
Frais de port311.95 €
Remises-47.53 €
Total final4045.75 €
Prix payés au moment de l'achat début 2026. Prévoir une marge de ±20% selon les promotions et les fluctuations de change.
Fiche technique

Vue d'ensemble

PrintNC - Orange Mécanique
PrintNC - Orange Mécanique

La PrintNC est un routeur CNC DIY haute performance base sur un châssis acier, conçu pour être rigide tout en restant constructible avec un simple imprimante 3D (les pièces imprimées servent surtout de gabarits et de supports non structurels). Cet exemplaire est un format standard, surface de travail utile environ 1275 x 1275 mm.

Caractéristiques principales :

  • Châssis en tubes acier rectangulaires 100 x 50 mm, épaisseur 4 mm (plus massif et rigide que les recommandations standard du wiki, pour limiter les vibrations).
  • Pilotage par carte Flexi-HAL (Expatria) sous firmware Remora, sur Raspberry Pi 5.
  • LinuxCNC 2.9.8, interface QtDragon HD.
  • 4 axes mécaniques : X, Y (en tandem, 2 moteurs Y1 et Y2), Z.

Motorisation

Nema23 en boucle fermée
Nema23 en boucle fermée
Connectiques Nema23
Connectiques Nema23
  • 4 moteurs pas a pas Nema 23 en boucle fermée, couple 3.00 Nm (424.83 oz.in), encodeur magnétique 1000 PPR (4000 CPR). Référence 23HS40-5004-ME1K (OMC-StepperOnline).
  • 4 drivers CL57T v4.1, plage 0 a 8.0 A, alimentation 24 a 48 VDC. Réglage du courant et du micro-pas par DIP switches sur le driver.
  • Alimentations a découpage 350 W 48 V 7.3 A (LE-350-48). Le 48 V aide a conserver le couple a haute vitesse.
  • Câblage blinde AWG20, longueur 4.7 m (CE5-M5-20) pour la puissance et les encodeurs.

La boucle fermee permet aux drivers de rattraper un éventuel décalage grâce a l'encodeur : la machine signale une erreur plutôt que de perdre des pas silencieusement.

Alimentations, une alimentation pour 2 moteurs
Alimentations, une alimentation pour 2 moteurs
Arriere Nema23 axe Z
Arriere Nema23 axe Z
Boitier centralisateur pour les capteurs
Boitier centralisateur pour les capteurs

Transmission

  • Axes X et Y : vis à billes SFU1610 (diamètre 16 mm, pas 10 mm par tour) sur rails de guidage linéaires HGR20.
  • Axe Z : vis a billes SFU1204 (diamètre 12 mm, pas 4 mm par tour). Le pas fin augmente le couple de maintien vertical et contre la gravite sur la broche.
  • Paliers : BK/BF aux extrémités des vis.

Le pas plus fin en Z est un choix classique : il ralentit l'axe mais lui donne plus de poussée et de tenue, ce qui est souhaitable pour porter le poids de la broche.

Transimission vis à billes
Transimission vis à billes

Broche et refroidissement

Broche 2.2kW, pince ER20, refroidie à eau
Broche 2.2kW, pince ER20, refroidie à eau
  • Broche G-Penny 2.2 kW, pince ER20, refroidie par eau (corps 80 x 230 mm, 220 V), 4 roulements céramiques série 7, déviation max annoncée 0.01 mm.
  • Variateur de fréquence (VFD) HuangYang (HY) 2.2 kW 220 VAC, pilote en vitesse par LinuxCNC via liaison série RS485 (Modbus).
  • Refroidissement : pompe a eau 220 V 75 W (débit max 3200 L/H), circuit ferme rempli de liquide de refroidissement automobile (protège de l'oxydation interne et empêche la prolifération d'algues).
  • Vitesse broche : jusqu'à 24000 tr/min.
VFD HY et drivers moteur
VFD HY et drivers moteur

Sécurité électrique

  • Contacteur ABB AF09-30-10-11 avec bobine 24 V pour la coupure générale de l'armoire.
  • Chaîne d'arrêt d'urgence câblée sur la carte.
  • Capteurs de fin de course de proximité inductifs, type NPN NC (normalement ferme), alimentes en 24 V.
Capteur LJ8A3-2-Z/AX
Capteur LJ8A3-2-Z/AX
Alimentation 5V, Contacteur 24V/230V, Filtre anti-parasite
Alimentation 5V, Contacteur 24V/230V, Filtre anti-parasite
Choix de conception

Quelques décisions de conception du projet PrintNC qui peuvent surprendre au premier abord, mais qui sont issues de nombreuses itérations de la communauté.

Un seul patin par rail (et non deux)

Les premières versions de la PrintNC utilisaient deux patins par rail. Le passage à un seul patin a été un choix réfléchi, validé par des centaines de machines construites :

  • Pas de perte de performance : les rails HGR20 sont surdimensionnés pour le poids du portique et les forces d'usinage d'un routeur DIY. La flexion ne vient pas des rails.
  • Coût réduit : 6 patins HGW20 au lieu de 12.
  • Plus grande surface de travail : chaque patin supplémentaire réduit la course utile du rail d'environ 80 mm (avec son graisseur).
  • Construction simplifiée : moins de trous percés/taraudés, moins de risques de blocage par défaut d'alignement.

Sur le très long terme, deux patins augmenteraient la durée de vie des rails — mais l'usage en routeur hobbyiste reste très en deçà du régime nominal des HGR20, prévus pour de la machine industrielle en service continu.

Châssis acier (pas aluminium)

L'acier est environ 3 fois plus rigide que l'aluminium à section égale. Pour un routeur CNC de cette taille, c'est la rigidité du châssis qui détermine la qualité d'usinage en métaux (alu, acier doux). L'épaisseur recommandée par le wiki est 2.5 mm pour les tubes ; cet exemplaire utilise du 4 mm, encore plus massif, pour ménager une marge sur les vibrations en usinage acier.

Pièces imprimées 3D non structurelles

Malgré son nom, la PrintNC ne repose pas sur des pièces plastique en charge. Les éléments imprimés en 3D servent principalement de :

  • Gabarits de perçage temporaires (jetés ou réutilisés selon les pièces).
  • Supports de chemins de câbles, boîtiers de connectique.
  • Quelques platines secondaires (souvent remplacées par de l'aluminium usiné plus tard).

L'idée initiale était de pouvoir construire une CNC sans avoir besoin d'une CNC, juste avec une imprimante 3D et des outils manuels de base.

Tandem Y (deux moteurs pour l'axe Y)

L'axe Y est entraîné par deux moteurs Nema 23 synchronisés, un de chaque côté du portique. Cette configuration en tandem évite tout problème de rattrapage mécanique (pas d'arbre de liaison ni d'engrenages), et garde le portique parfaitement parallèle. Les deux moteurs sont homés ensemble pour garantir l'orthogonalité au démarrage. Le scale négatif sur JOINT_3 compense simplement le sens de rotation inverse du moteur (les deux vis tournent dans le même sens mécanique).

---

Comparaison des options de broche

La PrintNC peut être équipée de différentes broches selon le budget et les usages prévus. Voici les options principales pour situer le choix retenu sur cet exemplaire.

Vue d'ensemble

TypePuissance typiqueRefroidissementUsage principal
Routeur (Makita RT0701C, DeWalt DWP611)~700 WAir (ventilateur interne)Bois, occasionnel
Broche air-cooled0.5 à 2.2 kWAir (ventilateur intégré)Polyvalent
Broche water-cooled (choix retenu)1.5 à 2.2 kWEau (pompe externe)Travail intensif, silencieux

Broches refroidies (air ou eau) — détails techniques

PuissanceCouplePinceCourant en 230V
0.5 kW0.5 N·mER112.25 A
0.8 kW0.3 N·mER11/163.6 A
1.5 kW0.6 N·mER11/166.8 A
2.2 kW (cet exemplaire)0.875 N·mER2010 A

Tailles de pinces (collets)

La taille de pince détermine le diamètre maximum de queue d'outil utilisable.

PinceLongueurDiamètre
ER1118 mm11.5 mm
ER1627.5 mm17 mm
ER20 (cet exemplaire)31.5 mm21 mm

L'ER20 accepte des outils jusqu'à 13 mm de queue, ce qui permet d'utiliser une large gamme de fraises industrielles. Pour l'usinage bois et alu sur cette machine, des queues de 6 mm, 8 mm et 12 mm sont les plus courantes.

Pourquoi une broche water-cooled ER20 de 2.2 kW ?

Le choix retenu (G-Penny 2.2 kW ER20) combine plusieurs avantages :

  • Silencieuse : nettement plus discrète qu'une broche air-cooled ou qu'un routeur de défonçage, ce qui change la vie en atelier.
  • Couple à basse vitesse : 0.875 N·m permet d'usiner correctement à 6000-12000 tr/min sans perdre toute la puissance (les routeurs perdent énormément de couple en dessous de leur régime nominal).
  • Pilotage par VFD via RS485 : la vitesse de broche se commande depuis LinuxCNC en G-code (M3 S12000), pas avec une molette manuelle. Contrôle précis et reproductible.
  • Durée de vie : roulements et bobinages conçus pour un usage continu, pas pour des sessions courtes comme un défonçeur grand public.
  • Précision : runout (faux-rond) très inférieur à un routeur défonçeur standard.

Le wiki PrintNC déconseille fortement les broches Vevor car certains modèles utilisent des roulements inadaptés à un montage CNC. Les G-Penny "metal cutting" sont parmi les modèles recommandés par la communauté.

---

Câblage et électronique
Chemin de cables
Chemin de cables
Arriere du boitier élèctrique
Arriere du boitier élèctrique

Carte Flexi-HAL

Carte d'interface conçue par Expatria, exécutant le firmware Remora. Elle communique avec le Raspberry Pi par bus SPI et généré les impulsions de pas en matériel (plus stable qu'une génération logicielle). Le firmware se flashe via DFU avec l'outil dfu-util.

Point important — logique active basse : la carte lit ses entrées en logique active basse. Une entrée au repos est à l'état TRUE et passe à FALSE quand elle est activée. Chaque entrée dispose aussi de sa version inversée (.not) directement utilisable dans le HAL. C'est essentiel pour câbler correctement la logique (voir la section Dépannage).

Carte FlexiHal avec le Raspberry pi 5 branché dessus
Carte FlexiHal avec le Raspberry pi 5 branché dessus

Alimentations et tensions

  • 48 V : moteurs (via les drivers CL57T).
  • 24 V : logique, contacteur, rail des sorties auxiliaires (relais), capteurs de fin de course inductifs.

Point important — liaison des masses : le GND (masse) des deux alimentations 48 V est relié ensemble par un fil, afin d'établir une référence commune pour les drivers CL57T. Sans cette liaison, les niveaux logiques des signaux de pas entre la carte FlexiHAL (alimentée en 24 V) et les drivers (alimentés en 48 V) peuvent être instables ou mal interprétés. Un seul fil entre les deux bornes GND suffit.

Respecter les masses communes.

Boitier electique
Boitier electique
face avant du boitier électrique, avec affichage vitesse
face avant du boitier électrique, avec affichage vitesse

Sorties auxiliaires (relais)

Boitier relais en cours de montage
Boitier relais en cours de montage

Quatre sorties AUX pilotent des relais 24 V. Chaque relais est commandable de DEUX façons, combinées par un composant logique or2 (OU) : par le G-code (M64/M65) ET par un bouton dans QtDragon. Le relais est actif si l'une OU l'autre source le demande.

SortiePin G-codeBouton QtDragonAffectation
AUX0motion.digital-out-00qtdragon.aux0Aspirateur
AUX1motion.digital-out-01qtdragon.aux1Lumière
AUX2motion.digital-out-02qtdragon.aux2Pompe a eau
AUX3motion.digital-out-03qtdragon.aux3Libre (réserve)

Câblage retenu (modules relais en activé HIGH, jumper sur H) :

  • Borne + du bornier AUX vers DC+ du module.
  • Pont court DC+ vers IN sur le module (c'est ce pont qui commande le relais).
  • Borne - du bornier AUX vers DC- du module.

Le rail AUX qui fournit le + est alimente par le jumper P17 positionne sur MAIN (= 24 V). Sans cette alimentation, la borne + sort 0 V et rien ne fonctionne. Ne jamais peupler P17 ET une alimentation externe en même temps. Limites : 1000 mA combines pour les 4 AUX, résistance de bobine des relais >= 150 Ohm.

Point important — NUM_DIO obligatoire : la ligne NUM_DIO = 4 doit être présente dans la section [EMCMOT] de l'INI. Sans elle, les pins motion.digital-out sont ignorées silencieusement et le G-code M64/M65 reste sans effet.

Arrosage et brouillard

Sorties dédiées du firmware (indépendantes des AUX) :

  • M8 : arrosage (COOLANT) ON
  • M7 : brouillard (MIST) ON
  • M9 : coupe les deux

Palpeur d'outil

Palpeur fixe (tool setter) monte sur la table, aux coordonnées machine G53 X-50 Y60. Gere via l'interface VersaProbe de QtDragon. Sert a mesurer automatiquement la longueur des outils lors d'un changement.

Télécommande filaire (en cours de mise au point)

Télécommande 3 boutons sur connecteur RJ45 : CYCLE START, HOLD (feed hold), HALT (arrêt). A ce jour seul HALT répond physiquement ; CYCLE START et HOLD ne changent pas d'etat a l'appui (câblage / brochage RJ45 a vérifier). A documenter une fois résolu.

Paramètres du VFD (HuangYang)

Le variateur de fréquence (VFD) HuangYang 2.2 kW pilote la broche G-Penny ER20. Il est contrôlé par LinuxCNC via une liaison série RS485 (protocole HYComm propriétaire HuangYang, pas du Modbus standard) avec le composant hy_vfd. Les paramètres ci-dessous sont ceux configurés sur cette machine, lus directement depuis le VFD.

Paramètres moteur (plaque signalétique de la broche)

ParamètreValeurDescription
PD141220 VTension nominale moteur
PD1429 ACourant nominal moteur
PD1432Nombre de pôles moteur
PD1443000 tr/minVitesse nominale à 50 Hz

Avec 2 pôles et une fréquence max de 400 Hz, la broche atteint 24000 tr/min (400 × 60 / 1 paire de pôles).

Paramètres de fréquence et tension

ParamètreValeurDescription
PD004400 HzFréquence de base
PD005400 HzFréquence max
PD0062.5 HzFréquence intermédiaire
PD00720 HzFréquence min (torque boost)
PD008220 VTension max
PD00924 VTension intermédiaire
PD0109 VTension min
PD0110 HzFréquence min de fonctionnement

Rampes et porteuse

ParamètreValeurDescription
PD0143 sTemps d'accélération
PD0153 sTemps de décélération
PD0724 kHzFréquence porteuse PWM

Paramètres de communication RS485

ParamètreValeurDescription
PD0022Source de la fréquence (2 = RS485)
PD0032Source des commandes run (2 = RS485)
PD1631Adresse de communication (esclave Modbus)
PD1641Baud rate (9600 bps)
PD1653Format des données (8N1 RTU)

Point important — communication HuangYang : pour piloter le VFD depuis LinuxCNC, PD002 et PD003 doivent être à 2 (commande par le port série). Le câble RS485 doit relier les bornes A+ et B- du VFD à l'adaptateur RS485 du Raspberry Pi. Le protocole est le HYComm propriétaire HuangYang (géré par le composant hy_vfd), pas du Modbus RTU standard — un script Modbus classique ne communiquera pas avec ce VFD.

Connexion HAL

Le VFD est chargé dans remora-flexi.hal par le composant hy_vfd :

loadusr -Wn vfd hy_vfd -n vfd -d /dev/ttyAMA2 -p none -r 9600 -s 1
setp vfd.enable 1
net spindle-speed-cmd vfd.speed-command <= spindle.0.speed-out
net spindle-speed-fb spindle_fb_scale.out => spindle.0.speed-in
net spindle-at-speed vfd.spindle-at-speed => spindle.0.at-speed
net spindle-forward vfd.spindle-forward => spindle.0.forward
net spindle-on vfd.spindle-on => spindle.0.on

Note : le port est /dev/ttyAMA2 sur Raspberry Pi 5 (et /dev/ttyAMA3 sur Pi 4).

Outil de lecture des paramètres (open source)

Pour lire tous les paramètres du VFD sans les recopier un par un sur le petit écran, j'ai développé un script Python qui communique directement en HYComm sur le port RS485 : il interroge les paramètres PD000 à PD189, valide chaque réponse (CRC16 + écho du numéro de paramètre) et enregistre le tout dans un fichier texte.

Le script est disponible librement sur GitHub : github.com/atelierduverdier/huanyang-vfd-reader

Point important : il faut arrêter LinuxCNC avant de lancer le script, car le composant hy_vfd occupe le port série tant que LinuxCNC tourne. Le script est en lecture seule et ne modifie aucun paramètre du VFD. C'est cet outil qui a servi à relever les valeurs documentées ci-dessus.

Configuration LinuxCNC

Organisation des fichiers

La configuration vit dans ~/linuxcnc/configs/flexi-hal/ et est versionnée sur GitHub : github.com/atelierduverdier/printnc-config. Fichiers principaux :

  • remora-flexi.ini : configuration générale (axes, vitesses, broche, palpeur).
  • remora-flexi.hal : chargement des composants et câblage logique (HAL principal).
  • custom_postgui.hal : câblage des éléments qui n'existent qu'après le chargement de l'interface (boutons).
  • postgui_call_list.hal : liste des fichiers postgui a charger.
  • qtvcp/screens/qtdragon_hd/ : copie locale de l'écran (fichier .ui + handler Python), pour personnaliser l'interface sans toucher l'ecran système.
  • subroutines/ : macros G-code (toolchange.ngc, reset_ref, set_mode_martyre, set_mode_piece, etc.).

Cinematique

JOINTS = 4, KINEMATICS = trivkins coordinates=XYZY. L'axe Y est en tandem : deux moteurs (JOINT_1 = Y1 et JOINT_3 = Y2), homes ensemble pour garder le portique parallèle. Le scale négatif de Y2 compense le sens de rotation inverse du moteur (pas un montage en miroir mécanique : les deux vis tournent dans le même sens, les deux patins avancent dans le même sens).

Résolution (scale, pas/mm)

  • X (JOINT_0) : -160.0 (1600 pas/tour, vis pas 10 mm, signe négatif = sens inverse)
  • Y1 (JOINT_1) : 160.0
  • Y2 (JOINT_3) : -160.0 (négatif pour inverser le sens de rotation du moteur, afin que les deux patins Y avancent dans le même sens quand les vis tournent dans le même sens)
  • Z (JOINT_2) : 400.0 (1600 pas/tour, vis pas 4 mm)

Vitesses

  • X et Y : 8000 mm/min (133.33 mm/s), STEPGEN_MAXVEL 160.
  • Z : 33.33 mm/s, STEPGEN_MAXVEL 100.

La vitesse X/Y a été poussée a 10000 mm/min lors des essais (sans perte de pas, latence du Pi excellente) mais ramenée a 8000 pour le confort sonore et thermique : a haute vitesse les moteurs perdent du couple (rattrape par la boucle fermée) et chauffent. Facteur limitant théorique pour aller plus haut : la vitesse critique de fouettement des vis SFU1610 sur ~1.3 m.

Timings d'impulsion

STEPLEN = STEPSPACE = 2500 ns sur tous les axes. C'est la durée de l'impulsion de pas et le repos minimum entré deux impulsions. 2500 ns est une valeur sûre pour les drivers CL57T. Point important — timings Y identiques : les deux moteurs Y (Y1 et Y2) doivent avoir des timings STEPLEN/STEPSPACE identiques, indispensable pour un portique tandem synchrone. Un écart provoquerait une désynchronisation progressive du portique.

Limites de course logicielles

  • X : -50 a 1240 mm
  • Y : -2 a 1286 mm (position HOME a 1275)
  • Z : -185 a 5 mm (HOME de sécurité a 0)

Homing (référencement)

Point important — séquence de homing : Z monte EN PREMIER (HOME_SEQUENCE 0) pour dégager l'outil, puis X et Y se référencent ensemble (HOME_SEQUENCE -1). Ne jamais inverser cet ordre. Capteurs inductifs NPN NC.

Environnement de developpement et simulation

Un PC x86_64 sous Debian sert au développement de l'interface en simulation, synchronise au Pi par git. Une configuration de simulation (remora-flexi-sim.ini et fichiers associes) remplace la carte Flexi-HAL (SPI) et le VFD par des équivalents simules : on peut travailler l'interface QtDragon sans la machine réelle. Le fichier d'interface .ui est partage entré les deux machines.

Sauvegarde et synchronisation (git)

Règle d'or git : git pull en arrivant sur une machine, push en partant. Un script push-config (range hors dépôt) demande un message puis fait add + commit + push. L'authentification GitHub se fait par token personnel (le mot de passe n'est plus accepte). Un .gitignore exclut les fichiers propres a chaque machine (linuxcnc.var, qtdragon.pref, fichiers temporaires).

Utilisation

Procédure de démarrage

1. Mettre la machine sous tension (armoire, contacteur). 2. Lancer LinuxCNC avec la configuration remora-flexi.ini. 3. Déverrouiller l'arrêt d'urgence, puis mettre la machine sous puissance (bouton MACHINE ON). 4. Lancer le homing : le Z monte d'abord, puis X et Y se référencent ensemble. 5. La machine est prête : on peut charger un programme ou passer des commandes MDI.

Procédure d'arrêt

1. Ramener la broche en position haute et sûre si besoin. 2. Couper la broche (M5) et l'arrosage (M9). 3. Mettre la machine hors puissance, enclencher l'arrêt d'urgence. 4. Fermer LinuxCNC, couper l'alimentation générale.

Commandes MDI predefinies (onglet MAIN)

  • Goto User Zero : monte le Z en sécurité puis va au zero pièce (G0 Z25 ; X0 Y0 ; Z0).
  • Goto Machn Zero : retourne a l'origine machine (G53).
  • Reset Ref : remet les variables #1000 et #1002 a zero avant un nouveau job.
  • Mode Martyre : sélectionne le mode Z zéro sur le martyre (#1001 = 0).
  • Mode Pièce : sélectionne le mode Z zéro sur la pièce (#1001 = 1).

Changement d'outil

Changement MANUEL avec palpage AUTOMATIQUE de la longueur d'outil. Déclenche par M6 (REMAP vers le script toolchange.ngc). Deux modes :

  • Mode martyre (#1001 = 0) : le Z se met a zero automatiquement sur le martyre.
  • Mode pièce (#1001 = 1) : le Z se met a zero sur le dessus de la pièce.

Le premier outil de la session sert de référence (variables #1000 et #1002). Le palpage se fait au palpeur fixe (G53 X-50 Y60), avec un double passage (rapide puis lent) pour la précision.

Boutons utiles de l'interface

  • Tool Sensor : lance la mesure de longueur d'outil au palpeur fixe.
  • Touch Plate : zero Z manuel sur la pièce a l'aide d'une plaque de touche conductrice.
  • Go to Sensor : amène la broche au-dessus du palpeur.
  • Aspirateur / Lumière / Pompe : commandent les relais AUX correspondants.

Codes utiles

  • M3 S<vitesse> : broche en marche (sens horaire) a la vitesse donnée. M5 : arrêt broche.
  • M64 P0..P3 / M65 P0..P3 : activé / désactivé une sortie AUX par G-code.
  • M7 / M8 / M9 : brouillard / arrosage / arrêt des deux.
  • OPT STOP : arrêt optionnel sur M1. OPT BLOCK : saut des lignes commençant par /.
Maintenance

Avant chaque utilisation

  • Vérifier qu'il n'y a pas de copeaux ou d'obstacle sur les rails et le palpeur.
  • Contrôler visuellement les chaînes de câbles et le circuit de refroidissement.
  • Faire le homing pour repartir d'une référence connue.

Periodiquement

  • Graissage des vis a billes et des rails linéaires (voir section Lubrification pour les quantités et le type de graisse).
  • Vérifier le serrage des vis de structure, SANS toucher aux réglages d'équerrage une fois etablis.
  • Contrôler le niveau et l'état du liquide de refroidissement de la broche.
  • Nettoyer le palpeur fixe (copeaux, poussière) pour garder des mesures fiables.
  • Vérifier la température des moteurs et des drivers après un usinage intensif.

Après un usinage long ou intensif

  • Laisser refroidir broche et moteurs.
  • Dépoussiérer l'armoire électrique et vérifier la ventilation.
  • Inspecter l'usure des outils et de la pince ER20.

Réglé d'or de l'équerrage

Point important — équerrage avant serrage : ne jamais serrer définitivement les vis de structure avant d'avoir réglé l'équerrage. La mise en butée et les réglages se font avant le serrage final.

Lubrification

Type de graisse

Vis a billes et rails linéaires (copies de HIWIN) : graisse blanche au lithium tout usage, consistance NLGI 2. Point important : elle ne doit PAS contenir de particules solides (bisulfure de molybdène MOS2, graphite). Ces additifs endommagent les billes des rails et des vis. Selon la norme DIN51502, chercher une référence type KP2K ou K2K : K initial = graisse pour roulements (obligatoire), 2 = consistance NLGI 2, et surtout aucune lettre F (qui indiquerait des particules solides).

Quantites par relubrification

  • Rails linéaires : 0.5 cm3 par patin.
  • Vis a billes SFU1204 (axe Z) : 0.2 cm3.
  • Vis a billes SFU1610 (axes X/Y) : environ 0.8 cm3 (valeur donnée pour 1604, très proche).

En général, un coup de pompe par roulement suffit.

Première lubrification et fréquence

Lubrification initiale : graisser, déplacer le chariot au moins 2 fois sa longueur, répéter 2 fois (ou plus tant qu'aucune trace de graisse n'apparaît sur le rail). Les rails HIWIN se re-lubrifient en principe tous les 100 km parcourus, a adapter selon l'intensité d'usage.

Précautions

Les graisseurs (zerk) se cassent facilement : ne pas forcer avec une pompe a levier. Un coupleur a verrou rapide facilite la mise en place. Sous 60 m/min la graisse convient ; au-delà il faudrait une huile haute viscosité (32 a 150 cSt).

Équerrage (squaring)

L'équerrage garantit que les axes X et Y sont perpendiculaires. Plusieurs méthodes existent.

Méthode 3-4-5

Utilise un triangle rectangle 3-4-5. Choisir une unité donnant le plus grand triangle possible sans dépasser les dimensions de la machine. Depuis un point de départ (zéro X/Y), avancer de 3 unités sur un axe (point 2), puis de 4 unités sur l'autre (point 3). Mesurer les cotes : A et B confirment que les pas/mm sont corrects, l'hypoténuse C (doit valoir 5 unités) confirme l'équerrage. Si C ne correspond pas, ajuster les butées de l'axe Y et recommencer.

Methode des 3 pins

Attention — couper l'alimentation des drivers avant de débrancher ou rebrancher un moteur. Percer 3 trous en triangle dans une planche posee sur le martyre. Mettre 2 forets comme pions de centrage, retourner la planche selon l'axe X, la reposer sur les pions. Revenir a la position notee : si le portique n'est pas d'equerre, le 3e foret ne s'aligne pas. Debrancher le moteur Y2 (droit), déplacer le côté gauche du portique jusqu'a l'alignement parfait. La différence de position vaut 2 fois le défaut : diviser par 2 et entrer cette valeur comme offset Y1.

Tramming (perpendicularite Z et broche)

Point important — Z ET broche : il faut à la fois mettre le Z d'équerre ET trammer la broche. Une broche parfaite par rapport à la pièce ne suffit pas : si le Z est de travers, un perçage donnera un ovale (mouvement latéral pendant la plongée).

Surface de référence

Partir d'une surface bien plane (verre float, par exemple une vitre de plateau d'imprimante 3D). Fixer un comparateur sur le chariot Z, descendre au contact, déplacer la machine sur le verre et caler avec des shims jusqu'a ce que la surface soit de niveau.

Z autour de X (le nod, hochement)

Comparateur parallele au plan et a l'axe Y, equerre sur la surface de référence. Monter lentement le Z le long de l'equerre, observer la variation. Pour ajuster : desserrer les 4 boulons reliant l'equerre alu au chariot X inférieur, utiliser la vis centrale pour pousser la plaque, resserrer une fois le Z parallele.

Z autour de Y

Desserrer les 4 vis serrant la plaque alu sur le rouleau X supérieur et les 4 boulons sur l'equerre inferieure. La plaque pivote autour de la tête de boulon centrale. Utiliser les vis de la barre de tram a l'arriere pour faire pivoter la plaque jusqu'au parallelisme, puis resserrer.

Broche

A refaire a chaque tramming du Z. Monter une barre de tram dans la pince, tenant un comparateur. Centrer la broche au-dessus du verre, faire tourner le comparateur en cercle : la broche est bien trammee quand la valeur est identique avant/arriere et gauche/droite. Ajuster avec les vis de la pince (M5 pour pousser, M6 pour serrer) et les vis d'epaulement de la plaque de tram.

Depannage

CYCLE_START en boucle : le programme redemarre seul, Stop ne tient pas

Vérifier la polarite de l'entrée dans halshow. Si flexi.input.CYCLE_START est FALSE au repos / TRUE en appui (actif HAUT), ne PAS utiliser .not dans le HAL. Le .not resterait TRUE en permanence et relancerait halui.program.run en boucle dès que la machine repasse idle.

GO HOME refuse avec "would exceed joint 0's negative limit" alors que les limites sont correctes

Vérifier halui.program.pause dans halshow : si elle est bloquee a TRUE, la machine se croit en pause et refuse les mouvements. Faire Resume pour debloquer. Cause possible : même bug de polarite que CYCLE_START sur l'entrée FEED_HOLD/HOLD (vérifier si .not est utilise alors que l'entrée est FALSE au repos).

Cette erreur GO HOME peut aussi venir d'un offset G54 incoherent

Si program.pause est normal mais que GO HOME (ou le debut d'un G-code) sort des limites des la ligne X0/Y0, vérifier l'offset G54 actuel (onglet Offsets). Refaire un touch off X/Y sur la pièce si l'offset ne correspond plus a la position reelle.

Télécommande RJ45 et carte de boutons locale en conflit

Si une carte de boutons locale (avec LEDs) est cablee en parallele d'une télécommande RJ45 sur les mêmes entrées, les niveaux logiques peuvent être perturbes (SYS/ST, HOLD concernes ici). Solution rapide : deconnecter les sorties concernees de la carte locale, garder uniquement le RJ45. Pour faire coexister les deux proprement, ajouter une logique or2 de decouplage comme pour les sorties AUX0-3.

M64/M65 sans effet sur les relais

Vérifier que NUM_DIO = 4 est présent dans [EMCMOT] de l'INI, sinon les pins motion.digital-out sont ignorees silencieusement.

Relais qui ne reagissent pas

Vérifier que le rail AUX est alimente (jumper P17 sur MAIN = 24 V). Un jumper P17 defectueux fait que la borne + sort 0 V. Vérifier aussi la coherence des jumpers de modules (tous sur H pour de l'activé HIGH).

Message EMC_TASK_PLAN_PAUSE au démarrage

La carte lit ses entrées en logique activé basse. Utiliser flexi.input.FEED_HOLD.not (et non FEED_HOLD direct) dans la logique Hold du HAL, sinon halui.program.pause est force a TRUE en permanence et une pause est demandee au démarrage. Vérifier avec : halcmd show pin halui.program.pause (doit être FALSE au repos).

Bouton GO HOME : erreur a haute vitesse

Le calcul du delai d'attente (calc_mdi_move_wait_time dans le handler) ignore le temps d'accélération/décélération. A haute vitesse, le WAIT expire avant la fin du mouvement. Solution : augmenter wait_buffer_secs (de 1 a 4) dans le handler.

Erreurs page_allocator et gel au démarrage

Le widget web QtWebEngine de QtDragon (page HTML de l'onglet SETUP, non utilisee) plante au démarrage. Le supprimer dans Designer (garder PDF et PROPERTIES) et proteger son initialisation dans le handler avec hasattr.

Preview G-code qui ne chargé plus

Vérifier que le script toolchange.ngc ne contient pas de M6 (recursion infinie), ni de M2/M30 dans un bloc IF (casse la preview). Utiliser #<_selected_tool> et non #5400 pour récupérer l'outil demande.

Bruit moteur et perte de couple a haute vitesse

Symptome de la limite physique du couple a haute vitesse (rattrapee par la boucle fermee, accentuee par la chaleur). Redescendre la vitesse (ici 8000 mm/min) ameliore le confort et la fiabilite. Vérifier aussi le réglage des DIP switches de courant sur les drivers.

Perte de pas

Avec des moteurs en boucle fermee, une vraie perte de pas est rare (le driver corrige). En cas de décalage : vérifier l'accouplement vis/moteur, les timings STEPLEN/STEPSPACE, et que la vitesse/accélération ne depasse pas les capacites mecaniques.

Précision attendue (PrintNC)

La précision typique d'une PrintNC se situe entre 0.03 et 0.1 mm. Elle dépend du matériau usiné, de la qualité de l'équerrage et de l'alignement, et du temps investi sur chaque pièce. C'est une machine de type routeur a portique, orientée bois et aluminium (et acier a l'occasion), idéale pour des profils plats de grande surface (environ 110 mm de dégagement en Z). Pour des petites pièces a très haute précision, une autre architecture serait plus adaptée.

Glossaire

LinuxCNC et HAL

  • HAL (Hardware Abstraction Layer) : couche logicielle qui connecte les composants logiciels entre eux et avec le matériel. On y définit les connexions via des fichiers .hal.
  • REMAP : mécanisme LinuxCNC permettant de remplacer un code G ou M standard par un script personnalisé. Exemple : REMAP=M6 redirige le changement d'outil vers toolchange.ngc.
  • MDI (Manual Data Input) : mode de saisie manuelle de commandes G-code, ligne par ligne, sans charger de programme.
  • Feed Hold : mise en pause de l'avance (pas de la broche). Le programme peut reprendre exactement où il s'est arrêté.
  • Homing : procédure de référencement — la machine se déplace vers ses capteurs de fin de course pour établir une position d'origine connue.
  • G53 : coordonnées machine absolues (indépendantes du zéro pièce). Utilisées pour les positions fixes comme le palpeur ou l'ATC.
  • G54 : premier système de coordonnées pièce (Work Coordinate System). C'est le zéro pièce que tu définis avec le touch off.
  • Touch off : opération qui définit le zéro pièce (G54) à la position actuelle de la machine.
  • QtDragon HD : interface graphique (écran de contrôle) de LinuxCNC utilisée sur cette machine. Basée sur Qt/PyQt5.
  • postgui HAL : fichier HAL chargé après l'interface graphique, nécessaire pour connecter les boutons de l'interface aux signaux HAL.

Mécanique

  • SFU : désignation des vis à billes à écrou simple (Single Fixed Unit). Ex : SFU1610 = 16 mm de diamètre, 10 mm de pas.
  • HGR20 : rail de guidage linéaire de 20 mm de largeur, avec patins HGH ou HGW.
  • BK / BF : supports de palier pour vis à billes. BK = côté motorisé (fixe), BF = côté libre (flottant).
  • Tandem Y : configuration avec deux moteurs pilotant le même axe Y en parallèle, pour entraîner les deux côtés du portique simultanément.
  • Martyre : planche sacrificielle posée sur le plateau de la machine, sur laquelle on fixe les pièces à usiner. Elle absorbe les passes trop profondes.
  • Tramming : opération de mise à l'équerre de la broche par rapport au plateau — vérification que la broche est bien perpendiculaire à la surface d'usinage.

Électronique

  • FlexiHAL : carte d'interface CNC conçue par Expatria, exécutant le firmware Remora. Elle communique avec le Raspberry Pi via SPI.
  • Remora : firmware open source pour microcontrôleur qui transforme une carte comme la FlexiHAL en interface temps réel pour LinuxCNC.
  • CL57T : driver de moteur pas à pas en boucle fermée. Reçoit les impulsions de pas de la carte et corrige la position grâce à l'encodeur du moteur.
  • NPN NC : type de capteur inductif. NPN = transistor NPN (sortie vers la masse), NC = Normalement Fermé (le circuit est fermé au repos, s'ouvre à la détection).
  • VFD (Variable Frequency Drive) : variateur de fréquence, aussi appelé variateur de vitesse. Contrôle la vitesse de rotation de la broche en faisant varier la fréquence du courant alternatif.
  • RS485 : protocole de communication série différentiel, utilisé ici pour contrôler le VFD depuis LinuxCNC (protocole Modbus RTU).
  • or2 : composant HAL qui réalise un OU logique à deux entrées. Utilisé pour combiner deux sources de commande (bouton ET G-code) sur une même sortie.
  • AUX : sorties auxiliaires de la FlexiHAL (AUX0 à AUX3), utilisées pour piloter des relais (aspirateur, lumière, pompe...).

G-code

  • M6 : code de changement d'outil. Sur cette machine, redirigé par REMAP vers toolchange.ngc qui gère le palpage automatique.
  • M64 / M65 : active / désactive une sortie numérique (digital output). Ex : M64 P0 active AUX0.
  • M7 / M8 / M9 : brouillard / arrosage / arrêt des deux.
  • G38.2 : cycle de palpage — déplace l'outil jusqu'au contact d'une surface et enregistre la position. Déclenche une erreur si pas de contact.
  • G43 Hx : active la compensation de longueur d'outil numéro x. Sur cette machine, géré automatiquement par toolchange.ngc après palpage.
  • G90 / G91 : mode de coordonnées absolues / relatives (incrémentales).
  • G64 P0.03 : mode de suivi de trajectoire avec tolérance de 0.03 mm. Lisse les angles pour maintenir la vitesse d'avance.