CNC Machine


Find Out More
Electronics - 15-03-2017

Project progression

70%

Introduction

Une machine CNC (computer numerical control - machine-outil à commande numérique) est un outil puissant permettant d'usiner des pièces avec toute la précision de commande d'un ordinateur. J'ai souhaité réaliser la mienne, principalement dans le but de graver des circuits imprimés. J'ai donc fixé les exigences suivantes:

  • La résolution d'impression doit être d'environ 0,1mm ;
  • Le coût doit se limiter à environ 65€ ;
  • L'aire de découpe doit être supérieure à 200x200x50mm dans un volume maximal de 300x300x300mm.

Dans cet article, je montrerais la construction, la configuration et les performances de ma graveuse CNC.

Matériaux utilisés

Voici la liste des matériaux utilisés dans ma machine :

  • Moteurs NEMA * 3 = 27$ (8,90$ unité)
  • Arduino Uno + CNC Shield = 10$
  • Interrupeurs de fin de course * 5 = 1,50$
  • Carré acier de 20x20mm * 3m = 15€
  • Tige filetée M8 * 1m = 1€
  • Quincaillerie = 1,50€ (sachet vrac)
  • Coupleurs moteur * 3 = 3$ (1$ unité)
  • Roulement LM8UU * 6 = 3$ (0,50$ unité)
  • Roulement 608 monté * 3 = 3$ (1$ unité)
  • Equerre de chaise de 70mm * 6 = 6€ (1€ unité)
  • Tige lisse de 6 ou 8mm = Gratuit (provient d'une imprimante)
  • Plaque d'aluminium/acier = Gratuit (provient d'un PC)
  • Carré alu. plein 20mm = Gratuit (origine inconnue)
  • Alim. 12V@10A = Gratuit (provient d'un PC)
  • Petit moteur DC12V = Gratuit (provient d'une visseuse)

Total : environ 65€ (dépend du cours de l'USD)

Conception

Avant de commencer la réalisation, j'ai fait la modélisation suivante sur SolidWorks.

Modélisation 3D de la machine.

Pour simplifier la modélisation, la visserie, les moteurs et l'électronique ne sont pas représentés.

Les trois axes sont construits exactement sur le même principe:

  • Deux tiges lisses de 8mm sont fixées de chaque coté avec des écrous/boulons. Le trou légèrement plus grand que le diamètre du boulon permet l'ajustement du parallélisme ;
  • La tige filetée centrale est fixé d'un coté au moteur avec un coupleur un et de l'autre à un roulement ;
  • Les roulements linéaires (LM8UU) qui permettent le glissement du plateau sur les tiges sont attachés au plateau avec un bloc imprimé en 3D : Bloc bearing.
  • Le bloc qui se visse sur la tige filetée pour déplacer le plateau est usiné en aluminium. J'aurais pu, plus simplement, l'imprimer de manière à mettre des écrous M8 captifs, mais j'ai préféré varier les techniques !

Cliquez ici pour télécharger l'archive contenant les fichiers du modèle aux formats Solidworks (format propriétaire) et STEP (format ouvert et standard ISO).

Construction mécanique

Cette partie ne sera pas un guide pas à pas, mais plutôt une suite d'étapes et de conseils pour construire une machine similaire.

Pour plus de détails, se référer au modèle 3D (sur lequel il est par exemple possible de prendre des mesures).

Axe Y

Axe Y.

L'axe Y est fait en déplaçant le plateau. Il est donc indépendant des deux autres axes. J'ai choisi cette configuration pour des raisons de simplicité. Le plateau une plaque d'aluminium de 240 par 260 mm simplement vissée sur les trois blocs.

Axe Z

L'axe Z est en deux parties :

  • Une plaque qui glisse sur l'axe X et qui ressemble à l'axe Y avec des dimensions réduites

Axe Z.

Axe Z.

  • Une seconde plaque qui porte le moteur et qui glisse sur la mécanique de la plaque précédente

Axe Z

L'axe Z est légèrement plus complexe à réaliser, car étant plus petit, une petite erreur d'alignement implique une grande erreur sur le parallélisme qui aura tendance à tout bloquer.

J'ai utilisé un moteur trouvé dans une petite visseuse. Le support du moteur est imprimé en 3D.

Axe X

Axe X.

La construction de l'axe X est identique. Ayant utilisé un carré de 20mm, j'ai dû couper pour faire passer le coupleur qui mesure 20mm de diamètre. Je ne recommande évidemment pas cette solution car il altère la solidité de l'ensemble. J'ai fait une petite plaque en aluminium pour visser le moteur qui elle même se visse sur les supports verticaux.

L'axe X est monté sur l'axe Y avec des équerres de chaise de manière à ce que l'axe du moteur soit pile au milieu de la machine.

Électronique

Contrôle

Pour le contrôle, l'approche choisie est particulièrement simple et standard : Arduino Uno, CNC Shield v3 et trois modules de contrôle de moteur pas-à-pas A4988. La partie circuit se résume donc à brancher les cartes en suivant les indications. Il faut tout de même faire attention aux polarités, il n'y a aucun "garde-fou".

Electronique.

La programmation de l'Arduino est elle aussi très simple : on utilise GRBL, un code conçu pour contrôler des machines CNC avec le matériel choisi. Il s'agit d'un standard, particulièrement bien fait, auquel il n'existe à ma connaissance pas réellement d'alternative. Pour l'installer, il suffit de :

  1. Télécharger la bibliothèque GRBL sur Github ;
  2. Dans le logiciel Arduino, ouvrir le menu Croquis -> Inclure une bibliothèque -> Ajouter la bibliothèque .Zip... et sélectionner le .zip téléchargé. Alternativement, on peut directement le décompresser dans le dossier Dossier_d'installation_d'Arduino/libraries.
  3. Dans le logiciel Arduino, ouvrir le code dans Fichier -> Exemples -> grbl -> grblUpload.
  4. Téléverser ce code sur l'Arduino Uno.

Alimentation

Le problème de l'alimentation est plus épineux : il faut une alimentation capable de fournir 12V à 7A, avec des pics directement de 0 à 7A. Ma solution est d'utiliser une alimentation de PC fixe. Il s'agit d'une solution que je ne recommande que si vous savez ce que vous savez ce que vous faites ; les condensateurs de découplage sont potentiellement chargés à plus de 300V, avec amplement assez d'énergie stockée pour être mortels!

L'alternative est d'acheter une "brique" d'alimentation 12V@10A.

Configuration et utilisation

Configuration

Pour configurer la machine, il faut s'y connecter en USB avec un moniteur série comme celui inclus dans le logiciel Arduino. La vitesse de transmission utilisée par GRBL est 115200 Baud. On peut alors envoyer des commandes, décrites ici. Voici ma configuration :

$0 = 10      (Step pulse time, microseconds)
$1 = 25      (Step idle delay, milliseconds)
$2 = 0      (Step pulse invert, mask)
$3 = 7      (Step direction invert, mask)
$4 = 0      (Invert step enable pin, boolean)
$5 = 0      (Invert limit pins, boolean)
$6 = 0      (Invert probe pin, boolean)
$10 = 1      (Status report options, mask)
$11 = 0.010 (Junction deviation, millimeters)
$12 = 10.000 (Arc tolerance, millimeters)
$13 = 0      (Report in inches, boolean)
$20 = 0      (Soft limits enable, boolean)
$21 = 0      (Hard limits enable, boolean)
$22 = 1      (Homing cycle enable, boolean)
$23 = 0      (Homing direction invert, mask)
$24 = 25.000 (Homing locate feed rate, mm/min)
$25 = 500.000 (Homing search seek rate, mm/min)
$26 = 250   (Homing switch debounce delay, milliseconds)
$27 = 1.000 (Homing switch pull-off distance, millimeters)
$30 = 1000  (Maximum spindle speed, RPM)
$31 = 0      (Minimum spindle speed, RPM)
$32 = 0      (Laser-mode enable, boolean)
$100 = 200.000  (X-axis travel resolution, step/mm)
$101 = 200.000  (Y-axis travel resolution, step/mm)
$102 = 200.000  (Z-axis travel resolution, step/mm)
$110 = 500.000  (X-axis maximum rate, mm/min)
$111 = 500.000  (Y-axis maximum rate, mm/min)
$112 = 600.000  (Z-axis maximum rate, mm/min)
$120 = 5.000    (X-axis acceleration, mm/sec^2)
$121 = 5.000    (Y-axis acceleration, mm/sec^2)
$122 = 5.000    (Z-axis acceleration, mm/sec^2)
$130 = 240.000  (X-axis maximum travel, millimeters)
$131 = 200.000  (Y-axis maximum travel, millimeters)
$132 = 55.000   (Z-axis maximum travel, millimeters)

Cette configuration s'écrit dans l'EEPROM et reste donc après extinction de la carte.

Utilisation

Pour utiliser la machine, il faut un logiciel de contrôle sur l'ordinateur hôte. J'utilise personnellement UGS Platform.

A suivre...

Author: Charles Grassin


What is on your mind?

  • No comments yet!

  Back to projects

Related articles