++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Shield CNC pour carte Uno ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ .. include:: volabid.rst :Date de création: 04/10/2025 :Date dernière maj: 04/10/2025 .. index:: pair: cnc; shield ==================================================================================================== Introduction ==================================================================================================== **Utilisation du CNC Shield pour Arduino.** .. image:: images/video-shield-cnc.png :width: 500 px :align: center :target: https://www.youtube.com/watch?v=DZcrrFcs4N4 Pour pouvoir gérer une machine comme une CNC ou une imprimante 3D ou une table traçante avec plusieurs moteurs pas-à-pas, il est intéressant d’avoir une carte qui facilite la connexion des différents éléments de la machine. C’est le rôle du shield CNC. Le Shield se place sur le microcontrôleur Arduino et les moteurs se branchent directement sur les broches de sorties des drivers. .. image:: images/ cnc-shield.png :width: 500 px :align: center .. index:: single: nema ==================================================================================================== Explications ==================================================================================================== .. index:: single: drv8825 .. index:: pair: cnc; shield .. image:: images/ cnc-shield+uno.jpg :width: 300 px :align: center Le CNC Shield V3 est une carte d’extension pour Arduino UNO ou Mega permettant de s’interfacer facilement à des contrôleurs de moteur pas-à-pas, type drv8825_. Il permet aussi de piloter et gérer les éléments nécessaires au fonctionnement d’une fraiseuse numérique (CNC). C’est-à-dire, des fins de course (end stops), ventilateur, etc ... .. _drv8825 : https://moteur-nema.bitbucket.io/driverdrv8825.html Repérage ---------------------------------------------------------------------------------------------------- .. image:: images/ cnc-shield+uno-rep.jpg :width: 400 px :align: center ==================================================================================================== Première manipulation ==================================================================================================== Matériel ---------------------------------------------------------------------------------------------------- - Moteur pas à pas Nema 17. - Carte Arduino Uno. - Shield CNC pour carte Uno - Pilote DRV8825. - Alimentation courant continu 12V. Plan de câblage ---------------------------------------------------------------------------------------------------- .. image:: images/ cnc-shield-branchement.png :width: 400 px :align: center Ce cablâge représente le branchement de l'axe Y (Attention à l'ordre des câbles sortant des bobines). Mêmes manipulations pour les autres axes. **ATTENTION** Avant de mettre sous tension, il faut régler la tension VREF du driver DRV 8825. - `Driver de moteur pas à pas DRV8825`_ .. _`Driver de moteur pas à pas DRV8825` : https://moteur-nema.bitbucket.io/driverdrv8825.html 1) Programmation : piloter quatre moteurs pas à pas (axes X, Y, Z et A) ---------------------------------------------------------------------------------------------------- Ce programme est conçu pour piloter quatre moteurs pas à pas (axes X, Y, Z et A) à l’aide d’un Shield CNC connecté à une carte Arduino Uno. :: #define EN 8 /* Enable pin for all stepper outputs */ #define X_DIR 5 /* Direction-Pin for X-axis */ #define X_STEP 2 /* Step-Pin for X-axis */ #define TEMPO 1 #define Y_DIR 6 /* Direction-Pin for Y-axis*/ #define Y_STEP 3 /* Step-Pin for Y-axis */ #define Z_DIR 7 /* Direction-Pin for Z-axis */ #define Z_STEP 4 /* Step-Pin for Z-axis */ //#define A_DIR 13 /* Direction-Pin for A-axis*/ //#define A_STEP 12 /* Step-Pin for A-axis */ int Count = 0; /* Counter to count number of steps made */ void setup() { Serial.begin(9600); /* Configure the stepper drive pins as outputs */ pinMode(EN, OUTPUT); pinMode(X_DIR, OUTPUT); pinMode(X_STEP, OUTPUT); pinMode(Y_DIR, OUTPUT); pinMode(Y_STEP, OUTPUT); pinMode(Z_DIR, OUTPUT); pinMode(Z_STEP, OUTPUT); pinMode(A_DIR, OUTPUT); pinMode(A_STEP, OUTPUT); digitalWrite(EN, LOW); //Low to enable } void loop() { /* Count one step */ Count++; /* If reached 500 steps then change the stepper direction and resset the counter*/ if (Count >= 500) { Direction = !Direction; digitalWrite(X_DIR, Direction); // Low = CW digitalWrite(Y_DIR, Direction); // Low = CW digitalWrite(Z_DIR, Direction); // Low = CW digitalWrite(A_DIR, Direction); // Low = CW Count = 0; } /* Step the X, Y, Z, und A Motoren */ digitalWrite(X_STEP, HIGH); delay(TEMPO); digitalWrite(Y_STEP, HIGH); delay(1); digitalWrite(Z_STEP, HIGH); delay(1); digitalWrite(A_STEP, HIGH); delay(1); digitalWrite(X_STEP, LOW); delay(TEMPO); digitalWrite(Y_STEP, LOW); delay(1); digitalWrite(Z_STEP, LOW); delay(1); digitalWrite(A_STEP, LOW); delay(1); } **Fonctionnement :** Ce programme fait tourner les moteurs pas à pas en envoyant des impulsions de pas. Tous les 500 pas, il inverse la direction de rotation des moteurs. Il fonctionne en boucle continue. 1. Définition des broches - Les broches correspondent aux connexio,n,s du Shield CNC pour les pilotes DRV8825 2. Initialisation (setup(): - Initialise la communication série. - Configure toutes les broches comme sorties - Active les moteurs en mettant EN à LOW. 3. Boucle principale (loop()): - Changement de direction - Le compteur **Count** augmente à chaque pas. - Quand il atteint 500, la direction est inversée (LOW <-> HIGH) - Les moteurs changent de sens de rotation. - Impulsions de pas - Chaque moteur reçoit une impulsion HIGH puis LOW pour effectuer un pas. - Le delai **TEMPO** (1 ms) contr^le la vitesse du mouvement. Résultat : - Les moteurs X, Y, Z et A tournent en continu. - Tous les 500 pas, ils changent de sens. - Le programme tourne en boucle. ==================================================================================================== Sites de référence ==================================================================================================== - `How to Use DRV8825 Stepper Motor Driver`_ .. _`How to Use DRV8825 Stepper Motor Driver` : https://www.researchcell.com/electronics/how-to-use-drv8825-stepper-motor-driver - `Comment utiliser DRV8825 Driver moteur pas a pas avec Arduino`_ .. _`Comment utiliser DRV8825 Driver moteur pas a pas avec Arduino` : https://www.moussasoft.com/drv8825-driver-moteur-pas-a-pas-avec-arduino/ - `Comment utiliser NEMA 17 moteur pas à pas avec Arduino et le module pilote de moteur pas à pas A4988`_ .. _`Comment utiliser NEMA 17 moteur pas à pas avec Arduino et le module pilote de moteur pas à pas A4988` : https://www.moussasoft.com/comment-utiliser-nema-17-moteur-pas-a-pas-arduino-pilote-a4988/ - `Pilotage de moteur pas à pas 17hs15-1504s avec bibliothèque MTulnStepper`_ .. _`Pilotage de moteur pas à pas 17hs15-1504s avec bibliothèque MTulnStepper` : https://forum.arduino.cc/t/pilotage-de-moteur-pas-a-pas-17hs15-1504s-avec-bibliotheque-mtulnstepper/997286 - `Arduino : le CNC Shield`_ .. _`Arduino : le CNC Shield` : https://www.e-techno-tutos.com/2022/03/16/arduino-le-cnc-shield/ - `Module Driver A4988 pour Moteurs Pas-à-Pas`_ .. _`Module Driver A4988 pour Moteurs Pas-à-Pas` : https://www.atelierdelarobotique.fr/produit/module-driver-a4988-pour-moteurs-pas-a-pas - `Shield CNC pour Uno ARD-CNC-K1`_ .. _`Shield CNC pour Uno ARD-CNC-K1` : https://www.gotronic.fr/art-shield-cnc-pour-uno-ard-cnc-k1-27753.htm - `Stepper Motors and Arduino - The Ultimate Guide`_ .. _`Stepper Motors and Arduino - The Ultimate Guide` : https://www.youtube.com/watch?v=7spK_BkMJys ==================================================================================================== Tables et index ==================================================================================================== * :ref:`genindex` * :ref:`search` ==================================================================================================== Weblinks ==================================================================================================== .. target-notes::