Circuito detector de velocidad para automóviles – Funcionamiento y código de alimentación

Industria del automóvil Exceso de velocidad Circuito de detección con Arduino

Tal vez sea necesario escuchar eslóganes como «El exceso de velocidad mata», «Conduce despacio», etc. en las carreteras. El exceso de velocidad es un riesgo para la vida de las personas, ya que puede acabar con la vida del conductor, de las personas sentadas dentro del automóvil o de las personas que se encuentran en la carretera. Por lo tanto, tiene que haber directrices y normas estrictas para conducir el automóvil a una velocidad correcta en carreteras seguras. Para ello, los visitadores deben disponer de algún instrumento que les ayude a detectar la velocidad del automóvil, de modo que en caso de que algún automóvil vaya a gran velocidad, puedan costear lo fantástico o tomar acciones obligatorias frente a la fuerza conductora. Hay un arma de mano que hace que el método sea tedioso y el policía tiene que comprobar manualmente la velocidad de cada automóvil.

Por eso te ofrecemos una aventura que puede ayudarte a detectar la velocidad de los automóviles de forma sencilla y rutinaria. Esto puede ser una aventura bastante sencilla y nunca costosa. Sólo necesitas un microcontrolador como el Arduino Uno y dos sensores IR para detectar la velocidad de los automóviles. Esta empresa ayudará a detectar la velocidad de un automóvil en movimiento sin necesidad de intervención humana, simplemente introduciéndolo en algún lugar de la calle. Esta empresa es sólo un prototipo y puede aplicarse a gran escala.

Piezas necesarias para la velocidad del automóvil Detección Misión

Arduino UNO

Arduino es una plataforma de código abierto que se utiliza para desarrollar una aventura electrónica. Se puede programar, borrar y reprogramar de forma sencilla en cualquier momento. Hay muchas placas Arduino disponibles en el mercado, como Arduino UNO, Arduino Nano, Arduino Mega, Arduino lilypad, etc., con especificaciones totalmente diferentes según su uso. En esta aventura, utilizaremos Arduino UNO para gestionar de forma rutinaria el equipo de la casa. Tiene el microcontrolador IC ATmega328 que funciona a una velocidad de reloj de 16MHz. Es muy eficiente y puede funcionar con los protocolos de comunicación USART, I2C y SPI.

Esta placa se suele programar con el programa de software Arduino IDE mediante un cable micro USB. El ATmega328 viene con un cargador de arranque preprogramado en la placa, lo que hace más sencillo añadir el código con la ayuda del {hardware} exterior. Tiene una enorme utilidad en la realización de iniciativas electrónicas o de mercancías. Para programar la placa se utiliza el lenguaje C y C++, que puede ser muy sencillo de estudiar y utilizar. El IDE de Arduino hace que la programación sea mucho más sencilla. Separa el código en dos elementos, es decir, la configuración void setup () y void loop (). La configuración void setup() se ejecuta sólo una vez y se utiliza para iniciar algún curso, mientras que void loop() consiste en una parte del código que debe ejecutarse repetidamente.

Este maniquí consta de 6 pines de entrada analógica y 14 pines digitales GPIO que pueden utilizarse como entrada y salida. Desde estos 6 pines, se proporcionan salidas PWM y analógicas mediante pinMode(), digitalWrite(), digitalRead() y analogRead(). Los seis canales de entrada analógica están en los pines A0 a A5 y proporcionan una decisión de 10 bits.

La placa puede alimentarse mediante un cable USB que funciona a 5 voltios o a través de una toma de corriente continua que funciona entre 7 y 20 voltios. Puede haber un regulador de voltaje a bordo para generar 3,3 voltios para hacer funcionar los aparatos de baja potencia. Para que el ATmega328 funcione con el protocolo de comunicación USART, SPI e I2C, tiene los pines 0 (Rx) y 1(Tx) para la comunicación USART, los pines SDA (A4) y SCL (A5) para I2C y los pines SS (10), MOSI (11), MISO (12) y SCK (13) para el protocolo de comunicación SPI. Estas especificaciones hacen que la placa Arduino Uno sea excelente para la empresa de Automatización de Residencias.

