CNC Amateurs
Vers le flux RSS
Vous êtes ici : Accueil > Les machines et prototypes de CNC
Retour vers le haut !

CNC 1816


Par Steph, publié le

Pour faire mes débuts en CNC, je me suis procuré un petit modèle (20 cm x 20 cm), en provenance du pays du soleil levant...

Ce châssis en PVC est fourni avec 3 moteurs pas-à-pas de type NEMA 17 et une broche ER11 300 W. Aucune électronique n'est livrée avec la CNC.

Nous nous occuperons donc dans cet article, uniquement de la partie électronique et logiciel.

Présentation

Matériel

Pour faire mes débuts en CNC, je me suis procuré un petit modèle (20 cm x 20 cm), en provenance du pays du soleil levant...

Ce châssis en PVC est fourni avec 3 moteurs pas-à-pas de type NEMA 17 et une broche ER11 300 W. Aucune électronique n'est livrée avec la CNC.

Nous nous occuperons donc dans cet article, uniquement de la partie électronique et logiciel.

 

Réalisation petite CNC

 

Pour faire fonctionner ce petit matériel, il va nous falloir une alimentation, un Arduino, un shield équipé de trois drivers pour moteur pas-à-pas et quelques composants plus un variateur PWM commandé par GRBL, pour la broche.

 

Logiciel

J'ai choisi GRBL qui interprète les lignes de Gcode et pilote une CNC de manière très simple en lien avec Arduino. GRBL est embarqué directement dans l'Arduino.

Le pilotage via un PC se fait par Universal Gcode Sender qui permet d'envoyer du Gcode facilement à la machine.

Par ailleurs, j'utilise Inkscape qui est logiciel de dessin vectoriel accompagné de l'extension Inkscape Generate Laser Gcode, qui transforme le croquis en gcode.

Pour finir CAMotics me permet de simuler l'usinage sur le PC sans avoir à raccorder la machine.

 

Description

Matériel

L'alimentation

La CNC nécéssite trois alimentations fournissant respectivement :

  • 60 V AC et 6 A pour alimenter la broche 300 W.
  • 24 V DC et 2 A pour alimenter les moteurs pas-à-pas.
  • 10 V DC pour alimenter l'Arduino.

Le 10 V DC est simplement généré via un convertisseur Buck  Step Down, depuis le 24 V DC.

 

L'arduino

N'importe quel Arduino peut être utilisé. Cela dit, le shield choisit est fabriqué pour recevoir un modèle Arduino Nano, c'est donc bien entendu un Nano qui sera utilisé.

 

Le shield CNC

Le shield est un modèle dit V4.0 accueillant un Arduino Nano et trois drivers pour moteurs pas-à-pas, de type A4988 ou DRV8825

Ce shield embarque toutes les broches nécessaires à la connexion de la CNC et de ses périphériques.

Un détail qui a toute son importance ! La carte est conforme à l'utilisation de GRBL v0.8, mais du fait du développement les broches D11 et D12 sont à inverser si on utilise GRBL v0.9. Ici nous utiliserons GRBL v0.9 donc il y aura inversion des broches.

 

 

Le shield CNC V4.0

 

 

Les drivers pas-à-pas

Voici un petit tableau comparatif des drivers A4988 et DRV8825 :

  A4988 DRV8825
Courant théorique max. 2A 2.5A
Nb. max. de micro pas 16 32
Couleur du PCB Vert ou rouge Violet
Ajustage du courant Oui, à côté de la broche DIR Oui, à côté de la broche Enable
Valeur type de RS 0.05Ω, 0.1Ω ou 0.2Ω 0.1Ω
Formule du Vref I max = Vref x (8 x Rs) I max = Vref x (5 x Rs)
Protection thermique Oui Oui
Nombre de couches PCB 2 4
Refroidissement acif Recommandé Recommandé

En raison du courant théorique, du nombre possible de micro pas et de la valeur de RS, j'ai opté pour le modèle DRV8825. D'autant plus que les tarifs sont tout à fait comparables.

 

Le variateur PWM

GRBL v0.9 supportant la variation de vitesse de la broche depuis le Gcode, j'ai opté pour la mise en oeuvre d'un variateur PWM.

le variateur PWM est en haut à gauche sur la photo ci-dessous. Le shield CNC V4.0 et les drivers DRV8825 en dessous du variateur. Puis dans l'ordre en partant du shield CNC V4.0 : l'Arduino Nano, le convertisseur Buck  Step Down et un des moteurs pas de type NEMA 17 (Ref. exacte : 17HS4401).

