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

Plateau tournant piloté par Arduino et moteur pas-à-pas série

Composants et fournitures

Composant Quantité
Moteur pas-à-pas 28BYJ-48 1
Driver de moteur pas-à-pas X113647 (base ULN2003A) 1
Moyeu de fixation universel Pololu pour arbre 5 mm 1
Arduino UNO 1
Base en bois 15 × 15 cm 1
Patins en caoutchouc (10 mm ép.) 4

Outils nécessaires

À propos du projet

Ce projet réalise une plateforme rotative basée sur un moteur pas-à-pas 28BYJ-48, piloté via son driver X113647 (ULN2003A). La plateforme tourne dans les deux sens et est contrôlée via le moniteur série (ou Tera Term) par des commandes simples :

Montage mécanique

  1. Découpez un carré de contreplaqué 15 × 15 cm pour la base.
  2. Trouvez le centre (intersection des diagonales) et percez un trou de 6 mm.
  3. Insérez le moyeu du moteur dans ce trou pour tracer son contour.
  4. Découpez au plus près du contour à la scie à chantourner, de sorte que les deux trous de fixation du moteur reposent sur le bois.
  5. Collez les 4 patins en caoutchouc (10 mm) sous la base pour le dégagement (le moteur dépasse légèrement).
  6. Fixez le plateau tournant sur l'arbre du moteur via le moyeu Pololu.

Câblage

Le driver X113647 se connecte directement aux broches 4, 5, 6, 7 de l'Arduino (Bleu, Rose, Jaune, Orange du moteur). Le fil rouge du moteur va au VCC, le bleu au GND. Voir le schéma Fritzing ci-dessous.

#define motorPin1 4  // Bleu  - 28BYJ-48 pin 1
#define motorPin2 5  // Rose  - 28BYJ-48 pin 2
#define motorPin3 6  // Jaune - 28BYJ-48 pin 3
#define motorPin4 7  // Orange- 28BYJ-48 pin 4
// Rouge - 28BYJ-48 pin 5 (VCC)
// Bleu  - 28BYJ-48 pin GND
#define STEPS_PER_TURN 2048  // Pas pour 360°

Code

Le sketch utilise la bibliothèque AccelStepper pour un contrôle fluide avec accélération. Les commandes série sont traitées en temps réel.

/* Plateau tournant série - Cesare Brizio
   Basé sur : https://www.cesarebrizio.it/Arduino/Turntable.html
   Schéma : https://www.tdegypt.com/wp-content/uploads/2017/08/stepper-motor-wiring.png
*/

#include <AccelStepper.h>

// Broches moteur
#define motorPin1 4
#define motorPin2 5
#define motorPin3 6
#define motorPin4 7
#define STEPS_PER_TURN 2048

int motorSpeed = 500;   // Vitesse max (éviter >800 sur 28BYJ-48)
int motorAccel = 400;   // Accélération
int myPos = 0;          // Position de départ pour rotation 360°
int LeftTurnUp = 0;     // Drapeaux direction
int RightTurnDown = 0;
int Continuous = 0;     // Mode continu vs un tour
int incomingByte = 0;   // Données série

// AccelStepper: 4 fils, séquence 1-3-2-4 pour 28BYJ-48
AccelStepper stepper(4, motorPin1, motorPin3, motorPin2, motorPin4);

void setup() {
  Serial.begin(9600);
  stepper.setMinPulseWidth(20);  // Impulsions assez longues pour le driver
  stepper.setMaxSpeed(motorSpeed);
  stepper.setSpeed(motorSpeed);
  stepper.setAcceleration(motorAccel);
  stepper.setCurrentPosition(stepper.currentPosition());
  stepper.runToPosition();
  
  Serial.println("Commandes disponibles :");
  Serial.println("R = rotation horaire continue");
  Serial.println("r = 360° horaire");
  Serial.println("L = rotation anti-horaire continue");
  Serial.println("l = 360° anti-horaire");
  Serial.println("S = stop");
}

void loop() {
  // --- Réception commandes série ---
  if (Serial.available() > 0) {
    incomingByte = Serial.read();
    
    if (incomingByte == 'R') {  // Continu horaire
      Serial.println("Reçu «R» - rotation horaire continue");
      stepper.stop(); stepper.runToPosition(); // Arrêt rapide
      LeftTurnUp = 1; RightTurnDown = 0; Continuous = 1;
      stepper.setCurrentPosition(stepper.currentPosition());
      stepper.setSpeed(motorSpeed);
    }
    if (incomingByte == 'L') {  // Continu anti-horaire
      Serial.println("Reçu «L» - rotation anti-horaire continue");
      stepper.stop(); stepper.runToPosition();
      RightTurnDown = 1; LeftTurnUp = 0; Continuous = 1;
      stepper.setCurrentPosition(stepper.currentPosition());
      stepper.setSpeed(motorSpeed);
    }
    if (incomingByte == 'r') {  // Un tour horaire
      Serial.println("Reçu «r» - un tour horaire");
      stepper.stop(); stepper.runToPosition();
      LeftTurnUp = 1; RightTurnDown = 0; Continuous = 0;
      stepper.setCurrentPosition(stepper.currentPosition());
      stepper.setSpeed(motorSpeed);
      myPos = stepper.currentPosition();
    }
    if (incomingByte == 'l') {  // Un tour anti-horaire
      Serial.println("Reçu «l» - un tour anti-horaire");
      stepper.stop(); stepper.runToPosition();
      RightTurnDown = 1; LeftTurnUp = 0; Continuous = 0;
      stepper.setCurrentPosition(stepper.currentPosition());
      stepper.setSpeed(motorSpeed);
      myPos = stepper.currentPosition();
    }
    if (incomingByte == 'S') {  // Stop
      Serial.println("Reçu «S» - arrêt");
      LeftTurnUp = 0; RightTurnDown = 0;
      stepper.stop(); stepper.runToPosition();
    }
  }
  
  // --- Exécution mouvement ---
  if (Continuous == 1) {        // Mode continu
    if (LeftTurnUp == 1) stepper.moveTo(10000);
    if (RightTurnDown == 1) stepper.moveTo(-10000);
    stepper.run();
  }
  if (Continuous == 0) {        // Mode un tour (2048 pas)
    if (LeftTurnUp == 1) stepper.moveTo(myPos + STEPS_PER_TURN);
    if (RightTurnDown == 1) stepper.moveTo(myPos - STEPS_PER_TURN);
    stepper.run();
  }
}

Schéma Fritzing

Plateau tournant piloté par Arduino et moteur pas-à-pas série

Processus de fabrication

  1. Moteurs pas à pas : types, caractéristiques et applications pratiques
  2. Drivers intégrés simplifient la conception de moteurs pas-à-pas haute puissance
  3. Ventilateur à contrôle de température : système relais DIY pour refroidissement meuble multimédia
  4. Raspoulette : Prototype de système autonome de porte de poulailler à énergie solaire
  5. Tourelle Nerf Autonome DIY – Construire un Canon Nerf Intelligent avec Moteurs Pas-à-Pas, Caméra et Arduino
  6. Bibliothèque Complète pour Moteur Pas à Pas Bipolaire Arduino
  7. Véhicule Télécommandé par Android avec Raspberry Pi et Shield Moteur
  8. Comprendre les moteurs linéaires : de l'énergie électrique au mouvement linéaire précis
  9. Servomoteurs expliqués : fonctionnement et importance