Interrupciones en Arduino UNO

Las interrupciones son los procesos por los que cualquier entrada/salida o cualquier instrucción puede descender del método tradicional o de la ejecución de la actividad y ejecutarse en primer lugar, lo que hace que tenga la mejor precedencia. La actividad interrumpida se ejecuta primero y, tras su finalización, las diferentes tareas se ejecutan con normalidad.

Principalmente, las interrupciones nos ayudan a que nuestro sistema sea más consciente de las tareas que requieren tiempo. Un procesador que está realizando una ejecución estándar puede ser interrumpido por algún sensor para ejecutar un curso seleccionado de lo que está en curso en la ISR (Interrupt Service Routine) y después de ejecutar la ISR el procesador puede reanudar de nuevo la ejecución tradicional. Como ejemplo en esta empresa, cada vez que el sensor IR detecte algún automóvil, entonces se activará una interrupción para que el Arduino UNO cese inmediatamente su curso completo y pueda señalar la detección del artículo o automóvil por el sensor IR.

Ahora hay dos variedades de interrupciones: interrupción del {Hardware} e interrupción del programa de software. En cualquier momento en que un pin de interrupción exterior ajuste su estado de bajo a excesivo o de excesivo a bajo, entonces se trata de una interrupción {hardware}. Las interrupciones del programa de software son atribuibles a algunas direcciones del programa de software. El Arduino UNO tiene dos pines de interrupción externos, el 2 y el 3, que son interpretados por el {hardware} y son muy rápidos.

Rutina de servicio de interrupción (ISR)

Un manejador de interrupciones, a menudo conocido como Rutina de Servicio de Interrupción, es un tipo de ocasión que incluye pequeñas unidades de dirección en él. Cuando se produce una interrupción externa, el procesador ejecuta primero el código que se encuentra en la ISR y vuelve de nuevo al estado en el que dejó la ejecución tradicional.

La sintaxis de la Rutina de Servicio de Interrupción es:

attachInterrupt(digitalPinToInterrupt(pin), ISR, mode);

Aquí digitalPinToInterrupt(pin) especifica el pin de entrada que se utiliza para la interrupción exterior. La actuación de la ISR se conoce como cuando se termina una interrupción externa. Los modos son de tres tipos: CAÍDA, SUBIDA y CAMBIO, que se diferencian por el tipo de transición. La caída se produce cuando el pin pasa de excesivo a bajo o de bajo a excesivo. El ascenso se produce cuando el pin pasa de bajo a excesivo y el cambio se produce cuando el pin pasa de bajo a excesivo o de bajo a excesivo.

En esta aventura, se utilizan dos pines de interrupción exterior para que 2 sensores IR detecten la velocidad del automóvil en los pines 2 y 3 del Arduino UNO.

Sensor IR

El sensor de infrarrojos es una máquina digital que mide las radiaciones infrarrojas y ayuda a detectar los obstáculos y el movimiento en nuestro entorno. Consta principalmente de un LED transmisor y un fotodiodo receptor y detecta las radiaciones infrarrojas con una longitud de onda de 700 nm a 1 mm emitidas por los objetos. Cuando se utiliza un determinado voltaje óptimo a lo largo del LED transmisor se transmiten los rayos infrarrojos. Si estos rayos caen sobre algún objeto, entonces ese objeto vuelve a mostrar los rayos IR que obtiene el diodo receptor. El diodo receptor genera una tensión en sus terminales que depende de la profundidad de la luz solar reflejada por el objeto. Normalmente, el LED del receptor de infrarrojos es más oscuro, mientras que el transmisor es más claro en la sombra.