Matériel nécessaire pour la CNC

 

 

Les schémas

Les alimentations

 

Les alimentations de la petite CNC

 

Le schéma de câblage

 

Le schéma de câblage général

 

Les logiciels utilisés

Tous les programmes utilisés proviennent du monde "Open Source". Ils existent pour Windows, Linux et OS-X.

Sur votre PC, pour vous y retrouver plus aisément, créer un sous-dossier "Projets CNC" dans votre dossier de travail habituel. Vous pourrez y classer vos créations et les retrouver plus facilement.

Nous allons dans un premier temps les paramètrer et les installer.

 

Logiciel de dessin

Inkscape 0.92

Inkscape est un logiciel de dessin vectoriel que j’utilise pour ma part Windows 10 64bits. La version d’Inkscape à installer est la 0.92. Inkscape est traduit en français.

Pour Inkscape, pas de paramètrage, juste une installation.

Si vous avez déjà une version antérieure d’Inkscape sur votre PC il est important de la désinstaller au préalable et de ne pas conserver vos paramètres lorsque l’installateur de la version 0.92 vous le demande.

 

Logiciel de dessin vectoriel Inkscape

 

Logiciel de dessin vectoriel Inkscape

Lien de téléchargement : https://inkscape.org/en/release/0.92.2/

 

Inkscape Generate Laser Code

L’extension Inkscape Generate Laser Code permet de générer du Gcode à partir d’un objet Inkscape. Cette extension intégrée à Inkscape est traduite en Français.

Pour l’installation, il suffit de dézipper le fichier téléchargé dans le dossier "inkscape \ share \ extensions". Si des fichiers identiques existent, écrasez-les. Relancer Inkscape et vérifier la présence de l’extension dans l’onglet "extensions".

Comme vous pouvez le voir sur cette copie d’écran, il existe déjà dans la version 0.92 d’Inkscape une extension nommée "Gcodetools". Nous en reparlerons plus tard…  

 

Inkscape Generate Laser Gcode

 

Extension Inkscape Generate Laser Gcode

Lien de téléchargement : https://jtechphotonics.com/?page_id=1980

 

Simulateur

CAMotics 1.1.1

CAMotics est un logiciel Open-Source qui simule le fraisage ou la gravure CNC sur 3 axes. C'est un logiciel de simulation rapide, flexible et convivial.

Vous pourrez pré visualiser les résultats de votre opération de découpe avant même d'allumer votre machine.

Pour l’installation, il suffit de lancer un fichier exécutable et patienter. Le simulateur est en langue Anglaise et à ma connaissance pas de traduction existante…

 

Simulateur CNC CAMotics

 

Simulateur machine CNC : CAMotics

Lien de téléchargement : http://camotics.org/download.html

 

Console PC

UGS (Universal Gcode Sender)

Universal Gcode Sender est une console permettant d’envoyer le Gcode sur votre machine. C’est une application écrite en langage Java et elle ne nécessite pas d’installation spécifique. Pas de traduction disponible, langue Anglaise uniquement.

Dans un premier temps télécharger la version 1.0.9, puis effectuer les actions suivantes :

  • Créer un dossier "UGS" sur votre disque dur et placer y les 4 fichiers inclus dans le ZIP.
  • Connecter votre Arduino à votre PC via l’USB.
  • Sous Windows, lancer le fichier "start-windows.bat".
  • Dans UGS choisissez le port et sélectionner la vitesse de transmission, puis cliquez sur le bouton "Open".
  • Ouvrez l’onglet "Machine Control", le panneau de commande est prêt !

 

Console universal Gcode sender

 

Console CNC Universal Gcode Sender

Lien de téléchargement : https://winder.github.io/ugs_website/download/

 

Gestion machine

GRBL 0.9j

GRBL est un firmware embarqué sur un Arduino. Il analyse le Gcode qu'on lui envoi et exécute des actions en envoyant des instructions haute fréquences aux moteurs pas-à-pas.

GRBL ne comporte pas d'interface utilisateur comme d'autre logiciels CNC. Nous allons donc exécuter UGS sur un PC qui interagira avec l'Arduino. La liaison entre les deux logiciels se fait par câble USB, ce qui est un peu contraignant... Dans une prochaine mise à jour de cet article, je rajouterai une interface Wifi entre le PC et l'Arduino.

Nous installerons la version 0.9j de GRBL. Il est bien entendu écrit en langage Arduino qui est un langage proche du C et du C++.

