Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Industrietechnik

Automatisches Bahntorsteuerungssystem – Schaltung und Quellcode

Hochgeschwindigkeits-Autobahntor-Controller-Schaltung mit Arduino und Ultraschallsensoren

In diesem Tutorial lernen wir, wie man ein einfaches und effizientes automatisches Hochgeschwindigkeits-Gattersteuerungssystem entwirft. Dies ist ein relativ einfacher Ansatz für dieses Projekt, aber Sie können dies als Grundbaustein nehmen und in weiterer Modifikation können wir auch die Geschwindigkeit des vorbeifahrenden Zuges verfolgen und vieles mehr. Aber bevor wir direkt in das Tutorial einsteigen, müssen wir uns eine Vorstellung davon machen, was Automatisierung ist und was genau man davon erwarten kann.

Automatisierung bedeutet im Grunde, eine Methode zu entwickeln, um menschliche Bemühungen/Eingriffe zu reduzieren oder zu eliminieren. In diesem Tutorial erklären wir, wie man ein Eisenbahntor mit Arduino unter Verwendung eines Servomotors zusammen mit der Proteus-Software automatisiert.

Die Komplexität der Automatisierung kann von einer einfachen „Ein/Aus“-Steuerung bis hin zu hochkomplexen multivariablen Algorithmen reichen. Die Steuerungssysteme für Automatisierungszwecke können entweder Open Loop oder Closed Loop sein, was bedeutet, dass sie entweder mit einem einzelnen Eingangsparameter oder in Reaktion auf den als Eingang zugeführten Ausgang wie im Fall von Closed Loop-Systemen arbeiten können. Die Automatisierung in der Eisenbahnindustrie ist ein wichtiger Bedarf, da wir in die fortgeschrittene Ära eintreten und um das Unfallrisiko aufgrund menschlicher Fehler zu verringern, ist es sehr wichtig, dass wir diese Aufgaben von diesen intelligenten Maschinen erledigen lassen.

Wie jede Technologie hat auch die Automatisierung ihre Vor- und Nachteile:

Vorteile

  1. Steigerung der Produktivität
  2. Vorhersagbare Qualität (Qualitätsverbesserung)
  3. Erhöhte Robustheit
  4. Großartige Ausgabekonsistenz
  5. Reduzierung der Personalkosten
  6. Sehr genau
  7. Reduziert den menschlichen Aufwand bei monotonen Arbeiten

Nachteile

  1. Anfällig für Sicherheitsbedrohungen
  2. Die Entwicklungskosten könnten die Prognose übersteigen
  3. Hohe Einrichtungskosten
  4. Ursache der Arbeitslosigkeit in vielen Branchen

Die genannten Vorteile überwiegen bei weitem die Nachteile und deshalb tritt die ganze Welt in das Zeitalter der Automatisierung ein.

In diesem Tutorial versuchen wir, ein Bahntor zu automatisieren, um es zu öffnen und zu schließen, wenn die Schaltung einen Zug entlang der Strecke erkennt, und wir werden auch einen Summer oder einen Alarm auslösen, der die Geschwindigkeit anzeigt des Zuges ist höher als eine bestimmte Schwelle und um dies zu erreichen, werden wir die beiden sehr weit verbreiteten elektronischen Komponenten verwenden, d.h. Arduino und Servomotor.

Der Sensor, den wir in diesem Tutorial verwenden werden, ist der Ultraschallsensor, aber es ist nicht zwingend erforderlich, diesen Sensor zu verwenden. Wir können auch eine andere Version dieses Projekts mit dem IR-Sensor erstellen Modul und es hängt von unserer Wahl ab, was wir verwenden möchten und was uns leicht zur Verfügung steht.

Erforderliche Komponenten für die Bahntorsteuerung

  1. Arduino UNO
  2. Summer
  3. Ultraschallsensor (HC-SR04)
  4. Servomotor

Erforderliche Software:

  1. Arduino-IDE
  2. Proteus

Schaltplan der Bahntorsteuerung 

Komponentenbeschreibung

Arduino UNO

Arduino ist im Grunde ein Entwicklungsboard, das Open Source ist und hauptsächlich den Mikrocontroller ATmega328P von Microchip verwendet und von Arduino.cc hergestellt wird. Das Board wird mit einem Satz von digitalen und analogen Eingangs-/Ausgangspins geliefert, die an verschiedene Erweiterungsboards und externe Schaltungen angeschlossen werden können.

Das Board verfügt über 14 digitale Pins zusammen mit 6 analogen Pins, die mit Hilfe einer mitgelieferten IDE (Integrated Development Environment), nämlich Arduino, verwendet oder programmierbar gemacht werden IDE. Das Programmierte wird über ein USB-Kabel Typ B gebrannt. Das Einschalten der Platine kann entweder über das USB-Kabel oder durch Anschließen einer 9-Volt-Gleichstromversorgung erfolgen. Der zulässige Spannungsbereich liegt zwischen 7 und 20 Volt. Hinsichtlich des Designs und der Funktionsweise unterscheidet es sich nicht allzu sehr von seinen anderen Familienmitgliedern, nämlich Arduino Nano und Arduino Leonardo.

