L'innovation sans limites

Votre spécialiste en électronique et robotique.

Piloter un moteur pas-à-pas NEMA 17 à distance via Arduino et NRF24L01

Sommaire

Contrôle sans fil du moteur pas-à-pas NEMA 17 avec Arduino, NRF24L01 et TB6600

Dans ce projet, nous allons piloter sans fil un moteur pas-à-pas NEMA 17 à l’aide d’un module radio NRF24L01, d’un driver TB6600 et d’un shield Joystick pour Arduino UNO.

Grâce à cette communication radio fiable et économique, il devient possible de contrôler à distance la vitesse et le sens de rotation du moteur, sans câble entre l’utilisateur et le système. Ce type de contrôle est particulièrement adapté aux projets nécessitant plus de mobilité et moins d’encombrement.

  • Plateau rotatif motorisé
  • Axe CNC déporté
  • Robot mobile ou plateforme articulée
  • Manipulation à distance d’équipement motorisé

Ce système améliore la flexibilité, facilite l’intégration dans des environnements restreints et permet un pilotage fluide du moteur pas-à-pas NEMA 17.

Réglage du moteur NEMA 17 et du driver TB6600

Avant de piloter votre moteur NEMA 17 avec le module NRF24L01, il est essentiel de régler correctement le driver TB6600 pour garantir un mouvement fluide et sécurisé.

Vous pouvez retrouver toutes les informations détaillées sur le réglage des micropas, de l’intensité maximale et des connexions du NEMA 17 dans notre article dédié : Contrôle du NEMA17 avec le TB6600 et le joystick KY-023.

Ces réglages incluent :

  • Configuration des connecteurs de commande : ENA, DIR, STEP
  • Connexion des phases du moteur : A+/A-, B+/B-
  • Réglage de la résolution du pas et du courant maximal sur le TB6600

Un réglage correct garantit un pilotage précis et fiable, que vous utilisiez un joystick local ou la commande sans fil via NRF24L01.

Moteur pas-à-pas NEMA 17
Moteur pas-à-pas NEMA 17
Driver TB6600 pour stepper Nema 17 Nema 23 Nema 42
Driver TB6600

Montage et câblage du système sans fil NEMA 17

Pour ce projet de contrôle sans fil d’un moteur NEMA 17 avec Arduino, TB6600 et NRF24L01, il est important de bien organiser le montage côté émetteur et récepteur pour garantir une communication stable et un fonctionnement fiable.

Matériel nécessaire

Côté émetteur :

  • 1 Carte Arduino UNO
  • 1 Shield Joystick
  • 1 Module radio NRF24L01
  • 1 Câble USB Type C

Côté récepteur :

  • 1 Carte Arduino UNO
  • 1 Driver TB6600
  • 1 Moteur pas à pas NEMA 17
  • 1 Module radio NRF24L01 avec support
  • 1 Alimentation 12V / 2A
  • 1 Connecteur Jack femelle 5.5 x 2.1 mm
  • Câbles de connexion
    •  Mâle – Mâle 10cm
    • Mâle – Femelle 10cm
  • 1 Câble USB Type C

Montage côté émetteur

Le côté émetteur reçoit les commandes de l’utilisateur via le shield joystick.
Le joystick est connecté à la carte Arduino UNO et au module radio NRF24L01 qui transmet les données à distance.
Assurez-vous que le module NRF24L01 est correctement alimenté et fixé sur son support pour éviter toute déconnexion.

Montage de la carte Arduino UNO avec le shield Joystick et le module radio NRF24L01
Montage de la carte Arduino UNO avec le shield Joystick et le module radio NRF24L01

Montage côté récepteur

Le côté récepteur reçoit les signaux radio émis par le joystick et les traduit en mouvements précis du moteur NEMA 17 via le driver TB6600.
Un câblage correct du TB6600 et des phases du moteur est crucial pour garantir un fonctionnement stable et fluide.
Assurez-vous que le module NRF24L01 est alimenté et positionné correctement.

Schéma de montage côté récepteur : Arduino UNO - TB6600 - NEMA 17 - NRF24L01
Schéma de montage côté récepteur : Arduino UNO - TB6600 - NEMA 17 - NRF24L01
Arduino UnoDriver TB6600Moteur NEMA 17Module radio NRF24L01Connecteur Jack femelle
5V  VCC 
GND  GND 
D9  CE 
D10  CSN 
D11  MOSI 
D12  MISO 
D13  SCK 
GNDENA-   
GNDENA+   
GNDDIR-   
D2DIR+   
GNDPUL-   
D3PUL+   
 B-Fil Noir  
 B+Fil Vert  
 A-Fil Bleu  
 A+Fil Rouge  
 GND   Borne Moins (-)
 VCC   Borne Moins (+)

Veillez à vérifier toutes les connexions avant l’alimentation. Une erreur dans le câblage peut endommager le moteur, le driver ou le module NRF24L01.

Une fois le montage terminé, votre système est prêt à recevoir les commandes du joystick et à piloter le moteur NEMA 17 sans fil de manière fluide et sécurisée.

Code Arduino pour le contrôle sans fil du NEMA 17