Après avoir téléchargé GRBL, décompresser le dossier "grbl" contenu dans le fichier zip, dans le dossier "/libraries/" du programme Arduino.

 

Arborescence disque de GRBL

 

Emplacement de GRBL sous Arduino

Lien de téléchargement : https://github.com/grbl/grbl

 

Configuration de GRBL

Avant de "téléverser" GRBL dans votre Arduino, certains paramétrages s’imposent.

Le fichier "grbl.h"

Ce fichier est situé dans "/libraries/grbl" de votre dossier d’installation Arduino.

"grbl.h" est le fichier qui synthétise tous les appels aux autres fichiers en procédant à des "include".

Dans l’aperçu ci-dessus, on voit les premières lignes (Non commentées) de ce fichier. C’est aussi ce fichier qui donne les éléments sur la version utilisée.

 

Extrait du fichier "grbl.h"

 

Extrait du fichier "grbl.h"

 

Le fichier "config.h"

Ce fichier est situé dans "/libraries/grbl" de votre dossier d’installation Arduino.

C’est ici que le paramétrage de GRBL en accord avec votre machine va avoir lieu. Il est donc important d’être très attentif à cette partie de l’installation.

C’est un fichier de 413 lignes mais avec beaucoup de commentaires. Ci-dessous ne sont représentées que les lignes méritant une éventuelle modification.  Les lignes commençant par deux barres obliques (slasches) sont commentées et donc invalidées. il suffit d'ôter les "slashes" pour qu'elles deviennent valides.

 

#define BAUD_RATE 115200
// #define LIMITS_TWO_SWITCHES_ON_AXES
// #define INVERT_ALL_CONTROL_PINS 
#define VARIABLE_SPINDLE
#define SPINDLE_MAX_RPM 1000.0
#define SPINDLE_MIN_RPM 0.0

 

Dans le tableau ci-dessous, vous trouverez les raisons pour modifier ou non les lignes représentées ci-dessus, en fonction du matériel. 

Ligne Variable Notes
37 #define BAUD_RATE 115200 A modifier si vous rencontrez des soucis de communication le PC et l'Arduino.
112 // #define LIMITS_TWO_SWITCHES_ON_AXES A dé commenter si vous utilisez deux fins de courses en parallèle pour chaque axe, au lieu d'un à chaque extrémités. Avec mon shield, pas le choix donc je dé commente.
158 // #define INVERT_ALL_CONTROL_PINS On active si on désire utiliser des fin de courses "normalement fermé" en lieu et place des "normalement ouvert". Pour ma part, je laisse commenté car j'utilise des modèles "NO".
247 #define VARIABLE_SPINDLE On laisse activé si on utilise la fonction de variation de vitesse PWM.
254 #define SPINDLE_MAX_RPM 1000.0 On détermine ici la vitesse minimum de la broche. Pour ma part : 12000.0
255 #define SPINDLE_MIN_RPM 0.0  Idem avec le minimum, donc 0.0 est correct.
Le fichier "report.c"

Ce fichier est situé dans "/libraries/grbl" de votre dossier d’installation Arduino.

Ici c’est juste pour le fun ! Mais attention aux erreurs suite à l’enlèvement inopportun d’un caractère obligatoire… Un point-virgule, des guillemets, une parenthèse… Et hop une erreur à la compilation ! Bref sauver le fichier d’origine avant toute manipulation.

Vous pouvez par exemple remplacer la ligne N° 151 :

printPgmString(PSTR("\r\nGrbl " GRBL_VERSION " ['$' for help]\r\n"));

 

Par celle-ci :

printPgmString(PSTR("\r\nMa petite CNC sous grbl " GRBL_VERSION " \r\n"));

 

Ce qui affichera en message d’accueil : "Ma petite CNC sous Grbl 0.9j".

Mais bon, cela ne sert pas à grand-chose… Par contre la modification de ce fichier vous permet de franciser tous les messages de la console.

 

Installation de GRBL

Une fois les fichiers modifiés par vos soins, il faut bien entendu recompiler tout ce petit monde. Pour cela, rien de bien compliqué :

  • Connectez votre Arduino à votre PC via l’USB.
  • Configurez le dans l’IDE Arduino (Type de carte et N° de port).
  • Ouvrir "Fichiers/exemples/grbl/grblUpload".
  • Cliquez sur la coche verte de vérification de code (En haut à gauche).
  • Si tout se passe bien, la barre du bas sera verte et vous aurez le message suivant :

Message compilation de GRBL

 

