Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Tecnología Industrial

Controlador Automatizado de Barrera Ferroviaria: Circuito Arduino y Código Fuente

Circuito Controlador Automático de Barrera Ferroviaria de Alta Velocidad Usando Arduino y Sensores Ultrasónicos

En este tutorial, aprenderemos cómo diseñar un sistema simple y eficiente de controlador automático de barrera ferroviaria de alta velocidad. Este es un enfoque relativamente simple para este proyecto pero puede tomarlo como bloque básico y en futuras modificaciones también podemos rastrear la velocidad del tren al pasar y mucho más. Pero antes de saltar al tutorial, necesitamos una idea sobre qué es automatización y qué exactamente se puede esperar de ella.

Automatización básicamente significa idear un método para reducir o eliminar esfuerzos/intervención humana. En este tutorial explicaremos cómo automatizar una barrera ferroviaria con Arduino usando motor servo junto con software Proteus.

La complejidad de la automatización puede variar desde un control básico "encendido/apagado" hasta algoritmos multivariable altamente complejos. Los sistemas de control para automatización pueden ser de lazo abierto o cerrado, significando que pueden trabajar con un solo parámetro de entrada o en respuesta a la salida retroalimentada como entrada en sistemas de lazo cerrado. La automatización en la industria ferroviaria es una necesidad importante al avanzar a la era avanzada y para reducir el riesgo de accidentes por errores humanos, es muy importante dejar que estas tareas sean manejadas por estas máquinas inteligentes.

Como en el caso de toda tecnología, la automatización también tiene pros y contras:

Ventajas

  1. Aumento de productividad
  2. Calidad predecible (Mejora de Calidad)
  3. Mayor robustez
  4. Gran consistencia de salida
  5. Reducción de gastos de mano de obra humana
  6. Altamente preciso
  7. Reduce esfuerzos humanos en trabajos monótonos

Desventajas

  1. Susceptible a amenazas de seguridad
  2. Costo de desarrollo podría exceder predicciones
  3. Alto costo de implementación
  4. Causa de desempleo en muchos sectores

Las ventajas mencionadas superan ampliamente las desventajas y por eso el mundo entero está entrando en la era de la automatización.

En este tutorial intentamos automatizar una barrera ferroviaria para abrir y cerrar cuando el circuito detecta un tren en la vía e iniciar un zumbador o alarma representando que la velocidad del tren es mayor que un umbral particular. Para lograr esto, usaremos dos componentes electrónicos muy usados: Arduino y motor servo.

El sensor que usaremos es el sensor ultrasónico, pero no es obligatorio usar este sensor; también podemos hacer una versión diferente usando módulo sensor IR y depende de nuestra elección, qué queremos usar y qué está disponible.

Componentes Requeridos para Controlador de Barrera Ferroviaria

  1. Arduino UNO
  2. Zumbador (Buzzer)
  3. Sensor Ultrasónico (HC-SR04)
  4. Motor Servo

Software Requerido:

  1. Arduino IDE
  2. Proteus

Diagrama de Circuito del Controlador de Barrera Ferroviaria

Controlador Automatizado de Barrera Ferroviaria: Circuito Arduino y Código Fuente

Descripción de Componentes

Arduino UNO

Arduino es básicamente una placa de desarrollo de código abierto que utiliza principalmente el microcontrolador Microchip ATmega328P y es fabricada por Arduino.cc. La placa viene con un conjunto de pines de entrada/salida compuestos por digitales y analógicos que pueden interconectarse a placas de expansión y circuitos externos.

La placa viene con 14 pines digitales junto con 6 pines analógicos que se utilizan o hacen programables con la ayuda de un IDE (Entorno de Desarrollo Integrado) que viene con ella: Arduino IDE. El programa se graba vía cable USB tipo B. Métodos de alimentación: por cable USB o conectando 9V CC. Rango de voltaje aceptable: 7 a 20 voltios. Por diseño y funcionamiento, no es muy diferente de sus otros familiares: Arduino Nano y Arduino Leonardo.

