SENSOR ULTRASONICO

SENSOR ULTRA-SONICO HC-SR04

A continuación, se desarrollará la detección de proximidad de un objeto mediante el sensor ultrasonido HC-SR04 cada rango de representará en el sistema internacional (“cm”), conjuntamente se encenderá un led cuando este en dicho rango y se apagará cuando no lo este se desarrollará con el lenguaje de programación IDE ARDUINO UNO.

MATERIALES

  • Cable USB
  • Diodo Leds (diferente colores)
  • Protoboard
  • Cables para conectar el circuito
  • Un computador
  • Una tarjeta Arduino UNO
  • Resistencias (330Ω)
  • Sensor HC-SR04

         

         

        

PROCEDIMIENTO

Para comenzar el montaje del circuito, se debe tener en cuenta la polaridad del diodo led ánodo conectado en el pin  correspondiente(+) y el cátodo a GND(-)

el sensor ultrasonido HC-SR04, este es un sensor que sirve para medir distancias y superar obstáculos. En este caso lo utilizaremos para medir distancia y ver esta distancia medida en pantalla (mediante el puerto serial). El sensor ultrasonido le debe su nombre a las ondas de ultrasonido que envía y que luego recepciona por un micrófono, usando el mismo principio que usan los murciélagos o sonares de los submarinos.
El oído humano tiene un rango de audición de entre los 20-20.000 Hz, el ultrasonido son todas aquellas ondas sonoras que tienen una frecuencia mayor a los 20.000Hz y que no podemos oír debido a que se encuentran fuera de nuestro espectro auditivo.

Para las conexiones de los pines del sensor HC-SR04 respetar las referencias que se tienen en el sensor. En la parte del monitor serial conjuntamente se encuentra en el software ARDUINO.

CIRCUITO ESQUEMÁTICO