Il ne reste plus qu’à téléverser GRBL dans l’Arduino.

 

Paramétrage de GRBL

Maintenant que GRBL est chargé dans l'Arduino avec la bonne configuration, il reste à faire le paramétrage.

Dans GRBL, toutes les dimensions sont en millimètres. Si vous comptez en pouces, pensez à la conversion...

Le changement des valeurs des paramètres peut se faire des deux manières suivantes (Entre autres...).

 

Via UGS

Si UGS est déja installée on peut aussi utiliser son mode paramètrage. Connecter vous à l'Arduino, et cliquez sur "Paramètres/Paramètres Firmware/GRBL". Vous obtenez la fenêtre suivante :

 

Paramètrage GRBL via UGS

 

Double cliquez sur la valeur à changer, modifier la et faite enregistrer. Une fois terminé, fermer cette fenêtre, GRBL est paramètré.

 

Via l'IDE Arduino

La commande "$$" lancée depuis le terminal série donne ces données par défaut :

 

Résultat de la commande "$$" par défaut.

 

Taper sur la ligne de commande en haut de la fénêtre, le paramètre à changer et sa valeur. Par exemple : "$1=30". Puis cliquez sur le bouton "envoyer", le paramètres est changé. faites de même avec chaque paramètres à changer. A chaque fois taper "$$" afin de vérifier la prise en compte de la nouvelle valeur du paramètre.

 

Les paramètres à modifier 

Dans le tableau ci-dessous, vous trouverez les raisons pour modifier ou non les lignes représentées ci-dessus, en fonction du matériel. 

Paramètre Définition
100 Nombre de pas moteur par mm sur l'axe X - Suivant le moteur X et son entraînement.
101 Nombre de pas moteur par mm sur l'axe Y - Suivant le moteur Y et son entraînement.
102 Nombre de pas moteur par mm sur l'axe Z - Suivant le moteur Z et son entraînement.
130 Distance maximum de travail sur l'axe X - Excursion X de la machine.
131 Distance maximum de travail sur l'axe Y - Excursion Y de la machine.
132 Distance maximum de travail sur l'axe Z - Excursion Z de la machine.
110 Vitesse de déplacement maximum, pour le repositionnement, sur l'axe X.
111 Vitesse de déplacement maximum pour le repositionnement, sur l'axe Y.
112 Vitesse de déplacement maximum pour le repositionnement, sur l'axe Z.
22 Validation du cycle de "Homing". Tout ou rien.
24 Vitesse lente de détection exacte des fins de courses pendant le "homing".
25 Vitesse de déplacement jusqu'à l'enclenchement des fins de courses, pendant le "Homing".
26 Temps de "rebond" des contact électriques des fins de courses.
27  Distance de décalage de sécurité par rapport au déclenchement des fins de courses.

100 à 102 ⇨ Ces informations sont à calculer suivant le principe suivant

Ces paramètres définissent le nombre de pas moteur pour parcourir une distance de 1 mm sur l'axe concerné.

Le pas moteur est égal au nombre de pas par tour (360°) de votre moteur multiplié par le coefficient de votre driver moteur. Le nombre de pas par tour des moteurs "17HS4401" est de 200 (Angle d'un pas : 1,8°).

Les micros pas du driver DRV8825 sont ajustables entre 1 et 1/32ème par le positionnement des "jumpers" (Pour chaque driver) sur le shield.

Le nombre de mm par tour est la distance relative parcourue en translation par un écrou sur une vis lors d'un tour complet. Dans mon cas, mes entraînements sont des vis M8 normalisée avec un pas de 1,25 mm. Le nombre de pas par tour est de 1,25mm.

Pour obtenir le nombre de pas par mm (Valeur du paramètre) on divise le pas moteur par le pas d'entraînement, les valeurs possibles sont reportées dans le tableau suivant :

 

Micro pas DRV8825 Nombre de pas par millimètre
1 (200 x 1) / 1.25 = 160
1/2 (200 x 2) / 1.25 = 320
1/4 (200 x 4) / 1.25 = 640
1/8 (200 x 8) / 1.25 = 1280
1/16 (200 x 16) / 1.25 = 2560
1/32 (200 x 32) / 1.25 = 5120

A savoir : Plus le nombre de micros pas sélectionnés sur le driver est bas, moins le couple du moteur est élevé... Bref le moteur aura le meilleur couple possible avec un micro pas de 1.

Cela dit, il faut trouver un compromit. Dans le cas de cette mini machine entrainée par des vis M8 au pas de 1,25 mm, pas le choix seul le pas entier fonctionne... Donc les paramètres 100 à 102 seront à 160.

 

130 à 132 ⇨ Les dimensions de travail de votre machine sur les 3 axes

Pour ma machine les dimensions sont 200 mm pour l'axe X, 190 mm pour l'axe Y et 50 mm pour l'axe Z. Dimensions prises en gardant des marges de sécurité avant le déclenchement des butées de fin de course.

A personnaliser donc en fonction de la machine. En gardant une marge, les fins de courses ne devraient jamais être actionné :)

 

