Sommaire
Piloter un moteur pas-à-pas NEMA17 avec Arduino UNO et le driver TB6600
Apprenez à contrôler un moteur pas-à-pas NEMA17 grâce à une Arduino UNO, un driver TB6600 et un joystick 2 axes KY-023. Ce tutoriel vous guide pas à pas pour réaliser un montage précis et interactif, idéal pour vos projets robotiques et DIY.
Vous découvrirez comment interfacer le moteur avec le driver TB6600, lire les mouvements du joystick et commander le moteur de manière fluide et sécurisée.
Le moteur pas-à-pas NEMA17 : caractéristiques, phases et alimentation
Le moteur pas-à-pas NEMA17 est un moteur bipolaire à 4 fils très utilisé en robotique et dans les systèmes industriels, comme les imprimantes 3D et les machines CNC. Il est composé de deux bobinages (ou phases), chaque phase étant connectée via deux fils.
Pour alimenter correctement le NEMA17, une alimentation externe de 12V de 2A est généralement utilisée.
Identifier les phases du moteur
Avant de débuter le montage et la programmation, il est essentiel d’identifier correctement les phases du moteur. Un driver TB6600 commande les bobinages en alternance : un ordre de branchement précis est donc nécessaire pour assurer le bon fonctionnement.
Branchement des phases
Pour la plupart de nos moteurs NEMA17, les bobinages sont identifiés comme suit :
- Bobinage/Phase 1 : Fils Rouge et Bleu
- Bobinage/Phase 2 : Fils Vert et Noir
Tester la continuité des phases
Si vous avez un doute sur l’identification des fils, vous pouvez effectuer un test de continuité avec un multimètre. Cette vérification permet de s’assurer que le circuit est fermé et que le courant peut circuler. Un bip du multimètre indique que la phase est correcte.
Pour plus de détails sur le test de continuité, consultez : Guide Fluke.
Le driver TB6600 pour contrôler le moteur NEMA17
Le driver TB6600 permet de piloter un moteur pas-à-pas NEMA17 avec précision.
Il reçoit deux signaux principaux d’une carte de contrôle, généralement STEP et DIR :
- DIR : détermine le sens de rotation du moteur
- STEP : chaque impulsion avance le moteur d’un pas ou micro-pas selon le réglage
Le TB6600 module le courant envoyé aux bobinages pour garantir un couple stable et un mouvement fluide, même à basse vitesse.
Des micro-interrupteurs permettent de régler le courant maximal et le niveau de micro-pas pour ajuster précision et fluidité.
Connecteurs du TB6600
- Connecteurs de commande :
- ENA : Activation (LOW) / Désactivation (HIGH)
- DIR : Choix du sens de rotation
- PUL : Commande des pas (STEP)
- Connecteurs de puissance :
- A+/A- : Phase 1 du moteur
- B+/B- : Phase 2 du moteur
- VCC : Alimentation positive
- GND : Masse ou borne négative
Présentation des connecteurs et réglages du TB6600
Le schéma du TB6600 comporte plusieurs éléments numérotés, correspondant à la légende de l’image :
- Connecteurs de commande :
ENA : Activation (LOW) / Désactivation (HIGH) du module TB6600
DIR : Choix du sens de rotation du moteur
PUL : Commande du nombre de pas du moteur (STEP) - Connecteurs de puissance :
A+/A- : Connexion du bobinage ou phase 1 du moteur pas-à-pas
B+/B- : Connexion du bobinage ou phase 2 du moteur pas-à-pas
VCC : Borne positive de l’alimentation externe du moteur
GND : Borne négative ou masse de l’alimentation externe - Tableau récapitulatif du réglage des pas du moteur pas-à-pas
- Tableau récapitulatif du réglage du courant maximal délivré par le TB6600 au moteur pas-à-pas
- Switches servant à régler le pas de déplacement du moteur (1 à 3) et le courant maximal délivré au moteur pas-à-pas (4 à 6)
Réglages essentiels du TB6600
Deux éléments doivent être configurés via les switches avec l’aide des tableau récapitulatif sur le driver TB6600 :
- Résolution du pas : micro-pas pour la précision et la fluidité du mouvement
- Courant maximal : intensité délivrée au moteur pour éviter surchauffe ou surcharge
Réglage de la résolution du pas
Un moteur NEMA17 standard réalise 200 pas par tour (1,8°/pas). Le driver TB6600 peut subdiviser ces pas en micropas, jusqu’à 6400 micropas par tour.
Dans cet exemple, le driver est configuré à 1600 micropas par tour (1/8) : SW2 ON, SW1 et SW3 OFF, assurant un bon compromis entre vitesse, précision et fluidité.
Réglage de l’intensité maximale
Le moteur NEMA17 utilisé peut supporter jusqu’à 2 A par phase. Le TB6600 est donc réglé à 2 A : SW4 ON, SW5 et SW6 OFF.
Cela permet un fonctionnement sécurisé sans surcharger le driver.
Contrôle du NEMA17 avec le joystick KY-023
Dans cette partie, nous allons réaliser le montage permettant de contrôler la rotation d’un moteur NEMA 17 à l’aide d’un joystick KY-023, d’un driver TB6600 et d’une carte Arduino UNO. L’objectif est de piloter la vitesse et le sens de rotation du moteur en fonction des mouvements du joystick.
Matériel nécessaire
- 1 × Arduino UNO
- 1 × Moteur pas-à-pas NEMA 17
- 1 × Driver TB6600
- 1 × Joystick KY-023
- 1 × Câble USB Type-C
- 1 × Breadboard – 400 points
- 1 × Connecteur Jack femelle 2.1 × 5.5 mm
- 1 × Alimentation 12 V – 2 A
- Câbles de connexion M-M (10 cm)
Schéma de câblage
L’image et le tableau ci-dessous présente les connexions nécessaires entre l’Arduino UNO, le driver TB6600, le NEMA17, le joystick KY-023 et l’alimentation 12 V.
| Arduino Uno | Driver TB6600 | Moteur NEMA 17 | Joystick KY-023 | Connecteur Jack femelle |
|---|---|---|---|---|
| 5V | +5V | |||
| GND | GND | |||
| A0 | VRx | |||
| GND | ENA- | |||
| GND | ENA+ | |||
| GND | DIR- | |||
| D2 | DIR+ | |||
| GND | PUL- | |||
| D3 | PUL+ | |||
| B- | Fil Noir | |||
| B+ | Fil Vert | |||
| A- | Fil Bleu | |||
| A+ | Fil Rouge | |||
| GND | Borne Moins (-) | |||
| VCC | Borne Moins (+) |
Code Arduino pour le contrôle du NEMA17 avec le joystick KY-023
Le programme suivant permet de piloter un moteur pas-à-pas NEMA 17 à l’aide d’un joystick KY-023 connecté à une carte Arduino UNO et à un driver TB6600. Le joystick contrôle la vitesse et le sens de rotation du moteur selon la position de son axe horizontal.
Principe de fonctionnement
Lorsque le joystick est au centre, le moteur reste à l’arrêt grâce à une zone morte définie par la variable deadZone.
En déplaçant le joystick vers la droite ou la gauche, le moteur tourne respectivement dans un sens ou dans l’autre,
et la vitesse de rotation augmente proportionnellement à l’amplitude du déplacement.
Code complet Arduino
// Contrôle d'un moteur NEMA 17 avec TB6600 et joystick KY-023
// Carte : Arduino UNO
// Atelier de la Robotique
// Broches moteur
#define DIR_PIN 2
#define STEP_PIN 3
// Broche du joystick
#define JOY_X A0
// Paramètres de contrôle
const int deadZone = 50; // zone morte autour du centre du joystick
const int minSpeed = 1000; // délai max = vitesse la plus lente
const int maxSpeed = 100; // délai min = vitesse la plus rapide
void setup() {
pinMode(DIR_PIN, OUTPUT);
pinMode(STEP_PIN, OUTPUT);
Serial.begin(9600);
}
void loop() {
int xValue = analogRead(JOY_X);
int speedDelay = minSpeed;
// Vérifie si le joystick sort de la zone morte
if (abs(xValue - 512) > deadZone) {
if (xValue > 512) {
digitalWrite(DIR_PIN, HIGH); // Rotation dans un sens
speedDelay = map(xValue, 512 + deadZone, 1023, minSpeed, maxSpeed);
} else {
digitalWrite(DIR_PIN, LOW); // Rotation dans l'autre sens
speedDelay = map(xValue, 0, 512 - deadZone, maxSpeed, minSpeed);
}
// Génération des impulsions STEP
digitalWrite(STEP_PIN, HIGH);
delayMicroseconds(speedDelay);
digitalWrite(STEP_PIN, LOW);
delayMicroseconds(speedDelay);
} else {
// Moteur à l'arrêt dans la zone morte
digitalWrite(STEP_PIN, LOW);
}
}
Explication du code
- DIR_PIN : contrôle le sens de rotation du moteur (horaire ou antihoraire).
- STEP_PIN : envoie des impulsions au driver TB6600 pour chaque pas du moteur.
- JOY_X : lit la position horizontale du joystick (valeur analogique de 0 à 1023).
- deadZone : définit la tolérance autour du centre pour éviter les mouvements involontaires.
- map() : convertit la position du joystick en délai d’impulsion, influençant directement la vitesse.
Ce code offre un contrôle fluide et réactif du moteur pas-à-pas NEMA 17. Il peut être facilement adapté pour d’autres projets utilisant des drivers de type TB6600 ou des manettes analogiques similaires.
Vidéo : fonctionnement du NEMA17 piloté par Arduino UNO, TB6600 et joystick KY-023
Aller plus loin avec le NEMA 17 et le joystick KY-023
Après avoir réalisé le montage et testé le code, vous pouvez maintenant exploiter pleinement votre moteur NEMA 17 avec le joystick KY-023 et le driver TB6600 sur Arduino UNO. Ce système permet de créer des projets robotiques interactifs, des machines CNC simples ou tout mécanisme nécessitant un contrôle précis du moteur pas-à-pas.
Quelques astuces pour aller plus loin :
- Adapter le code pour contrôler plusieurs moteurs simultanément.
- Expérimenter différentes résolutions de micropas sur le TB6600 pour optimiser la précision.
- Combiner le joystick avec des capteurs ou boutons supplémentaires pour créer un contrôle interactif plus complexe.
- Logger les positions des moteurs dans le code pour analyser les mouvements et ajuster la vitesse.
- Utiliser une alimentation stable adaptée à la charge réelle des moteurs pour éviter tout saut de pas.
En appliquant ces conseils, vous transformez un simple contrôle manuel en une base solide pour des projets robotiques plus avancés et personnalisés.