STK500 sigue siendo el protocolo original para Uno comunicarse. La diferencia mayor de sus predecesores es que no usa el chip FTDI USB-a-serial. Por el contrario, usa ATmega 16U2 (Atmega8U2 hasta versión R2) programado como conversor USB-a-serial.

Controlador Automatizado de Barrera Ferroviaria: Circuito Arduino y Código Fuente

Sensor Ultrasónico (HC-SR04)

El sensor ultrasónico es el sensor básico que usamos para determinar la distancia de un objeto. De otra forma, se usa para medir qué tan lejos está un objeto de un punto de referencia. Tiene básicamente 4 pines;

¿Cómo funciona el ultrasónico? El transmisor (trig) envía una señal de sonido de alta frecuencia que es reflejada por el objeto y luego la señal reflejada es recibida en el receptor (echo). Como la velocidad del sonido en aire es conocida, podemos calcular la distancia. Este sensor es extremadamente popular entre los aficionados a Arduino que lo usan en sus proyectos diariamente y para disparar este sensor requerimos un pulso alto de 10 microsegundos o más.

Características del sensor ultrasónico:-

Artículo Relacionado: Sistema Automático de Riego de Plantas – Circuito, Código y Reporte de Proyecto

Controlador Automatizado de Barrera Ferroviaria: Circuito Arduino y Código Fuente

Motor Servo

Estos son un tipo especial de motores empleados para movimiento muy específico en un ángulo particular. Es un actuador rotativo o lineal que permite control preciso en ciertas posiciones angulares o lineales. El motor servo no es una entidad única sino una combinación de un motor adecuado junto con un sensor que da retroalimentación de la posición actual del motor.

Para usar este motor servo se requieren varios módulos avanzados ya que no es similar en facilidad de uso al motor DC. Estos motores se usan básicamente en robótica e industrias de manufactura a gran escala.

Estos motores tienen poca similitud con los motores paso a paso que representan control de lazo abierto. Los motores paso a paso tienen pasos integrados en los que giran pero con la falta de un sistema de retroalimentación, su uso se limita a una aplicación específica para la que fueron diseñados y fabricados.

Esta falta de retroalimentación es lo que distingue al motor servo de los motores paso a paso y les da ventaja al ser dinámicos y personalizables según la tarea con pequeña alteración en la programación. Un módulo controlador dedicado generalmente viene con el motor servo del fabricante.

Mecanismo– Es básicamente un servomecanismo de lazo cerrado que utiliza el sistema de retroalimentación para actualizar el movimiento y la posición final del rotor. La entrada al control del motor puede ser analógica o digital.

Un codificador de algún tipo está emparejado al motor para dar retroalimentación de posición y velocidad al control que genera una señal de error hasta que la salida deseada no se alcanza. Y para reducir esta señal de error, el motor puede moverse en cualquiera dirección para finalmente reducir la señal de error a cero. Cuando se alcanza esta condición, se logra la salida deseada. Los servomotores mejorados y sofisticados tienen un codificador óptico rotativo en el eje de salida para medir su velocidad.

Controlador Automatizado de Barrera Ferroviaria: Circuito Arduino y Código Fuente

Zumbador (Buzzer)

El zumbador puede ser de naturaleza mecánica, electrónica, electromecánica y piezoeléctrica. Generalmente usamos el electrónico en hornos, concursos y electrodomésticos. Estos zumbadores tienen un circuito interno. El sonido se produce por el movimiento de un disco. El disco es ferromagnético. Es un dispositivo impulsado por corriente que tiene una fuente de voltaje como entrada.

Controlador Automatizado de Barrera Ferroviaria: Circuito Arduino y Código Fuente

Funcionamiento del Controlador Automático de Barrera Ferroviaria

