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

Système de contrôle automatique des barrières ferroviaires - Circuit et code source

Circuit de contrôleur de porte de chemin de fer automatique à grande vitesse utilisant Arduino et des capteurs à ultrasons

Dans ce didacticiel, nous allons apprendre à concevoir un système de contrôleur de porte ferroviaire automatique à grande vitesse simple et efficace. Il s'agit d'une approche relativement simple de ce projet, mais vous pouvez la prendre comme élément de base et, dans une modification ultérieure, nous pouvons également suivre la vitesse du train avec lequel il passe et bien plus encore. Mais avant de passer directement au didacticiel, nous devons avoir une idée de ce qu'est l'automatisation et de ce que l'on peut en attendre exactement.

L'automatisation signifie essentiellement concevoir une méthode pour réduire ou éliminer les efforts/interventions humaines. Dans ce didacticiel, nous allons expliquer comment automatiser une porte de chemin de fer avec Arduino en utilisant un servomoteur avec le logiciel Proteus.

La complexité de l'automatisation peut varier d'un contrôle de base "marche/arrêt" à des algorithmes multivariables très complexes. Les systèmes de contrôle à des fins d'automatisation peuvent être en boucle ouverte ou en boucle fermée, ce qui signifie qu'ils peuvent fonctionner soit avec un seul paramètre d'entrée, soit en réponse à la sortie alimentée en entrée, comme dans le cas des systèmes en boucle fermée. L'automatisation dans l'industrie ferroviaire est un besoin important alors que nous entrons dans l'ère avancée et pour réduire le risque d'accidents dus à des erreurs d'origine humaine, il est très important que nous laissions ces tâches être gérées par ces machines intelligentes.

Comme dans le cas de toute technologie, l'automatisation a aussi ses avantages et ses inconvénients :

Avantages

  1. Augmentation de la productivité
  2. Qualité prévisible (amélioration de la qualité)
  3. Robustesse accrue
  4. Excellente cohérence de sortie
  5. Réduction des dépenses de main-d'œuvre humaine
  6. Très précis
  7. Réduit les efforts humains dans les travaux monotones

Inconvénients

  1. Susceptible aux menaces de sécurité
  2. Les coûts de développement peuvent dépasser les prévisions
  3. Coût d'installation élevé
  4. Cause du chômage dans de nombreux secteurs

Les avantages mentionnés l'emportent de loin sur les inconvénients et c'est pourquoi le monde entier entre dans l'ère de l'automatisation.

Dans ce didacticiel, nous essayons d'automatiser une porte de chemin de fer pour qu'elle s'ouvre et se ferme chaque fois que le circuit détecte un train le long de la voie et nous allons également déclencher un buzzer ou une alarme indiquant la vitesse du train est supérieur à un seuil particulier et pour y parvenir, nous allons utiliser les deux composants électroniques très largement utilisés, à savoir l'Arduino et le servomoteur.

Le capteur que nous allons utiliser dans ce tutoriel est le capteur à ultrasons mais il n'est pas obligatoire d'utiliser ce capteur nous pouvons également faire une version différente de ce projet en utilisant le capteur IR module et cela dépend de notre choix, de ce que nous voulons utiliser et de ce qui est facilement disponible pour nous.

Composants requis pour le contrôleur de porte ferroviaire

  1. Arduino UNO
  2. Sonnerie
  3. Capteur à ultrasons (HC-SR04)
  4. Servomoteur

Logiciel requis :

  1. IDE Arduino
  2. Protée

Schéma de circuit du contrôleur de porte ferroviaire 

Description du composant

Arduino UNO

Arduino est essentiellement une carte de développement qui est open source et utilise principalement le microcontrôleur Microchip ATmega328P et est fabriqué par Arduino.cc. La carte est livrée avec un ensemble de broches d'entrée/sortie composées de broches numériques et analogiques qui peuvent être interfacées avec différentes cartes d'extension et circuits externes.

La carte est livrée avec 14 broches numériques ainsi que 6 broches analogiques qui sont utilisées ou rendues programmables à l'aide d'un IDE (environnement de développement intégré) qui l'accompagne, c'est-à-dire Arduino IDE. Le programme est gravé via un câble USB de type B. Les méthodes de mise sous tension de la carte peuvent être soit par le câble USB, soit en connectant une alimentation 9 volts cc. La plage de tension acceptable varie de 7 à 20 volts. Du point de vue de la conception et du fonctionnement, il n'est pas trop différent des autres membres de sa famille, à savoir Arduino Nano et Arduino Leonardo.

STK500 est toujours le protocole d'origine pour communiquer avec Uno. La principale différence avec ses prédécesseurs est qu'il n'utilise pas la puce de pilote USB-série FTDI. Au contraire, il utilise ATmega 16U2 (Atmega8U2 jusqu'à la version R2) qui est programmé comme un convertisseur USB-série.

Capteur à ultrasons (HC-SR04)

Le capteur à ultrasons est le capteur de base que nous utilisons pour déterminer la distance d'un objet. D'une autre manière, nous pouvons dire qu'il est utilisé pour mesurer la distance entre l'objet et un point de référence particulier. Il a essentiellement 4 broches ;

