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ôle Automatique de Train Miniature Arduino – Simple, Fiable et Personnalisable

Composants et Fournitures

Composant Quantité Notes
Arduino UNO (ou Nano, Mega, etc.) 1 Tout modèle Arduino compatible
Pilote Moteur Double Pont en H L298N (module) 1 Module standard recommandé
Fils de Liaison 1 jeu Pour connexions

Applications et Services en Ligne

À Propos du Projet

Ce montage ultra-simple permet de faire circuler votre train miniature selon un horaire programmé. Vous définissez les temps de roulement, d'arrêt, d'accélération et de freinage. En modifiant les paramètres dans le croquis, vous créez n'importe quel scénario de mouvement automatique. Il suffit d'alimenter le système : le train démarre tout seul selon votre programme.

Programmation de l'Horaire (Exemple)

L'horaire est défini par des plages temporelles basées sur un compteur de secondes (counterScheduler) :

// 1 | 0 à 5 sec : Démarrage et accélération
if (counterScheduler <= 5) { ... }

// 2 | 10 à 15 sec : Freinage et arrêt
if ((counterScheduler >= 10) && (counterScheduler <= 15)) { ... }

// 3 | 16 sec : Inversion de marche
if (counterScheduler == 16) { ... }

// 4 | 20 à 30 sec : Nouveau départ sens inverse
if ((counterScheduler >= 20) && (counterScheduler <= 30)) { ... }

// 5 | 31 à 40 sec : Nouvel arrêt
if ((counterScheduler >= 31) && (counterScheduler <= 40)) { ... }

// 6 | > 40 sec : Boucle (retour au début)
if (counterScheduler > 40) { counterScheduler = 0; ... }

Paramètres de Mouvement

int brakingDelta = 5;      // Décrément vitesse / 100ms (freinage)
int accelerateDelta = 6;   // Incrément vitesse / 100ms (accélération)

Ces valeurs définissent la progressivité de l'accélération et du freinage (valeurs PWM 0-255).

Contrôle de Direction

La direction est gérée par les broches D6 (IN1) et D7 (IN2) du L298N :

// Marche avant par défaut
digitalWrite(L298_IN1, HIGH);
digitalWrite(L298_IN2, LOW);

// Marche arrière (inversion)
digitalWrite(L298_IN1, LOW);
digitalWrite(L298_IN2, HIGH);

Vous pouvez étendre ce croquis à l'infini : arrêts en gare multiples, variations de vitesse, détection de présence, commande par Bluetooth, etc.

Code Arduino Complet

// Configuration L298N
#define L298_ENA 5   // PWM vitesse
#define L298_IN1 6   // Direction 1
#define L298_IN2 7   // Direction 2

// Variables de séquence
int counterScheduler = 0;
unsigned long timerScheduler = 0;
unsigned long timerLocal = 0;
byte speedAuto = 0;

void setup() {
  pinMode(L298_ENA, OUTPUT);
  pinMode(L298_IN1, OUTPUT);
  pinMode(L298_IN2, OUTPUT);
  
  // Direction par défaut : AVANT
  digitalWrite(L298_IN1, HIGH);
  digitalWrite(L298_IN2, LOW);
}

void loop() {
  // Ordonnanceur : incrémente counterScheduler chaque seconde
  if (millis() > (timerScheduler + 1000)) {
    counterScheduler++;
    timerScheduler = millis();
  }

  // Paramètres mouvement
  int brakingDelta = 5;
  int accelerateDelta = 6;

  // --- SCÉNARIO "ALLER-RETOUR" ---

  // 1 | 0-5 sec : Accélération et croisière
  if (counterScheduler <= 5) {
    if (millis() > (timerLocal + 100)) {
      if (speedAuto < 240) speedAuto += accelerateDelta;
      else speedAuto = 255;
      analogWrite(L298_ENA, speedAuto);
      timerLocal = millis();
    }
  }

  // 2 | 10-15 sec : Freinage jusqu'à l'arrêt
  if ((counterScheduler >= 10) && (counterScheduler <= 15)) {
    if (millis() > (timerLocal + 100)) {
      if (speedAuto > 30) speedAuto -= brakingDelta;
      else speedAuto = 0;
      analogWrite(L298_ENA, speedAuto);
      timerLocal = millis();
    }
  }

  // 3 | 16 sec : Inversion de direction
  if (counterScheduler == 16) {
    digitalWrite(L298_IN1, LOW);
    digitalWrite(L298_IN2, HIGH);
  }

  // 4 | 20-30 sec : Accélération sens inverse
  if ((counterScheduler >= 20) && (counterScheduler <= 30)) {
    if (millis() > (timerLocal + 100)) {
      if (speedAuto < 240) speedAuto += accelerateDelta;
      else speedAuto = 255;
      analogWrite(L298_ENA, speedAuto);
      timerLocal = millis();
    }
  }

  // 5 | 31-40 sec : Freinage final
  if ((counterScheduler >= 31) && (counterScheduler <= 40)) {
    if (millis() > (timerLocal + 100)) {
      if (speedAuto > 30) speedAuto -= brakingDelta;
      else speedAuto = 0;
      analogWrite(L298_ENA, speedAuto);
      timerLocal = millis();
    }
  }

  // 6 | > 40 sec : Réinitialisation boucle
  if (counterScheduler > 40) {
    counterScheduler = 0;
    digitalWrite(L298_IN1, HIGH);
    digitalWrite(L298_IN2, LOW);
  }
}

Schéma de Câblage

Deux schémas sont fournis dans les fichiers du projet :

Connexions Principales :

Idées d'Évolution

Bon voyage sur votre réseau ! 🚂

Processus de fabrication

  1. Système automatisé de remplissage et de surveillance de piscine
  2. Comprendre le travail d'établi : définition, applications et avantages
  3. Comprendre le contrôle qualité : garantir une excellence constante
  4. Comprendre les presses automatiques : fonctionnement, avantages et applications
  5. Comprendre les presses à puissance automatiques : caractéristiques, avantages et applications
  6. Comprendre les cintreuses automatiques : fonctions, avantages et applications
  7. Comprendre les tables rotatives automatiques : précision et efficacité en métallurgie
  8. Guide complet des systèmes de transmission automatique
  9. Systèmes de lubrification centralisée automatique : types, composants et bénéfices