Shield CNC pour carte Uno

_images/lg.jpg _images/logo_moteur-pas-pas.png
Auteur

Gilles Lecorsier

Blog

La technologie dans tous ses états 1

Association

BricoLab Groslay(95)

Entity

VoRoBoTics 2

Page principale

Readme 3

Date de création

04/10/2025

Date dernière maj

04/10/2025

Introduction

Utilisation du CNC Shield pour Arduino.

_images/video-shield-cnc.png

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.

_images/cnc-shield.png

Explications

_images/cnc-shield+uno.jpg

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 4. 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 …

Repérage

_images/cnc-shield+uno-rep.jpg

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

_images/cnc-shield-branchement.png

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.

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

Tables et index