Comment fonctionnent les ultrasons ? L'émetteur (trig) envoie un signal sonore à haute fréquence qui est ensuite réfléchi par l'objet, puis le signal réfléchi est ensuite reçu au niveau du récepteur (écho). Par conséquent, la vitesse du son dans l'air nous est connue, nous pouvons calculer la distance. Ce capteur est extrêmement populaire parmi les bricoleurs Arduino qui l'utilisent quotidiennement dans leurs projets et pour déclencher ce capteur, nous avons besoin d'une impulsion élevée de 10 microsecondes ou plus.

Caractéristiques du capteur à ultrasons :-

Poste connexe :système d'arrosage et d'irrigation automatique des plantes - Circuit, code et rapport de projet

Servomoteur

Il s'agit d'un type spécial de moteurs qui sont utilisés pour un mouvement très spécifique à un angle particulier. C'est un actionneur rotatif ou linéaire qui permet un contrôle précis à certaines positions angulaires ou linéaires. Le servomoteur n'est pas une entité unique mais une combinaison d'un moteur approprié avec un capteur qui donne le retour de la position actuelle du moteur.

Afin d'utiliser ce servomoteur, plusieurs autres modules avancés doivent être utilisés car il n'est pas similaire en termes de facilité d'utilisation du moteur à courant continu. Ces moteurs sont essentiellement utilisés dans la robotique et les industries manufacturières à grande échelle.

Ces moteurs ont une petite similitude avec les moteurs pas à pas qui représentent le contrôle en boucle ouverte. Les moteurs pas à pas ont des pas intégrés auxquels ils tournent, mais en l'absence d'un système de rétroaction, leur utilisation est limitée à une application spécifique pour laquelle ils ont été conçus et fabriqués.

Ce manque de rétroaction est ce qui distingue un servomoteur de ces moteurs pas à pas et leur donne le dessus car ils sont dynamiques et peuvent être personnalisés en fonction de la tâche à accomplir avec un peu de changement dans la programmation. Un module contrôleur dédié est généralement fourni avec le servomoteur par le constructeur.

Mécanisme - Il s'agit essentiellement d'un servomécanisme en boucle fermée qui utilise le système de rétroaction pour mettre à jour le mouvement et la position finale du rotor. L'entrée de la commande du moteur peut être analogique ou numérique.

Un encodeur d'un certain type est couplé au moteur afin de donner le retour de position et de vitesse à la commande qui génère un signal d'erreur jusqu'à ce que la sortie souhaitée ne soit pas atteinte. Et afin de réduire ce signal d'erreur, le moteur peut se déplacer dans les deux sens pour finalement réduire le signal d'erreur à zéro. Lorsque cette condition est atteinte, la sortie souhaitée est atteinte. Les servomoteurs améliorés et sophistiqués ont un encodeur rotatif optique à l'arbre de sortie pour mesurer sa vitesse.

Sonnerie

Le buzzer peut être de nature mécanique, électronique, électromécanique et piézoélectrique. Généralement, nous utilisons l'électronique dans les fours, les jeux télévisés et les appareils, etc. Ces buzzers ont un circuit interne. Le son produit est dû au mouvement d'un disque. Le disque est de nature ferromagnétique. C'est un appareil piloté par le courant qui a une source de tension comme entrée.

Fonctionnement du contrôleur automatique de porte de chemin de fer

Dans ce circuit, nous avons utilisé des capteurs à ultrasons et des servomoteurs pour reproduire le fonctionnement d'un passage à niveau. Les deux capteurs sont déclenchés à l'aide de broches de déclenchement attachées à la carte Arduino et la distance est calculée. La poursuite du fonctionnement du circuit dépend entièrement de la distance mesurée.

Si la voie est dégagée, les servomoteurs ne feront rien, mais si un train arrive de chaque côté de la voie, la distance mesurée par l'un des capteurs variera par rapport à la distance précédente. De cette façon, nous serons informés de l'arrivée du train et en un rien de temps, Arduino réglera ses broches numériques 7 et 8 sur HIGH.

Ces broches sont connectées aux deux servomoteurs, puis le servo couvrira une distance angulaire de 90 o et par conséquent, la porte se fermera pour bloquer le chemin des véhicules. Lorsque le train s'éloignera de l'autre capteur, l'Arduino sera informé du départ du train et les servomoteurs atteindront à nouveau leur position précédente pour ouvrir la porte.

Considérant la sécurité des personnes, nous avons ajouté une fonctionnalité supplémentaire à ce circuit et il s'agit de les alerter en cas de train à grande vitesse. Ceci est réalisé en calculant le temps entre les transitions de deux capteurs dans un cycle. Si le temps est inférieur à une certaine valeur, le buzzer émettra un bourdonnement pour alerter les personnes à proximité du passage à niveau.

Code source du projet et explication