CODIFICACIÓN   DEL   PROGRAMA

  • Inicialmente se indica el nombre del programa a desarrollar en esta oportunidad tiene como nombre “SUS (SENSOR ULTRA-SONIDO)”.
  • Definimos la variable con el comando “ const int” el pin “10-11-12-13” con una etiqueta llamada Led1, Led2, Led3, Led4 correspondientemente, posteriormente el  pin en donde se conectara el sensor  EchoPin = 8 ; TriggerPIn = 9 y definimos variables con el comando long : long tiempo , long distancia.
    const int EchoPin = 8;                             //Se asigna el nombre de EchoPin al pin 8
    const int TriggerPin = 9;                          //Se asigna el nombre de TriggerPin al pin 9
    const int Led1Pin = 4;                             //Se asigna el nombre de Led1Pin al pin 10
    const int Led2Pin = 5;                             //Se asigna el nombre de Led2Pin al pin 11
    const int Led3Pin = 6;                             //Se asigna el nombre de Led3Pin al pin 12
    const int Led4Pin = 7;                             //Se asigna el nombre de Led4Pin al pin 13
    long tiempo;                                       //Variable
    long distancia;                                    //Variable
  • En la parte del void setup () definimos las salidas como entradas y la configuración de la velocidad de transmisión de datos con el comando Serial.begin() en esta parte la configuraremos con 9600. Definimos la entrada pinMode(EchoPin,INPUT) y la salida pinMode(TriggerPin,OUTPUT) de igual procedimiento para los leds(Led1Pin, Led2Pin, Led3Pin y  Led4Pin) que actuaran como salida.
    void setup()
    {
      Serial.begin(9600);                            //Configurando la velocidad de transmision serial
      pinMode(EchoPin,INPUT);                        //echo como entrada para medir pulso del eco retorno del ultrasonido
      pinMode(TriggerPin,OUTPUT);                    //trigger como salida  para el envio del pulso ultrasónico
      pinMode(Led1Pin,OUTPUT);                       //Led1Pin como salida 
      pinMode(Led2Pin,OUTPUT);                       //Led2Pin como salida
      pinMode(Led3Pin,OUTPUT);                       //Led3Pin como salida
      pinMode(Led4Pin,OUTPUT);                       //Led4Pin como salida
    }
  • En la parte siguiente del código en void loop () se codifica las acciones que va realizar para el TriggerPin se programa en bajo(LOW) con un retardo para luego activarlo en alto(HIGH) , un delay de 10 us y posteriormente el sensor envía una ráfaga de 8 pulsos y finalmente en bajo.
    void loop()
    {
      digitalWrite(TriggerPin,LOW);                  //Pone a nivel bajo el trigger
      delayMicroseconds(5);                          //espera 5us para establecer
      digitalWrite(TriggerPin,HIGH);                 //Pone a nivel alto el trigger
      delayMicroseconds(10);                         //Espera 10us y posteriormente el sensor envia una rafaga de 8 pulsos
      digitalWrite(TriggerPin,LOW);                  //Pone a nivel bajo el trigger
  • Nuestra variable tiempo esta asociada con el EchoPin al es la entrada y con el comando pulseIn(EchoPin,HIGH) medira el tiempo transcurrido en el recorrido de la onda ultrasónica.Posteriormente la variable distancia asociada con la variable tiempo determina la distancia en cm del objeto la formula siguiente distancia = long(0.017*tiempo)
     tiempo = pulseIn(EchoPin,HIGH);                   //Mide el tiempo que transcurrido el recorrido de la onda ultrasonica
     distancia = long(0.017*tiempo);                   //Fórmula  distancia = ((340/2)*100)/1000000 , se multiplica por 100 cm 
                                                       //y se divide entre 1000000 para pasarloa a us
    
  • Para determinar el encendido de los leds(Led1Pin – Led2Pin – Led3Pin) por cada rango de distancia asignada, declaramos una sentencia if la cual es una condición si es que distancia es mayor que un numero X y menor igual que un número Y se pondrá en estado alto el Led1Pin para la visualización en el monitor serial juntamente con el led correspondientemente encendido el comando al programar es el siguiente Serial.print(“Distancia ”) la cual envía en forma serial al monitor de Arduino la palabra Distancia ,posteriormente el comando siguiente Serial.print(distancia) envía en forma serial al monitor de Arduino el valor de la variable distancia utilizamos el otro Serial.println(“ cm “) la cual envía en forma serial al monitor de Arduino la palabra cm  y caso contrario a nuestra condición solo pondremos en bajo el Led1Pin.Similarmente, pero con diferentes valores en la condición se programa para los siguientes leds(Led2Pin – Led3Pin).
    if (distancia >= 2  && distancia <= 10) {        //condicion si distancia >= 2 y <= que 10 
        Serial.print("Distancia ");                  //Envia de forma serial al monitor Distancia
        Serial.print(distancia);                     //Envia al monitor serial el valor de distancia
        Serial.println(" cm ");                      //Envia al monitor serial la palabra cm.
        digitalWrite(4, HIGH);                       //Led1Pin encendido
        delay(500);                                  //delay para mostrar en el monitor serial.
      } else {                                       //Caso contrario ala condicion
        digitalWrite(4, LOW);                        //Led1Pin apagado 
      }
    
      if (distancia > 10  && distancia <= 15) {      //condicion si distancia es > 10 y <= que 15
        Serial.print("Distancia ");                  //Envia de forma serial al monitor Distancia
        Serial.print(distancia);                     //Envia al monitor serial el valor de distancia
        Serial.println(" cm ");                      //Envia al monitor serial la palabra cm.
        digitalWrite(5, HIGH);                       //Led2Pin encendido
        delay(500);                                  //delay para mostrar en el monitor serial.
      } else {                                       //Caso contrario ala condicion
        digitalWrite(5, LOW);                        //Led2Pin apagado 
      }
    
      if (distancia > 15  && distancia <= 25) {      //condicion si distancia es > 15 y <= que 25
        Serial.print("Distancia ");                  //Envia de forma serial al monitor Distancia
        Serial.print(distancia);                     //Envia al monitor serial el valor de distancia
        Serial.println(" cm ");                      //Envia al monitor serial la palabra cm.
        digitalWrite(6, HIGH);                       //Led3Pin encendido
        delay(200);                                  //delay para mostrar en el monitor serial.
      } else {                                       //Caso contrario ala condicion
        digitalWrite(6, LOW);                        //Led3Pin apagado
      }
  • En la parte ultima se recorta el valor máximo que puede tener nuestro sensor HC-SR04 ya el cual tiene una capacidad de 500cm con la palabra ALARMA la cual también se muestra en el monitor serial ARDUINO. La condición a desarrollar es si distancia es mayor a 25, Serial.print(“ ALARMA ”) la cual envía en forma serial al monitor de Arduino la palabra ALARMA juntamente con Serial.print(“ – – “) y Serial.println(“  “), posteriormente ponemos el Led4Pin en HIGH. Caso contrario a la condición la única acción que se realiza en poner es en estado LOW el Led4Pin.
    if (distancia > 25 ) {                        //condicion si distancia es mayor que 25 
        Serial.print(" ALARMA ");                 //Envia de forma serial al monitor la palabra ALARMA
        Serial.print("--");                       //Envia al monitor serial la palabra --
        Serial.println("  ");                     //Envia al monitor serial la palabra  .
        digitalWrite(7, HIGH);                    //Led4Pin encendido
        delay(200);                               //delay para mostrar en el monitor serial.
      } else {                                    //Caso contrario ala condicion
        digitalWrite(7, LOW);                     //Led4Pin apagado
      }
    }
    

CAPTURA DE IMAGEN DEL MONITOR SERIAL

CAPTURA DE IMAGEN DEL CIRCUITO FINAL

 

 

 

 

 

Share this Post!

About the Author : EderPM


Enviar un comentario

Your email address will not be published.