El módulo del sensor de infrarrojos está formado por un LED de infrarrojos, un fotodiodo, un potenciómetro, un amplificador IC operacional y un LED. El LED IR emite el infrarrojo suave, mientras que el fotodiodo detecta el infrarrojo suave. Se utiliza un potenciómetro para cambiar el rango de detección y calibrar la salida del sensor en función de las necesidades. Se utiliza un amplificador IC operacional como comparador de tensión. Cuando el infrarrojo suave es emitido por el LED de infrarrojos, cae sobre el objeto y se muestra de nuevo al fotodiodo, lo que disminuye considerablemente su resistencia. Una de las salidas del op-amp está preparada por el potenciómetro como tensión umbral y la opuesta por el fotodiodo.

Por lo tanto, la caída de tensión a lo largo de la resistencia de secuencia es ALTA cuando la radiación incidente se suma al fotodiodo. Posteriormente, el amplificador operacional IC compara la tensión de umbral preestablecida y la tensión a lo largo de la resistencia de secuencia. Y basándose en esta comparabilidad, si la tensión a lo largo de la resistencia de secuencia es mayor que la tensión de borde, la salida del amplificador operacional IC puede ser ALTA. Así, el LED conectado a la salida del op-amp comienza a brillar. Vamos a cambiar la tensión del borde ajustando el potenciómetro del módulo sensor de infrarrojos.

Este sensor de infrarrojos tiene muchas finalidades y puede utilizarse en diversas iniciativas, como sensores de proximidad, robots de seguimiento de líneas, contador de mercancías por infrarrojos, alarma antirrobo, transmisor y receptor de música por infrarrojos.

Estos sensores infrarrojos se utilizan principalmente dentro de los termómetros de radiación para la medición de la temperatura en función del tejido del artículo.

El módulo del sensor de infrarrojos viene con 3 pines, dos de ellos son VCC y Piso y uno es el pin de salida digital que se activa cuando detecta algún impedimento. Este pin va al pin GPIO para ambos pines GPIO o pin de interrupción en el microcontrolador. En esta aventura, podemos utilizar dos sensores IR para detectar la velocidad del coche. Estos deben conectarse a los 2 pines de interrupción totalmente diferentes del Arduino UNO, que pueden utilizarse para detectar el espacio de tiempo entre los dos sensores IR.

Diagrama del circuito del detector de velocidad del automóvil

Funcionamiento del circuito detector de velocidad del coche

Realiza la conexión como se indica en el esquema del circuito. Coloca los 2 sensores IR uno al lado del otro. En esta aventura, hemos salvado una distancia de 30 cm entre ellos. Los sensores IR se alimentan del Arduino y los pines de información de cada uno de los sensores se conectan al pin 2 y al pin 3 del Arduino. Ahora copia el código dado en la última instancia de la aventura y pégalo en tu IDE de Arduino. Añade el código en el IDE de Arduino UNO.

Esta empresa funciona con una legislación física fácil de calcular la velocidad como distancia/tiempo.

Velocidad = Distancia/Tiempo

El sensor de infrarrojos es el principio que forma parte de esta empresa, ya que se utiliza para detectar cuando se entrega un coche a través de él. Cuando un coche pasa el 1st El sensor IR, detecta y envía una señal de interrupción al microcontrolador. Ahora calculamos el tiempo que transcurre hasta que el automóvil llega al sensor IR 2. La distinción de cada tiempo es la distancia de recorrido desde un sensor hasta el opuesto. Obtenemos el tiempo en que el automóvil recorre una distancia de 30 centímetros para poder calcular la velocidad del automóvil. Como sólo se trata de un prototipo y estamos utilizando vehículos de juguete, posteriormente tomamos una distancia de 30 centímetros. Ahora podemos establecer cualquier parámetro para la sobrevelocidad del coche. Por ejemplo, si la velocidad del coche es superior a 60 m/seg, se muestra un exceso de velocidad en el monitor estándar.

Código de suministro para la detección de la velocidad del automóvil con Arduino

int ir1 = 2;
int ir2 = 3;

int T1;
int T2;
int T;
int flag = 0;

float distance = 0.27;
float Velocity;

