En este proyecto, le mostraré cómo medir la velocidad de movimiento de un objeto usando el sensor ultrasónico HC-SR04

COMPONENTES Y SUMINISTROS

  • Arduino Nano R3
  • LCD 16×2
  • Sensor ultrasónico – HC-SR04
  • LED rojo
  • Resistencia 330 ohmios
  • Potenciómetro de una sola vuelta – 10k ohmios
  • Cables para conexión

El sensor ultrasónico HC-SR 04 se usa más comúnmente para medir la distancia, pero esta vez le mostraré cómo medir la velocidad de movimiento de un objeto usando este sensor.

El dispositivo es muy simple y consta de solo unos pocos componentes:

– Microcontrolador Arduino Nano

– Pantalla LCD

– Sensor ultrasónico

– y diodo LED

Para ese propósito, necesitamos tomar dos medidas de distancia en un corto período de tiempo y tenemos:

distancia2 – distancia1 = velocidad de la distancia en un momento dado

Si hacemos las mediciones en un período de tiempo de 1 segundo, obtenemos la velocidad de movimiento del objeto en cm / s. El código básico se tomó del foro arduino cc y acabo de agregar una pantalla LCD para una representación visual de los resultados.

La primera fila muestra la distancia y la segunda fila muestra la velocidad si el objeto se está moviendo.

También hay un LED que indica la distancia a la que se coloca el objeto. Si la distancia es inferior a 5 cm, el LED se ilumina de forma continua. A medida que aumenta la distancia, el LED comienza a parpadear a una velocidad que depende de la distancia del objeto. Si el objeto se aleja, el parpadeo es más lento y viceversa.

Cuando el objeto se mueve en la dirección opuesta, la velocidad representada en la pantalla tiene un signo negativo.

#include  <LiquidCrystal.h>
LiquidCrystal  lcd ( 12 ,  11 ,  5 ,  4 ,  3 ,  2 ); // RS, E, D4, D5, D6, D7
// define los números de los pines
const  int  trigPin  =  9 ;
const  int  echoPin  =  10 ;

// define variables
larga  duración ;
int  distancia1 = 0 ;
int  distancia2 = 0 ;
 velocidad doble = 0 ;
int  distancia = 0 ;

 configuración vacía () 
{
lcd . comenzar ( 16 ,  2 ); // LCD 16X2
pinMode ( trigPin ,  SALIDA );  // Establece el trigPin como salida
pinMode ( echoPin ,  ENTRADA );  // Establece echoPin como entrada
pinMode (  7  ,  SALIDA );
Serial . comenzar ( 9600 );  // Inicia la comunicación serial
}


 bucle vacío () 
{

// calculando la velocidad
   distancia1  =  lectura ultrasónica ();  // llama a la función ultrasinicRead () a continuación
   
   retraso ( 1000 ); // dando un intervalo de tiempo de 1 segundo
   
   distancia2  =  lectura ultrasónica ();  // llama a la función ultrasinicRead () a continuación
   
   // cambio de fórmula en la distancia dividido por el cambio en el tiempo
   Velocidad  =  ( distancia2  -  distancia1 ) / 1.0 ;  // como el intervalo de tiempo es de 1 segundo, lo dividimos por 1.
   
// Velocidad de visualización
  Serial . print ( "Velocidad en cm / s:" ); 
  Serial . println ( velocidad );
lcd . setCursor ( 0 , 1 ); 
lcd . imprimir ( "Velocidad cm / s" );
lcd . imprimir ( Velocidad ); 

// Indicador LED
si  ( distancia  > 0  &&  distancia  < 5 ) 
{
    escritura digital (  7  ,  ALTA );
    retraso ( 50 );                   // espera un segundo
}

si  ( distancia  >  5  &&  distancia  < 10  ) 
{
    escritura digital (  7  ,  ALTA );
    retraso ( 50 );                   // espera un segundo
    digitalWrite (  7  ,  BAJO );     // apaga el LED
    retraso ( 50 );                   // espera un segundo
}

si  ( distancia  > 10   &&  distancia  <  20 ) 
{
    escritura digital (  7  ,  ALTA );
    retraso ( 210 );                   // espera un segundo
    digitalWrite (  7  ,  BAJO );     // apaga el LED
    retraso ( 210 );                   // espera un segundo
}

si  ( distancia  > 20   &&  distancia  <  35 ) 
{
    escritura digital (  7  ,  ALTA );
    retraso ( 610 );                   // espera un segundo
    digitalWrite (  7  ,  BAJO );     // apaga el LED
    retraso ( 610 );                   // espera un segundo
}


}

flotar  ultrasónicoRead  ()
{
// Borra el trigPin
digitalWrite ( trigPin ,  LOW );
delayMicroseconds ( 2 );

// Establece el trigPin en estado ALTO durante 10 microsegundos
digitalWrite ( trigPin ,  HIGH );
delayMicroseconds ( 10 );
digitalWrite ( trigPin ,  LOW );

// Lee el echoPin, devuelve el tiempo de viaje de la onda de sonido en microsegundos
duración  =  pulseIn ( echoPin ,  HIGH );

// calcular la distancia
distancia =  duración * 0.034 / 2 ;

// Imprime la distancia en el monitor serial
Serial . print ( "Distancia en cm:" );
Serial . println ( distancia );
lcd . setCursor ( 0 , 0 );
lcd . print ( "Dist. en cm" );
lcd . imprimir ( distancia );
lcd . imprimir ( "" );
 distancia de regreso ;

}
https://create.arduino.cc/