Le CNC Shield V3 est la carte qui se fixe sur un Arduino Uno et transforme la carte en contrôleur de moteurs pas à pas : quatre emplacements de drivers, les entrées de fin de course, la commande de broche et les boutons d’arrêt d’urgence sont déjà câblés. C’est la carte de base de la plupart des routeuses CNC, graveuses laser et tables de découpe amateur.
Elle ne contient aucun composant de puissance : les quatre drivers se clipsent dans les emplacements X, Y, Z et A, la carte se charge de les relier aux bonnes broches de l’Arduino, et un seul bornier à vis amène l’alimentation des moteurs. Le microcontrôleur, lui, reste celui de l’Arduino : on y téléverse le micrologiciel GRBL, qui traduit le G-code reçu par le port série en impulsions de pas.
Ce que la carte apporte
- Quatre emplacements de drivers — X, Y, Z et A, au format des modules Pololu : un driver A4988 ou un driver DRV8825 dans chacun, sans soudure.
- Un bornier d’alimentation moteurs de 12 à 36 V continu, une seule arrivée pour les quatre drivers, avec deux condensateurs de filtrage sur la carte.
- Six entrées de fin de course — X-, X+, Y-, Y+, Z-, Z+ — pour deux interrupteurs par axe, en logique normalement ouverte.
- Une sortie broche (SpnEn et SpnDir) pour relayer une fraiseuse, un module laser ou un variateur, plus une sortie arrosage (CoolEn).
- Un cavalier d’arrêt d’urgence (E-Stop) et trois entrées de commande déportées : Abort, Hold et Resume, pour des boutons en façade.
- Des cavaliers de micro-pas sous chaque emplacement, pour régler finement la résolution de chaque axe.
- Un quatrième axe configurable — la prise A peut recopier X, Y ou Z (deux moteurs sur un même axe), ou se piloter comme axe indépendant.
- Trous de fixation et report des broches RX/TX et I2C pour les extensions.
Caractéristiques techniques
| Carte hôte | Arduino Uno et cartes au même gabarit (ATmega328p). Le shield se pose aussi sur une Mega 2560, mais seules les broches du gabarit Uno sont alors reliées |
|---|---|
| UGS | Z174 |
| Emplacements de drivers | Quatre (X, Y, Z, A), brochage compatible A4988 et DRV8825 |
| Tension moteurs | 12 à 36 V continu sur le bornier à vis |
| Tension logique | 5 V, prise sur l’Arduino par le câble USB ou la broche VIN |
| Micrologiciel | GRBL (version 0.9 ou 1.1 selon les sorties utilisées), téléversé sur l’Arduino |
| Micro-pas | Pas entier, 1/2, 1/4, 1/8, 1/16 et 1/32 de pas, réglables par cavaliers sous chaque emplacement |
| Entrées de fin de course | Six prises à deux broches (signal et masse), interrupteurs normalement ouverts |
| Format | Shield au gabarit Uno, se superpose à la carte hôte, quatre trous de fixation |
Brochage : quelles broches de l’Arduino pour quel axe
C’est le tableau qui sert à vérifier un câblage ou à écrire un programme maison. Les numéros sont ceux de l’Arduino Uno, tels qu’ils sortent sur les prises du shield.
| X — impulsion (X-STEP) | D2 |
|---|---|
| X — sens (X-DIR) | D5 |
| Y — impulsion | D3 |
| Y — sens | D6 |
| Z — impulsion | D4 |
| Z — sens | D7 |
| Activation des drivers (EN) | D8, commune aux quatre emplacements, active au niveau bas |
| Fin de course X (X- et X+) | D9 |
| Fin de course Y (Y- et Y+) | D10 |
| Fin de course Z (Z- et Z+) | D11 |
| Activation broche (SpnEn) | D12 |
| Sens de broche (SpnDir) | D13 |
| Arrosage (CoolEn) | A3 |
| Arrêt, pause, reprise | A0 (Abort), A1 (Hold), A2 (Resume) |
Les deux prises de fin de course d’un même axe partagent la même broche : poser un interrupteur en X- et un en X+ revient à mettre deux contacts en parallèle sur D9. Pour un montage à trois axes, une seule prise par axe suffit.
Le quatrième emplacement : recopier un axe ou piloter à part
La prise A n’est pas un axe de plus dans GRBL, qui ne gère que trois axes sur un Arduino Uno. Deux cavaliers, à côté de l’emplacement, décident de son rôle :
- Recopier X, Y ou Z — l’emplacement A reçoit exactement les mêmes impulsions et le même signal de sens que l’axe choisi. C’est la configuration des machines à deux moteurs sur un même axe, une vis de chaque côté du portique : un seul axe logique, deux drivers, deux moteurs parfaitement synchrones.
- Axe indépendant — sans cavalier, l’emplacement A attend ses signaux sur D12 et D13. GRBL ne les y envoie pas en standard : cette configuration réclame un micrologiciel adapté ou un programme personnel, et elle occupe les deux broches de la sortie broche (SpnEn et SpnDir).
Autrement dit : pour une machine à trois axes et une broche, on laisse l’emplacement A vide ou sans cavalier. Pour un portique à deux moteurs, on met les cavaliers sur l’axe concerné.
Régler les micro-pas avec les cavaliers
Sous chaque emplacement, trois paires de broches correspondent aux entrées MS1, MS2 et MS3 du driver. Un cavalier posé met l’entrée au niveau haut, pas de cavalier la laisse au niveau bas. Pour un A4988, la table est celle-ci :
| Pas entier | aucun cavalier |
|---|---|
| 1/2 pas | MS1 |
| 1/4 de pas | MS2 |
| 1/8 de pas | MS1 et MS2 |
| 1/16 de pas | MS1, MS2 et MS3 |
Plus le micro-pas est fin, plus la machine avance doucement et sans vibration, mais plus il faut d’impulsions pour parcourir la même distance. Un réglage en 1/8 ou 1/16 de pas est le compromis habituel sur une routeuse : assez fluide pour ne pas marquer le bois, sans exiger une fréquence d’impulsions que l’ATmega328p ne peut plus tenir. Le DRV8825, lui, dispose d’une table plus longue qui va jusqu’au 1/32 de pas, et son réglage de courant se fait avec une formule différente : ces deux points sont détaillés dans le descriptif de son module. Le réglage des cavaliers reste à faire avant la mise sous tension.
Alimentation et points d’attention
- Ne jamais insérer ni retirer un driver sous tension. Le geste détruit le module et peut emporter la carte hôte. Toute intervention sur un emplacement se fait bornier débranché et câble USB retiré.
- Respecter le sens du driver. Le petit potentiomètre de réglage de courant doit se trouver du côté du bornier de puissance, à l’opposé du port USB de l’Arduino. Un module enfiché à l’envers est perdu à la mise sous tension.
- Alimenter la logique et les moteurs séparément. L’Arduino reçoit son 5 V par le câble USB ou par VIN ; le bornier 12 à 36 V ne concerne que les moteurs, et il n’est jamais relié à une broche de la carte hôte. Les deux masses sont déjà communes sur le shield.
- Régler le courant de chaque driver avant de brancher les moteurs. La vis du potentiomètre se règle à vide, moteur absent, en mesurant la tension sur le driver selon la formule du module utilisé. Un courant trop élevé chauffe le moteur, un courant trop faible fait sauter des pas.
- Ne jamais débrancher un moteur sous tension. Déconnecter une bobine pendant que le driver travaille produit une surtension qui l’endommage.
- Séparer les câbles de fin de course des câbles moteurs. Les entrées de fin de course sont sensibles à la perturbation des câbles de puissance : un déclenchement fantôme en pleine passe fait perdre la pièce. Des fils courts, éloignés des câbles moteurs, suffisent dans la plupart des montages.
- Au-delà de 36 V ou de plusieurs ampères par moteur, ce shield n’est plus la bonne carte : il faut passer à un driver de puissance externe, piloté directement par les broches step et dir.
Applications courantes
- Routeuse CNC trois axes — portique, chariot et axe Z, avec fins de course et relais de broche.
- Graveuse ou découpe laser — deux axes et la sortie SpnEn pour la modulation du module laser.
- Portique à deux moteurs — l’emplacement A recopiant Y ou X pour entraîner les deux vis latérales.
- Traceur, machine à dessiner, axe rotatif — un moteur par axe, la mécanique remplaçant ici la broche.
- Apprentissage de GRBL et du G-code — la carte la moins chère pour transformer un Arduino Uno en contrôleur de mouvements.
- Base d’un projet de positionnement — même sans usiner, deux axes motorisés et des fins de course couvrent beaucoup de besoins.
Mini-projet : faire tourner un axe et vérifier son câblage
Avant de téléverser GRBL et de régler des vitesses, ce programme court fait avancer un moteur d’un tour dans un sens, puis dans l’autre. Il utilise directement les broches de l’emplacement X, ce qui valide d’un coup le driver, le courant, le câblage des bobines et la prise choisie.
Matériel
- ce shield et un Arduino Uno ;
- un driver A4988 dans l’emplacement X ;
- un moteur pas à pas NEMA 17 ;
- une alimentation 12 V sur le bornier ;
- un petit tournevis pour le réglage du courant, et un ordinateur pour téléverser.
Câblage
| Moteur — bobine A (A+ et A-) | prises 1A et 1B de l’emplacement X |
|---|---|
| Moteur — bobine B (B+ et B-) | prises 2A et 2B de l’emplacement X |
| Alimentation 12 V — positif | bornier, repère de tension du shield |
| Alimentation 12 V — négatif | bornier, repère GND |
| Arduino | câble USB, pour le téléversement et l’alimentation logique |
Deux câbles de bobine inversés entre eux ne détruisent rien : le moteur tourne simplement dans l’autre sens. Le vrai risque reste le sens d’insertion du driver et le débranchement à chaud. Si un moteur NEMA 17 vibre sans avancer, c’est presque toujours un courant trop faible ou deux fils d’une même bobine séparés : vérifiez la continuité par paire avant tout autre réglage.
Programme
/*
* Un axe du CNC Shield V3 : un tour dans un sens, un tour dans l'autre
*
* Composants, brochage et fiche complete : www.marocproduits.com
*/
const byte PIN_X_STEP = 2; // X-STEP du shield
const byte PIN_X_DIR = 5; // X-DIR du shield
const byte PIN_ENABLE = 8; // EN, commun aux quatre emplacements (actif au niveau bas)
const int PAS_PAR_TOUR = 200; // moteur NEMA 17 en pas entiers
const int DUREE_IMPULSION = 800; // microsecondes, a augmenter si le moteur decroche
void setup() {
pinMode(PIN_X_STEP, OUTPUT);
pinMode(PIN_X_DIR, OUTPUT);
pinMode(PIN_ENABLE, OUTPUT);
digitalWrite(PIN_ENABLE, LOW); // niveau bas : les drivers sont alimentes
delay(200); // laisser le driver se stabiliser avant le premier pas
}
void loop() {
digitalWrite(PIN_X_DIR, HIGH); // sens 1
tourner();
delay(700);
digitalWrite(PIN_X_DIR, LOW); // sens 2
tourner();
delay(700);
}
void tourner() {
for (int reste = PAS_PAR_TOUR; reste != 0; reste--) {
digitalWrite(PIN_X_STEP, HIGH);
delayMicroseconds(DUREE_IMPULSION);
digitalWrite(PIN_X_STEP, LOW);
delayMicroseconds(DUREE_IMPULSION);
}
}Si le moteur ne fait que vibrer, augmentez DUREE_IMPULSION : une fréquence trop élevée pour le couple demandé produit ce sifflement sans rotation. Si les drivers chauffent, c’est le réglage de courant qu’il faut revoir, pas le programme. Une fois l’axe validé, téléversez GRBL et passez aux commandes en G-code : le câblage, lui, ne bouge plus.
Questions fréquentes
Faut-il obligatoirement GRBL sur l’Arduino ?
Non, mais c’est l’usage courant. GRBL lit le G-code sur le port série et se charge de toute la génération d’impulsions. Un programme personnel peut piloter directement les broches D2 à D7, à condition d’écrire soi-même la conversion entre pas, millimètres et vitesses.
Quelle est la différence avec la version V4 ?
Le CNC Shield V4 reprend le même principe pour un budget plus serré, mais abandonne les cavaliers du quatrième axe et certains reports de broches de cette V3. La V3 reste préférable dès que l’on veut deux moteurs sur un même axe, un arrêt d’urgence déporté ou une sortie broche indépendante.
Ce shield fonctionne-t-il avec un Arduino Mega ?
Il s’y enfonce, mais seules les broches du gabarit Uno — D0 à D13 et A0 à A5 — se retrouvent reliées. Pour une Mega et ses 54 broches d’entrées-sorties, il faut une carte au gabarit de la carte longue.
Puis-je monter quatre moteurs NEMA 17 différents ?
Oui sur le principe : chaque emplacement a son propre driver et son propre réglage de courant. La limite vient du point faible du montage — l’alimentation. Une alimentation de 12 V et 2 A suffit pour un ou deux moteurs, pas pour quatre qui accélèrent ensemble : il faut alors choisir une alimentation dont le courant total couvre la somme des moteurs, et prévoir des dissipateurs sur les drivers.
Les fins de course sont-ils obligatoires ?
Non. Une machine peut fonctionner sans eux, à condition de placer la pièce à la main et de rester dans les limites de course. Les fins de course apportent deux choses : la prise d’origine automatique, qui garantit la même position de départ à chaque mise en route, et la protection contre une collision. Pour une machine qui usine des pièces répétées, la prise d’origine automatique devient vite indispensable.
Pourquoi mon moteur tourne-t-il dans le sens inverse de la commande ?
Deux causes possibles, deux corrections différentes. Si l’inversion touche un axe seulement et que GRBL est installé, la solution est logicielle : l’option d’inversion du sens de cet axe dans les réglages du micrologiciel. Si l’axe bouge avec un couple faible ou saccadé, c’est plutôt l’ordre des bobines sur la prise qui est en cause : inversez une des deux paires. Une paire de bobine à l’envers ne se voit pas de l’extérieur, car les fabricants ne livrent pas tous les fils dans le même ordre.
À combiner avec
Pour un moteur plus exigeant — grand format, couple important, courant supérieur à ce qu’un module Pololu supporte — le module TB6600 prend le relais et se pilote depuis les mêmes broches step et dir, l’emplacement du shield restant vide. Ceux qui montent une première machine d’apprentissage ou un traceur pourront regarder du côté du CNC Shield V4, plus simple et moins cher, en gardant en tête la limite du quatrième axe. Enfin, pour un câblage propre des moteurs et des fins de course — plutôt que des fils coincés directement dans les broches — des borniers à vis se posent sur les rangées du shield et rendent le montage démontable.