STK500 ist immer noch das ursprüngliche Kommunikationsprotokoll für Uno. Der Hauptunterschied zu seinen Vorgängern besteht darin, dass der FTDI-USB-to-Serial-Treiberchip nicht verwendet wird. Im Gegenteil, es verwendet ATmega 16U2 (Atmega8U2 bis Version R2), das wie ein USB-zu-Seriell-Konverter programmiert ist.

Ultraschallsensor (HC-SR04)

Der Ultraschallsensor ist der grundlegende Sensor, den wir verwenden, um die Entfernung eines Objekts zu bestimmen. Auf andere Weise können wir sagen, dass es verwendet wird, um zu messen, wie weit das Objekt von einem bestimmten Bezugspunkt entfernt ist. Es hat im Grunde 4 Pins;

Wie funktioniert Ultraschall? Der Sender (Trig) sendet ein hochfrequentes Schallsignal, das dann vom Objekt reflektiert wird, und das reflektierte Signal wird dann am Empfänger empfangen (Echo). Da uns die Schallgeschwindigkeit in der Luft bekannt ist, können wir die Entfernung berechnen. Dieser Sensor ist sehr beliebt bei den Arduino-Tüftlern, die ihn täglich in ihren Projekten verwenden, und um diesen Sensor auszulösen, benötigen wir einen hohen Impuls von 10 Mikrosekunden oder mehr.

Merkmale des Ultraschallsensors:-

Verwandter Beitrag:Automatisches Pflanzenbewässerungs- und Bewässerungssystem – Schaltkreis, Code und Projektbericht

Servomotor

Dies ist eine spezielle Art von Motoren, die für eine ganz bestimmte Bewegung in einem bestimmten Winkel eingesetzt werden. Es ist ein Dreh- oder Linearaktuator, der eine präzise Steuerung bei bestimmten Winkel- oder Linearpositionen ermöglicht. Der Servomotor ist keine einzelne Einheit, sondern eine Kombination aus einem geeigneten Motor und einem Sensor, der die aktuelle Position des Motors zurückgibt.

Um diesen Servomotor zu verwenden, müssen mehrere andere erweiterte Module verwendet werden, da es in Bezug auf die Benutzerfreundlichkeit nicht ähnlich ist, den Gleichstrommotor zu verwenden. Diese Motoren werden hauptsächlich in der Robotik und der großen Fertigungsindustrie eingesetzt.

Diese Motoren haben ein wenig Ähnlichkeit mit den Schrittmotoren, die die Open-Loop-Steuerung darstellen. Die Schrittmotoren haben eingebaute Schritte, mit denen sie sich drehen, aber da kein Rückkopplungssystem vorhanden ist, ist ihre Verwendung auf eine bestimmte Anwendung beschränkt, für die sie entwickelt und hergestellt wurden.

Dieses fehlende Feedback unterscheidet einen Servomotor von diesen Schrittmotoren und gibt ihnen die Oberhand, da sie dynamisch sind und je nach Aufgabe mit einem angepasst werden können kleine Änderung in der Programmierung. Ein dediziertes Controller-Modul wird in der Regel vom Hersteller mit dem Servomotor geliefert.

Mechanismus – Es handelt sich im Grunde genommen um einen Servomechanismus mit geschlossenem Regelkreis, der das Rückkopplungssystem zur Aktualisierung der Bewegung und der endgültigen Position des Rotors verwendet. Der Eingang zur Steuerung des Motors kann entweder analog oder digital sein.

Ein Encoder irgendeiner Art wird mit dem Motor gekoppelt, um die Positions- und Geschwindigkeitsrückmeldung an die Steuerung zu geben, die ein Fehlersignal erzeugt, bis der gewünschte Ausgang nicht erreicht wird. Und um dieses Fehlersignal zu reduzieren, kann sich der Motor in beide Richtungen bewegen, um das Fehlersignal schließlich auf Null zu reduzieren. Wenn diese Bedingung erreicht ist, wird die gewünschte Ausgabe erreicht. Verbesserte und ausgeklügelte Servomotoren haben einen optischen Drehgeber an der Ausgangswelle, um ihre Drehzahl zu messen.

Summer

Summer können mechanischer, elektronischer, elektromechanischer und piezoelektrischer Natur sein. Im Allgemeinen verwenden wir den elektronischen in Öfen, Spielshows und Geräten usw. Diese Summer haben einen internen Schaltkreis. Der erzeugte Ton entsteht durch die Bewegung einer Scheibe. Die Platte ist ferromagnetischer Natur. Es ist ein strombetriebenes Gerät, das eine Spannungsquelle als Eingang hat.

