Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Contrôleur de Moteur Pas à Pas Arduino avec A4988 et Joystick

Composants et fournitures

Arduino UNO 1
Driver moteur pas à pas A4988 1
Moteur pas à pas NEMA 17 (ex. 17HS4401) 1
Module joystick analogique (2 axes + bouton) 1
Alimentation 12V 2A minimum (pour moteur) 1
Condensateur électrolytique 100 µF 25V (découplage driver) 1
Résistances 10 kΩ (pull-up bouton joystick) 2
Plaque d'essai et fils 1

À propos de ce projet

Introduction

Ce projet montre comment piloter un moteur pas à pas NEMA 17 via un driver A4988, contrôlé par un joystick analogique. Le joystick permet :

Idéal pour : imprimantes 3D, fraiseuses CNC, scanners, robots, positionneurs précis.

Câblage

Driver A4988 → Arduino

Moteur NEMA 17 → A4988

Joystick → Arduino

Condensateur 100 µF

Entre VMOT et GND (côté puissance), au plus près du driver. Protège contre les pics de tension.

Réglage du courant moteur (VREF)

Avant mise sous tension, réglez le courant max via le potentiomètre du A4988 :

VREF = I_moteur × 8 × Rsense
// Rsense = 0,05 Ω (typique sur modules A4988)
// Ex: pour 1A → VREF = 1 × 8 × 0,05 = 0,4V
// Mesurez VREF entre le potentiomètre et GND (tournez doucement)

Ne dépassez pas le courant nominal du moteur. Commencez bas, augmentez jusqu'à couple suffisant sans surchauffe.

Micro-pas (résolution)

MS1MS2MS3Résolution
LLLPas entier (full step)
HLLDemi-pas (1/2)
LHLQuart de pas (1/4)
HHL1/8 pas
HHH1/16 pas (défaut si non câblé)

Relier MS1/MS2/MS3 à GND (L) ou 5V (H) selon résolution voulue. Ou les piloter par Arduino pour changement dynamique.

Code Arduino

// Contrôleur moteur pas à pas A4988 + Joystick
// Broches
const int STEP_PIN = 3;
const int DIR_PIN  = 4;
const int EN_PIN   = 5;
const int MS1_PIN  = 6;
const int MS2_PIN  = 7;
const int MS3_PIN  = 8;
const int JOY_Y    = A1;
const int JOY_BTN  = 2;

bool motorEnabled = true;
int joyCenter = 512;      // Valeur centre joystick (à calibrer)
int deadZone = 30;        // Zone morte autour du centre
unsigned long lastStep = 0;
int stepDelay = 1000;     // µs entre pas (vitesse)

void setup() {
  pinMode(STEP_PIN, OUTPUT);
  pinMode(DIR_PIN, OUTPUT);
  pinMode(EN_PIN, OUTPUT);
  pinMode(MS1_PIN, OUTPUT);
  pinMode(MS2_PIN, OUTPUT);
  pinMode(MS3_PIN, OUTPUT);
  pinMode(JOY_BTN, INPUT_PULLUP);

  // Micro-pas 1/16 par défaut
  digitalWrite(MS1_PIN, HIGH);
  digitalWrite(MS2_PIN, HIGH);
  digitalWrite(MS3_PIN, HIGH);

  digitalWrite(EN_PIN, LOW); // Activer driver (actif bas)
  Serial.begin(115200);
  Serial.println("Controleur Moteur Pas-a-Pas Pret");
}

void loop() {
  // Bouton joystick : toggle activation moteur
  static bool btnPrev = HIGH;
  bool btnNow = digitalRead(JOY_BTN);
  if (btnPrev == HIGH && btnNow == LOW) {
    motorEnabled = !motorEnabled;
    digitalWrite(EN_PIN, motorEnabled ? LOW : HIGH);
    Serial.print("Moteur ");
    Serial.println(motorEnabled ? "ACTIVE" : "DESACTIVE");
    delay(200); // anti-rebond
  }
  btnPrev = btnNow;

  if (!motorEnabled) return;

  // Lecture joystick axe Y
  int joyVal = analogRead(JOY_Y);
  int diff = joyVal - joyCenter;

  if (abs(diff) < deadZone) return; // Zone morte = arrêt

  // Direction
  digitalWrite(DIR_PIN, diff > 0 ? HIGH : LOW);

  // Vitesse proportionnelle à l'écart du centre
  // Map : diff max (~512) → stepDelay min (ex: 200 µs = rapide)
  //       diff min (deadZone) → stepDelay max (ex: 2000 µs = lent)
  stepDelay = map(abs(diff), deadZone, 512, 2000, 200);
  stepDelay = constrain(stepDelay, 200, 5000);

  // Génération impulsion STEP
  if (micros() - lastStep >= stepDelay) {
    digitalWrite(STEP_PIN, HIGH);
    delayMicroseconds(2);
    digitalWrite(STEP_PIN, LOW);
    lastStep = micros();
  }
}

Fonctionnement

Dépannage courant

Évolutions possibles

Processus de fabrication

  1. Créer un système Ambilight spectaculaire pour moniteur avec Arduino
  2. Moniteur d'énergie Arduino & Data Logger fiable – Guide complet (Dr. Wattson + carte SD)
  3. Stores intelligents : contrôle automatisé de la lumière avec Arduino et énergie solaire
  4. Détecteur de fréquence audio Arduino — Mesurer le pic sonore avec module haute sensibilité
  5. Morpion sur matrice LED MAX7219 avec boîtier en carton
  6. Construire un minuteur à rebours Arduino fiable avec afficheur 7 segments SparkFun
  7. Surveillance Niveau Cuve DIY – Arduino Nano, Capteur Pression MPXV5010DP et Écran OLED
  8. Construisez votre propre voiture RC Porsche avec Arduino : Guide étape par étape
  9. Gant intelligent geste-vers-texte pour langue des signes