110 à 112 ⇨ Le taux maximum de déplacement en mm / mn

Cela sera bien utile sur des CNC d'une taille plus importante. Pour mon cas, je fixe le taux maximum des axes X et Y à 500 mm/mn et celui de l'axe Z à 250 mm/mn.

Je les retoucherai éventuellement plus tard, avec un peu d'expérience...

 

22 ⇨ Activation de la fonction "Homing"

le cycle de "Homing" permet à GRBL de définir un "point 0" et donc de pouvoir y revenir si problème. Il déplace en premier lieu l'axe Z vers le haut puis les axes X et Y en même temps jusqu'au point 0.

Pour le définir il utilise les fins de courses qui dans mon cas, sont les mêmes pour le "Homing" et les "Hard Limits".

Bref, on l'active ! Ce paramètre passe donc à 1.

 

24 ⇨ Vitesse lente du "Homing"

Pendant le premier cycle du "Homing"GRBL  recherche les fins de course à une vitesse plus élevée et après les avoir trouvés, il se déplace plus lentement pour détecter l'emplacement précis du zéro machine.

Le paramètre 24 définit cette vitesse plus lente.

Je conserve la valeur par défaut, à savoir : 25 mm/mn.

 

25 ⇨ Vitesse de recherche du "Homing"

C'est la vitesse plus élevée dont on parle ci-dessus. A régler pour obtenir une recherche rapide, mais pas trop afin de ne rien casser...

Là encore, je conserve la valeur par défaut, à savoir : 500 mm/mn.

 

26 ⇨ Temps de rebond des contacts électriques

Sur ma machine sont installés des "filtres" qui atténuent fortement le "rebond" des contacts électriques des fins de courses. je positionne donc ce paramètre à une valeur plus faible que celle par défaut : 10 ms.

 

27 ⇨ Distance de sécurité par rapport aux fins de courses

c'est la distance de sécurité que nous indiquons à GRBL afin qu'il n'y ait pas de déclenchement intempestif lors d'un cycle de "Homing".

Dans un premier temps je passe ce paramètres à 2mm.

 

Pour le moment je laisse les autres paramètres de côté. Toutefois, si vous voulez aller plus loin, vous pouvez visiter la page PARAMETRES du GRBL.

 

Les références techniques

Sites web et documents utiles

Wiki GRBL : https://github.com/grbl/grbl/wiki

Paramètres du GRBL : CNC amateurs

Universal Gcode Sender : https://winder.github.io/ugs_website/

CAMotics : http://camotics.org/

Datasheet  DRV8825 : http://www.ti.com/lit/ds/symlink/drv8825.pdf

 

Liens de téléchargement 

Inkscape 0.92 : https://inkscape.org/en/release/0.92.2/

Inkscape Generate Laser Gcode : https://jtechphotonics.com/?page_id=1980

CAMotics 1.1.1: http://camotics.org/download.html

Universal Gcode Sender 1.0.9 : https://winder.github.io/ugs_website/download/

Grbl 0.9j : https://github.com/grbl/grbl


Publié par Steph le : 03/12/2017 & mis à jour le : 12/01/2018
Mots-clefs : CNC, NEMA17, STEPPER, GRBL, UGS, DRV8825

Commenter l'article

2 commentaires

Beecham
le : 08 février 2018

    C'est un excellent "dossier ingénierie " très bien organisé et très professionnel. Autant sur le descriptif des besoins nécessaires que leur présentation multimédia . Simple et efficace deux qualités qui se perdent.

Répondre à ce commentaire

Steph
le : 08 février 2018

    Salut Beecham, merci pour ce com bien sympa :) @+, Steph

Participer à ce fil de commentaires


ACCUEIL - LE FORUM - NOUS CONTACTER - FLUX RSS - HAUT de PAGE
7284 visiteurs différents ont consulté CNC Amateurs
Il y a actuellement 1 visiteur(s) en ligne.
CNC Amateurs a été consulté 24733 fois au total