En este circuito hemos usado sensores ultrasónicos y motores servo para replicar el funcionamiento de un cruce ferroviario. Ambos sensores se disparan con la ayuda de pines de disparador conectados a la placa Arduino y se calcula la distancia. El funcionamiento posterior del circuito depende completamente de la distancia medida.

Si la vía está despejada, los motores servo no harán nada, pero si un tren llega a cualquiera de los lados de la vía, la distancia medida por uno de los sensores variará de la distancia anterior. Así nos informaremos sobre la llegada del tren y en ningún tiempo, Arduino pondrá sus pines digitales 7 y 8 en ALTO.

Estos pines están conectados con los dos motores servo y entonces el servo cubrirá una distancia angular de 90° y por tanto la barrera se cerrará para bloquear el paso a vehículos. Cuando el tren se aleje del otro sensor, este notificará a Arduino sobre la salida del tren y los motores servo volverán a su posición anterior para abrir la barrera.

Considerando la seguridad de las personas, hemos agregado una característica más a este circuito: alertar en caso de tren de alta velocidad. Esto se logra calculando el tiempo entre las transiciones de dos sensores en un ciclo. Si el tiempo es menor que un valor determinado, el zumbador hará un sonido para alertar a las personas cerca del cruce.

Código Fuente del Proyecto y Explicación

En este sketch, hemos definido cinco variables de tipo entero y cuatro de tipo long. Las variables tr1, tr2, eh1 y eh2 se usan para enviar pulso y recibir valor de tiempo en microsegundos mientras que val1, val2, dis1 y dis2 almacenan valores de tiempo en microsegundos y distancia en cm. Baud rate establecido a 9600 bits/seg responsable de la comunicación entre la placa y el monitor serial.

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; 

Las funciones incluidas en void setup () se ejecutarán solo una vez durante la ejecución y su tarea es definir baud rate y modo del pin como entrada o salida.

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

Según el funcionamiento requerido, medimos continuamente la distancia disparando el sensor ultrasónico y la distancia calculada se establece como parámetro de la sentencia condicional. Si la condición es verdadera, la variable "pos" incrementa su valor para accionar los motores servo y cuando la condición es falsa, la variable "pos" decrementa su valor para devolver los motores servo a su posición anterior.

Hay una sentencia condicional más que verifica si dos sensores detectan el objeto rápidamente, entonces pondrá el pin 11 en alto para alimentar el zumbador y alertar a las personas. Todos estos procesos están englobados en void loop () y se repiten hasta que el Arduino se reinicie o se corte el suministro.

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

Interfaz de Archivo Hex con Proteus para Simulación: En su Arduino IDE haga clic en Archivo>Preferencias y luego en "Mostrar salida detallada" marque ambas opciones compilación y carga. Y, al compilar el código, en la ventana de abajo seleccione y copie la ubicación del archivo hex y en Proteus haga doble clic en Arduino y pegue la ubicación del archivo en la opción Archivo de Programa y haga clic en OK. Ahora su circuito estará listo para simulación en Proteus.

Proyectos Relacionados:


Tecnología Industrial

  1. Control Automático de Tren DIY con Arduino: Simple, Fiable y Personalizable
  2. SERENA: Sistema de Alarma Personalizado Arduino Mega 2560 con Pantalla TFT LCD Táctil
  3. Centro de Control de Potencia Arduino: N-FET, P-FET, Relé y RTC
  4. Sistema automático de riego para plantas con Arduino
  5. Latch SR con Puerta NOR: Construcción y Comprensión de Memoria Digital
  6. Modos de falla comunes en sistemas eléctricos probados
  7. Compuertas TTL NOR y OR: análisis de circuito y conversión
  8. Circuitos avanzados de control de motor: retención, parada y técnicas de retardo
  9. Monitorización en la nube: Sistema de control remoto para gestión de activos en tiempo real
  10. M-TECH: Sistema Avanzado de Control CNC para Routers Apollo
  11. Sistema Automático de Apertura de Puertas con Sensor PIR: Circuito, Funcionamiento y Aplicaciones