void setup() {
  attachInterrupt(digitalPinToInterrupt(ir1),ISR1,RISING);
  attachInterrupt(digitalPinToInterrupt(ir2),ISR2,FALLING);
  Serial.println("Automotive Over Velocity Measurement");
}

void ISR1()
{
  T1 = millis(); 
  if (flag == 0) 
    {
      flag = 1;
    }
  else 
    {
      flag = 0;
    }
}

void ISR2()
{
  T2 = millis();
  if (flag == 0) 
    {
      flag = 1;
    }
  else 
    {
      flag = 0;
    }
}


void loop() 
{
  
  if (flag == 0){
  if(T1 > T2) 
  {
    T = T1 - T2;  
    Velocity = (distance*1000)/T;
  }
  else if (T2 > T1) 
  {
    T = T2 - T1;  
    Velocity = (distance*1000)/T;
  }
  else 
  {
    Velocity = 0;
  }
  }
  
  if (Velocity == 0) 
  { 
    Serial.println("No automobile detected");
  }
  else 
  { 
    Serial.print(Velocity);
    Serial.println(" m/sec");
    if(Velocity > 60)
    {
      Serial.println("Over Rushing automobile detected");
    }
    delay(1000);
    T1 = 0;
    T2 = 0;
  }
}

Racionalización del código

El ir1 y el ir2 son los pines de interrupción externos utilizados en el Arduino Uno. T, T1 y T2 son las variables para calcular el tiempo. Como para esta aventura estamos insertando los 2 sensores IR a una distancia de 30 centímetros, posteriormente, hemos tomado la distancia de 30 para calcular la velocidad.

int ir1 = 2;

int ir2 = 3;

int T1;

int T2;

int T;

int bandera = 0;

float distancia = 30;

velocidad de flotación;

La sintaxis para llamar al ISR de cada sensor 1 y del sensor 2.

attachInterrupt(digitalPinToInterrupt(ir1),ISR1,RISING);

attachInterrupt(digitalPinToInterrupt(ir2),ISR2,FALLING);

Esta actuación se utiliza para nombrar la Rutina de Servicio de Interrupción del sensor IR 1 al detectar un objeto. Algo similar se consigue para el sensor de infrarrojos 2 en el rendimiento del ISR2.

iSR1() vacío

{

T1 = milis()

si (bandera == 0)

{

bandera = 1;

}

de lo contrario,

{

bandera = 0;

}

}

T1 es el tiempo de detección del coche por el sensor IR 1 y T2 es el tiempo de detección del sensor IR 2. La distinción en cada uno de los tiempos es el tiempo que se tarda en recorrer el espacio entre dos sensores IR.

si(T1 > T2)

{

T = T1 – T2

Velocidad = (distancia)/T;

}

else if (T2 > T1)

{

T = T2 – T1

Velocidad = (distancia)/T;

}

de lo contrario,

{

Velocidad = 0;

}

La ruta del código que se da bajo las huellas dactilares indica la velocidad del coche e imprime el mensaje en caso de exceso de velocidad en la pantalla de serie.

si (Velocidad == 0)

{

Serial.println(«No se detectan coches»);

}

de lo contrario,

{

Serial.print(Velocidad);

Serial.println(» m/seg»);

si(Velocidad > 60)

{

Serial.println(«Detectado el coche que se precipita»);

}

retraso(1000);

T1 = 0;

T2 = 0;

}

Este fue el prototipo del cálculo del atropello. Este concepto puede aplicarse en las carreteras utilizando vehículos reales y aumentando la distancia entre los 2 sensores IR. Esta empresa puede ser utilizada para captar la velocidad de los automóviles sin ninguna intervención humana. Además, se puede utilizar en el registro de visitantes del sitio, en el contador de visitantes del sitio y en muchos otros fines relacionados con el tráfico.

Tareas asociadas:

Lee:  ¿Qué es un convertidor Cuk y cómo funciona? Circuitos y funcionamiento
Javired
Javired

Deja una respuesta

Tu dirección de correo electrónico no será publicada.