Pour piloter votre moteur NEMA 17 sans fil, nous allons utiliser deux codes Arduino : un pour l’émetteur (lecture du joystick et transmission des données) et un pour le récepteur (réception des données et pilotage du moteur via le driver TB6600). Assurez-vous d’avoir installé les librairies suivantes dans l’IDE Arduino :

  • RF24.h
  • nRF24L01.h
  • SPI.h (incluse par défaut)

Code Arduino – Émetteur

L’émetteur lit les valeurs du shield joystick et les envoie via le module radio NRF24L01. Vous pouvez suivre les valeurs du joystick en temps réel via le moniteur série.

				
					// Carte : Arduino UNO
// Atelier de la Robotique

#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>

// NRF24L01
RF24 radio(9, 10); // CE, CSN
const byte adresse[6] = "motor";

// Structure de données à envoyer
struct Data {
  int x;
  int y;
  bool bouton;
};

Data data;

void setup() {
  Serial.begin(9600);
  radio.begin();
  radio.openWritingPipe(adresse);
  radio.setPALevel(RF24_PA_LOW);
  radio.stopListening(); // Mode émission
}

void loop() {
  data.x = analogRead(A0);
  data.y = analogRead(A1);
  data.bouton = !digitalRead(8); // Bouton pressé = LOW

  radio.write(&data, sizeof(Data));

  Serial.print("X: "); Serial.print(data.x);
  Serial.print(" | Y: "); Serial.print(data.y);
  Serial.print(" | Bouton: "); Serial.println(data.bouton);

  delay(100);
}

				
			

Code Arduino – Récepteur

Le récepteur reçoit les données du joystick et contrôle le moteur NEMA 17 via le driver TB6600. Il prend en compte une zone morte autour du centre du joystick pour éviter les mouvements involontaires et ajuste la vitesse en fonction de la déviation.

				
					// Carte : Arduino UNO
// Atelier de la Robotique

#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
    
RF24 radio(9, 10); // CE, CSN
const byte adresse[6] = "motor";

struct Data {
  int x;
  int y;
  bool bouton;
};

Data data;

#define DIR_PIN 2
#define STEP_PIN 3

const int X_CENTER = 330; // X_CENTER : Joystick au Repos
const int X_MIN = 0; // X_MIN: Joystick vers le Bas
const int X_MAX = 670; // X_MAX: Joystick vers le Haut
const int DEADZONE = 40;

volatile int currentDelay = 0; // durée entre pas
volatile bool moteurActif = false;
volatile bool sens = HIGH;

unsigned long lastStepTime = 0;

void setup() {
  Serial.begin(9600);

  pinMode(DIR_PIN, OUTPUT);
  pinMode(STEP_PIN, OUTPUT);

  radio.begin();
  radio.openReadingPipe(0, adresse);
  radio.setPALevel(RF24_PA_LOW);
  radio.startListening();

  Serial.println("Récepteur prêt !");
}

void loop() {
  // ----  Réception radio ----
  if (radio.available()) {
    radio.read(&data, sizeof(Data));

    int deviation = data.x - X_CENTER;

    if (abs(deviation) < DEADZONE) {
      moteurActif = false;
      currentDelay = 0;
    } else {
      moteurActif = true;
      sens = (deviation > 0);
      digitalWrite(DIR_PIN, sens ? HIGH : LOW);
      currentDelay = map(abs(deviation), 0, max(X_CENTER - X_MIN, X_MAX - X_CENTER), 1200, 200);
      currentDelay = constrain(currentDelay, 200, 1200);
    }
  }

  // ---- Génération d’impulsions fluide ----
  if (moteurActif && currentDelay > 0) {
    unsigned long now = micros();
    if (now - lastStepTime >= (unsigned long)currentDelay) {
      lastStepTime = now;
      digitalWrite(STEP_PIN, HIGH);
      delayMicroseconds(5);   // impulsion courte (5–10 µs)
      digitalWrite(STEP_PIN, LOW);
    }
  }
}

				
			

Avec ce code, votre moteur NEMA 17 peut être piloté à distance de manière fluide et précise, en ajustant la vitesse et le sens en fonction du déplacement du joystick. Assurez-vous de calibrer les valeurs X_CENTER, X_MIN et X_MAX selon votre joystick pour un contrôle optimal.

Démonstration en vidéo du moteur NEMA 17 piloté sans fil

Approfondir le contrôle sans fil du NEMA 17

Maintenant que vous avez mis en place un contrôle sans fil fonctionnel de votre moteur NEMA 17 avec le joystick et les modules NRF24L01, vous pouvez explorer d’autres possibilités :

  • Ajouter un second axe de joystick pour contrôler simultanément la vitesse et la direction.
  • Mettre en place plusieurs moteurs NEMA 17 pilotés en parallèle pour un projet de robotique plus complexe.
  • Enregistrer les mouvements du moteur sur une carte SD pour analyse ou répétition automatique.
  • Optimiser le code pour utiliser des interruptions et améliorer la précision des impulsions STEP à haute vitesse.

Ces améliorations permettent de transformer votre projet en une solution robuste pour des applications robotiques avancées ou des prototypes industriels.

Bonjour ! 🌟 Rejoignez notre newsletter pour ne rien manquer.

Recevez nos offres spéciales et les derniers articles directement dans votre boîte de réception

Nous ne faisons pas de spam, promis ! Consultez notre politique de confidentialité pour en savoir plus.

Panier
Retour en haut