Dans cette esquisse, nous avons défini cinq variables de type entier et quatre de type long. Les variables tr1, tr2, eh1 et eh2 sont utilisées pour envoyer des impulsions et recevoir des valeurs de temps en microsecondes tandis que les variables val1, val2, dis1 et dis2 sont utilisées pour stocker des valeurs de temps en microsecondes et de distance en cm. Le débit en bauds est défini sur 9600 bits/s et est responsable de la communication entre la carte et le moniteur série.

const int tr1 = 13, eh1 = 12, tr2 = 3, eh2 = 2;;
 int bz = 11;
unsigned long val1, dis1, val2, dis2;
#include 
Servo myservo1;
Servo myservo2;
int pos=-1;

Les fonctions incluses dans la configuration vide () ne s'exécuteront qu'une seule fois pendant l'exécution et leur tâche consiste à définir le débit en bauds et le mode de la broche en entrée ou en sortie.

void setup() {
  // put your setup code here, to run once:
pinMode(tr1, OUTPUT);
pinMode(tr2, OUTPUT);
pinMode(bz, OUTPUT);
 
  pinMode(eh1, INPUT);
  pinMode(eh2, INPUT);
  myservo1.attach(8);
 myservo2.attach(7);

  Serial.begin(9600);
}

Conformément au fonctionnement requis, nous mesurons en continu la distance en déclenchant le capteur à ultrasons et la distance calculée est définie comme paramètre de l'instruction conditionnelle. Si la condition s'avère vraie, la variable "pos" incrémente sa valeur pour faire fonctionner les servomoteurs et lorsque la condition est trouvée incorrecte, la variable "pos" diminue sa valeur pour ramener les servomoteurs à leur position précédente.

Il y a une autre instruction conditionnelle qui vérifie si deux capteurs détectent l'objet rapidement, puis il placera la broche 11 haute pour alimenter le buzzer afin d'alerter les gens. Tous ces processus sont inclus dans la boucle vide () et ils sont répétés jusqu'à ce que l'Arduino soit réinitialisé ou que l'alimentation soit arrêtée.

void loop() {
  // put your main code here, to run repeatedly:
 
 digitalWrite(tr1, LOW);
 delayMicroseconds(2);
 digitalWrite(tr1, HIGH);
 delayMicroseconds(10);
 digitalWrite(tr1, LOW);
 val1 = pulseIn(eh1, HIGH);
 dis1 = (val1 * 0.0343) / 2;

 digitalWrite(tr2, LOW);
 delayMicroseconds(2);
 digitalWrite(tr2, HIGH);
 delayMicroseconds(10);
 digitalWrite(tr2, LOW);
 val2 = pulseIn(eh2, HIGH);
 dis2 = (val2 * 0.0343) / 2;
  
  Serial.println("distance is ");
 Serial.println(dis1);
  Serial.println(dis2);
  if(dis1 < 100 || dis2 < 100)
  {
    if(pos==-1){
    for (pos = 0; pos <= 90; pos += 1) { 
    myservo1.write(pos); 
    myservo2.write(pos);            
    delay(15);}
  }
     delay(1000);
    digitalWrite(tr1, LOW);
    delayMicroseconds(2);
    digitalWrite(tr1, HIGH);
    delayMicroseconds(10);
    digitalWrite(tr1, LOW);
    val1 = pulseIn(eh1, HIGH);
    dis1 = (val1 * 0.0343) / 2; 
    
    digitalWrite(tr2, LOW);
    delayMicroseconds(2);
    digitalWrite(tr2, HIGH);
    delayMicroseconds(10);
    digitalWrite(tr2, LOW);
    val2 = pulseIn(eh2, HIGH);
    dis2 = (val2 * 0.0343) / 2;
     
      if(dis1 < 100 || dis2 < 100) {digitalWrite(bz, HIGH); Serial.println("distance2 is "); Serial.println(dis1); Serial.println(dis2);} } else if(dis1 >= 100 && dis2 >= 100)
    { if(pos==91){
      for (pos = 90; pos >= 0; pos -= 1) {
    myservo1.write(pos);   
    myservo2.write(pos);           
    delay(15);  
      
    }                  
  }
  digitalWrite(bz, LOW); 
      delay(200);
      }
}

Interfaçage du fichier Hex avec Proteus pour la simulation : Dans votre IDE Arduino, cliquez sur Fichier> Préférences puis dans "Afficher la sortie détaillée", cochez à la fois les options de compilation et de téléchargement. Et, lors de la compilation du code dans la fenêtre ci-dessous, sélectionnez et copiez l'emplacement du fichier hexadécimal et dans Proteus, double-cliquez sur Arduino et collez l'emplacement du fichier dans l'option Fichier programme et cliquez sur OK. Votre circuit sera maintenant prêt pour la simulation dans Proteus.

Projets associés :


Technologie industrielle

  1. Verrou S-R de porte NOR
  2. Échecs probables dans les systèmes éprouvés
  3. Portes TTL NOR et OU
  4. Circuits de commande de moteur
  5. Circuit et fonctionnement du système d'ouverture de porte automatique à détection de mouvement
  6. Système de commande CNC M-TECH
  7. Contrôle automatique des trains
  8. Système d'alarme Arduino :SERENA
  9. Cloud monitoring, un système de contrôle à distance