Arbeitsweise der automatischen Bahntorsteuerung

In dieser Schaltung haben wir Ultraschallsensoren und Servomotoren verwendet, um die Funktionsweise eines Bahnübergangs nachzubilden. Beide Sensoren werden mit Hilfe von Trigger-Pins ausgelöst, die an der Arduino-Platine befestigt sind, und die Entfernung wird berechnet. Die weitere Funktion der Schaltung hängt ganz von der gemessenen Distanz ab.

Wenn das Gleis frei ist, tun die Servomotoren nichts, aber wenn ein Zug auf beiden Seiten des Gleises ankommt, weicht die von einem der Sensoren gemessene Entfernung von der vorherigen Entfernung ab. Auf diese Weise werden wir über die Ankunft des Zuges informiert und im Nu setzt Arduino seine digitalen Pins 7 und 8 auf HIGH.

Diese Pins werden mit den beiden Servomotoren verbunden und dann legt der Servo einen Winkelabstand von 90 o zurück und daher wird das Tor geschlossen, um den Weg für Fahrzeuge zu blockieren. Wenn der Zug von dem anderen Sensor wegfährt, wird der Arduino über die Abfahrt des Zuges benachrichtigt und die Servomotoren erreichen wieder ihre vorherige Position, um das Tor zu öffnen.

In Anbetracht der Sicherheit der Menschen haben wir dieser Schaltung eine weitere Funktion hinzugefügt, und es geht darum, sie im Falle eines Hochgeschwindigkeitszugs zu warnen. Dies wird erreicht, indem die Zeit zwischen den Übergängen zweier Sensoren in einem Zyklus berechnet wird. Wenn festgestellt wird, dass die Zeit unter einem bestimmten Wert liegt, gibt der Summer einen Summton von sich, um Personen in der Nähe der Kreuzung zu warnen.

Projektquellcode und Erläuterung

In dieser Skizze haben wir fünf Variablen vom Typ Integer und vier vom Typ Long definiert. Die Variablen tr1, tr2, eh1 und eh2 werden zum Senden von Impulsen und zum Empfangen von Zeitwerten in Mikrosekunden verwendet, während die Variablen val1, val2, dis1 und dis2 zum Speichern von Zeitwerten in Mikrosekunden und Entfernungen in cm verwendet werden. Die Baudrate ist auf 9600 Bit/s eingestellt und ist für die Kommunikation zwischen Board und seriellem Monitor verantwortlich.

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;

Funktionen, die im void setup () enthalten sind, werden nur einmal während der Ausführung ausgeführt und ihre Aufgabe ist es, Baudrate und Modus des Pins als Eingang oder Ausgang zu definieren.

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);
}

Je nach erforderlicher Funktionsweise messen wir kontinuierlich die Entfernung, indem wir den Ultraschallsensor auslösen, und die berechnete Entfernung wird als Parameter der Bedingungsaussage festgelegt. Wenn festgestellt wird, dass die Bedingung wahr ist, erhöht die Variable „pos“ ihren Wert, um die Servomotoren zu betreiben, und wenn die Bedingung als falsch erkannt wird, verringert die Variable „pos“ ihren Wert, um die Servomotoren in ihre vorherige Position zurückzubringen.

Es gibt eine weitere bedingte Anweisung, die prüft, ob zwei Sensoren das Objekt schnell erfassen, dann wird Pin 11 hoch gesetzt, um den Summer mit Strom zu versorgen und die Leute zu warnen. Alle diese Prozesse sind in void loop () eingeschlossen und werden wiederholt, bis der Arduino zurückgesetzt oder die Versorgung gestoppt wird.

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);
      }
}

Schnittstellen-Hex-Datei mit Proteus zur Simulation: Klicken Sie in Ihrer Arduino IDE auf File>Preferences und aktivieren Sie dann in „Show verbose output“ sowohl die Optionen Compilation als auch Upload. Und nach der Kompilierung des Codes im Fenster unten wählen und kopieren Sie den Speicherort der Hex-Datei und doppelklicken Sie in Proteus auf Arduino und fügen Sie den Dateispeicherort in die Option Programmdatei ein und klicken Sie auf OK. Jetzt ist Ihre Schaltung bereit für die Simulation in Proteus.

Verwandte Projekte:


Industrietechnik

  1. NOR Gate S-R Latch
  2. Wahrscheinliche Fehler in bewährten Systemen
  3. TTL-NOR- und ODER-Gatter
  4. Motorsteuerkreise
  5. Schaltung und Funktionsweise des automatischen Türöffnungssystems mit Bewegungserkennung
  6. M-TECH CNC-Steuerung
  7. Automatische Zugbeeinflussung
  8. Arduino-Alarmsystem:SERENA
  9. Arduino-Kontrollzentrum
  10. Cloud-Überwachung, ein Fernsteuerungssystem