sábado, 20 de febrero de 2016

Arduino - Sensor HC-SR04

En esta ocasión vamos ha ver como funciona y se usa el sensor ultrasónico HC-SR04.



    1- Funcionamiento:



El sensor dispone de un emisor y un receptor.
*No se cual es cual exactamente ,quedaros con que tiene un receptor y un emisor.


El pin Trig controla el emisor y el Echo el receptor, la distancia que tarda es el tiempo que tarada en ir y venir/2/29, se divide entre dos por que la onda sale del Emisor(Trig) y vuelve por el receptor(Echo).




Nosotros solo queremos la distancia hacia el objeto, una vez dividido el resultado lo dividimos entre la velocidad del sonido en cm/microsegundos es decir 29.



  2-Caractersitcas:

  • Número de pines 4:
         VCC: Alimentación +5V (4.5V min – 5.5V max)
         TRIG: Trigger entrada (input) del sensor (TTL)
                 ECHO: Echo salida (output) del Sensor (TTL)
          GND
  • Corriente de reposo: < 2mA.
  • Corriente de trabajo: 15mA.
  • Ángulo de medición: 30º (Efectivo: < 15º).
  • Detección de 2cm a 400cm  (Sirve a más de 4m, pero no se garantiza una buena medición).
  •  La precisión puede variar entre los 3mm o 0.3cm.
  • Dimensiones: 45mm x 20mm x 15mm.
  • Frecuencia de trabajo: 40KHz.



      


   3-Conexion:




1-Conectamos  GND de Arduino a el GND del sensor y lo mismo con 5v.

2-Ahora conectamos el trig y el echo a a 2 pines digitales (en mi caso 2 y 3).

Ya esta ¿era simple no?.




4-Codigo para Arduino sin libreria:
*El código esta configurado para mandarte la medición si solo la quieres para las condicionales(If) puedes quitar lo que este en *



      //Usamos define para hacer una constante que no guarda datos
#define Trig 2     //Definimos el pin Trig
#define Echo 3              //Definimos el pin Echo
int duracion;               //Creamos una variable para guardar la duracion del pulso
int distancia;      //Creamos una variable para guardar la distancia 
void setup() {
  Serial.begin(9600);    //*
  pinMode(Trig,OUTPUT);
  pinMode(Echo,INPUT);
}

void loop() {

            digitalWrite(Trig, LOW);              //Apagamos Trig para comprobar que esta apagado     
            delayMicroseconds(2);               //Esperamos        
            digitalWrite(Trig, HIGH);             //Enecendemos Trig     
            delayMicroseconds(10);             //Esperamos
            digitalWrite(Trig, LOW);              //Apagamos Trig     
            duracion = pulseIn(Echo, HIGH); //Leemos el tiempo que tardo la onda con pulseIn()
            distancia = duracion / 2 / 29  ;      //Hacemos una operación para pasarlo a una distancia(Cm)
          
            delay(1000);                    //* Esperamos


Serial.print("distancia");                //*
Serial.print(distancia);                  //*
Serial.println("cm");                     //*
Serial.println();                            //*
}



5-Codigo para Arduino con librería NewPing.

Si no la tienes la puedes descargar aquí.

Con la libreria es muy fácil, solo hay que poner   15 lineas de código.
 *El código esta configurado para mandarte la medición si solo la quieres para las condicionales(If) puedes quitar lo que este en *



#include <NewPing.h>           //Incluimos la libreria

int Trig = 2;                                  //Declaramos Trig.
int Echo = 3;                                //Declaramos Echo.
NewPing Sonar(trig,echo,500);  //Ponemos nombre al sensor (sonar),definimos a que pin corresponden (Trig y Echo) y la distancia maxima que pueda leer.            
int distancia;                                //Creamos una variable para la distancia.

void setup(){
     pinMode(Trig,OUTPUT);
     pinMode(Echo,INPUT);
     Serial.begin(9600);                   //Iniciamos la comunicación serial.*
}

void loop(){
distancia = Sonar.ping_cm();           //Distancia sera igual a el valor del Sonar en Cm.
Serial.print("Distancia");  //*
Serial.print(distancia);      //*
Serial.println("cm");        //* 
Serial.println();                //*
delay(1000);                    //*
}