0% encontró este documento útil (0 votos)
654 vistas5 páginas

Sensor de Distancia HC-SR04 Con Arduino

Reporte sobre el funcionamiento del sensor de distancia ultrasonico HC-SR04 para la aplicación de un sensor de proximidad con señales de salida por leds mediante arduino.

Cargado por

alberto pazkual
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
654 vistas5 páginas

Sensor de Distancia HC-SR04 Con Arduino

Reporte sobre el funcionamiento del sensor de distancia ultrasonico HC-SR04 para la aplicación de un sensor de proximidad con señales de salida por leds mediante arduino.

Cargado por

alberto pazkual
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 5

Circuito Detector de Distancia

José Alberto Pascual Huerta, Marcos Bladimir Romero Pérez


Universidad Michoacana de San Nicolás de Hidalgo, Facultad de Ingeniería eléctrica, Morelia, México

[email protected]

[email protected]

I. INTRODUCCIÓN III. OBJETIVO

Para la interacción con el entorno físico existen diversos Que el alumno comprenda el funcionamiento del sensor
dispositivos capas de cuantificar estos fenómenos, en esta práctica se ultrasónico así como que sea capaz de implementarlo para medir
hará uso del sensor HC-SR04, el cual es un dispositivo capaz de diferentes distancias mediante la comprensión de su funcionamiento.
cuantificar la distancia a la que se encuentra un objeto mediante el
envío y recepción de pulsos. IV.MATERIAL
7 Resistencias
7 Led de diferentes colores
1 Sensor HC-SR04
1 Arduino
1 Metro

V. DESARROLLO

El alumno debe ser capaz de implementar un algoritmo de control


para detectar 5 diferentes distancias: 5cm, 10cm, 15cm, 20cm y
30cm. Para cada una de estas distancias deberá crear un programa
que encienda cada led en orden ascendente mientras la distancia
aumente y en orden descendente mientras la distancia disminuya.

Primeramente se debe armar el circuito de prueba del sensor, el


cual consiste únicamente en proveer de alimentación al dispositivo y
Fig. 1 Sensor HC-SR04 asignarle dos pines de interfaz con arduino (echo y trigger). Este tipo
de módulos se divide en dos grandes grupos: interfaz mediante
Algunas características de este sensor son las siguientes:
pulsos de eco y e interfaz serial (I2C o UART). El dispositivo HC-
 Alimentación: +5V DC SR04 cae dentro de la primera categoría.
 Frecuencia de trabajo: 40Khz
 Consumo(suspendido): <2mA
 Consumo(Trabajando): 15mA
 Ángulo efectivo: <15°
 Distancia: 2cm a 400cm
 Resolución: 0.3cm

Algo a tener en cuenta es que a partir de los 250cm la resolución


no es muy buena.

Si se desea conocer con exactitud todas las especificaciones del


sensor se puede consultar la hoja de datos que provee el fabricante.

II. JUSTIFICACIÓN
La práctica presente se lleva a cabo con el fin de que el alumno
conozca un dispositivo extra para censar las variables físicas del
entorno. En este caso El sensor para medir distancia con el sensor
ultrasónico HC-SR04. Fig. 2 Funcionamiento del sensor HC-SR04

1
La interfaz digital se logra mediante dos pines digitales, el pin de La razón de dividir el resultado entre dos es que el tiempo que
trigger (disparo) y el de echo (eco). tarda el pulso es el tiempo de ida más el de regreso, pero para la
distancia únicamente nos interesa conocer el tiempo que tarda en ir,
 El primero recibe un pulso de habilitación de parte del no en regresar, por eso se debe dividir entre dos este resultado. Una
microcontrolador, mediante el cual se le indica al módulo vez hecho esto, el valor que nos entregara será la distancia correcta
que comience a realizar la medición de distancia. en cm
 A través de un segundo pin (echo) el sensor “muestra” al
microcontrolador un pulso cuyo ancho es proporcional al Para estar seguros de que nuestros cálculos son correctos podemos
tiempo que tarda el sonido en viajar del transductor al hacer uso del siguiente circuito y programa:
obstáculo y luego de vuelta al módulo.

Mediante una sencilla formula puede estimarse la distancia entre


el sensor y el obstáculo si se conoce el tiempo de viaje del sonido, así
como la velocidad de propagación de la onda sonora. La siguiente
imagen muestra los pulsos recibidos y enviados por el sensor, de
acuerdo a la hoja de datos elaborada por Itead Studio.

Fig. 3 Pulso

VI. RESULTADOS Fig. 4 Concexión para prueba del sensor

A. Configuración del Sensor


#define pulso 9
Para obtener la distancia en centímetro necesitamos como se
#define rebote 8
mencionó antes, conocer la velocidad de propagación del sonido, la
cual se expresa en m/s, pero nosotros la necesitamos en cm/us por lo int distancia; //crea la variable "distancia"
cual simplemente hacemos la conversión. Después de la fórmula para float tiempo; //crea la variable tiempo (como float)
la velocidad:
void setup(){
𝑑 Serial.begin(9600); //inicializa el puerto serie
𝑣= pinMode(pulso, OUTPUT); //Declaramos el pin 9 como
𝑡 //salida (pulso ultrasonido)
pinMode(rebote, INPUT); //Declaramos el pin 8 como
Conociendo la velocidad, que es la del sonido y sabiendo la //entrada (recepción del pulso)
distancia, que en este caso es de 1cm ya que nos interesa conocer el }
tiempo que tarda en recorrer ese centímetro para la calibración.
void loop(){
Con estos valores que conocemos la única variable desconocida es digitalWrite(pulso,LOW); //Por cuestión de estabilización del
el tiempo, con lo que tenemos: //sensor
delayMicroseconds(5);
𝑑𝑐𝑚 digitalWrite(pulso, HIGH); //envío del pulso ultrasónico
𝑣𝑐𝑚/𝑢𝑠 = delayMicroseconds(10);
𝑡𝑢𝑠 tiempo = pulseIn(rebote, HIGH); //funcion para medir el
//tiempo y guardarla en la
𝑑𝑐𝑚 1𝑐𝑚 //variable "tiempo"
𝑡𝑢𝑠 = = =
𝑣𝑐𝑚/𝑢𝑠 0.0343𝑐𝑚/𝑢𝑠 distancia = 0.01715*tiempo; //fórmula para calcular la distancia

Una vez que conseguimos el tiempo que tarda en recorrer un cm /*Monitorización en centímetros por el monitor serial*/
Serial.print("Distancia: ");
simplemente despejamos la distancia y el tiempo será una variable de
Serial.print(distancia);
entrada, con lo que la ecuación para la obtención de la distancia será Serial.println(" cm");
la siguiente: delay(3000);
}
0.0343𝑐𝑚/𝑢𝑠 ∗ 𝑡𝑢𝑠
𝑑𝑐𝑚 =
2

2
Como se puede observar en él código anterior, el programa no hace
más que lo explicado anteriormente, emitirá un pulso por la patilla 9
que está asignada al "trigger" que previamente se habrá reseteado
//declaracion de constantes y variables
(puesta a LOW) para evitar problemas.
const int trig=2, echo=3;
digitalWrite(pulso,LOW); //Por cuestión de estabilización del sensor const int L5=8, L10=9, L15=10, L20=11, L30=12;
delayMicroseconds(5); float duración=0, distancia=0;
digitalWrite(pulso, HIGH) //envío del pulso ultrasónico
delayMicroseconds(10); void setup() {
//comunicacion con puerto serial
Serial.begin(9600);
Y en las siguientes instrucciones se obtiene el tiempo (al recibir el
"echo") y se aplica la fórmula explicada anteriormente para obtener
//configuracion de los pines de entrada y salida
la distancia exacta al objeto pinMode(trig,OUTPUT);
pinMode(echo,INPUT);
tiempo = pulseIn(rebote, HIGH); //función para medir el tiempo y
//guardarla en la variable "tiempo"
pinMode(L5,OUTPUT);
distancia = 0.01715*tiempo; //fórmula para calcular la distancia
pinMode(L10,OUTPUT);
pinMode(L15,OUTPUT);
pinMode(L20,OUTPUT);
Una vez que se tenga armado el circuito y se haya cargado el pinMode(L30,OUTPUT);
programa anterior al arduino, tan solo se deberá abrir la }
comunicación serie para poder visualizar la distancia a la que se
encuentra el objeto más cercano. Para abrir el monitor serie en el void loop() {
entorno de programación de arduino, basta con ir a la pestaña //disparo de 10us de trigger
"herramientas" y darle a opción "Monitor Serial" o usar las teclas de digitalWrite(trig,LOW);
acceso rápido Ctrl + Mayúsculas + M. delayMicroseconds(2);
digitalWrite(trig,HIGH);
Se abrirá una pestaña como la siguiente que mostrará el valor de delayMicroseconds(10);
la distancia en "cm". digitalWrite(trig,LOW);

//tiempo que dura en alto echo


duracion=pulseIn(echo,HIGH);
//calculo para la distancia
distancia=(duracion/2)/29.15;

//control para el encendido de leds


if(distancia>=5)
digitalWrite(L5,HIGH);
else
digitalWrite(L5,LOW);
if(distancia>=10)
digitalWrite(L10,HIGH);
else
digitalWrite(L10,LOW);
if(distancia>=15)
digitalWrite(L15,HIGH);
else
digitalWrite(L15,LOW);
Fig. 5 Ejecución del programa ejemplo para la calibración del if(distancia>=20)
sensor digitalWrite(L20,HIGH);
else
B. Implementación del Circuito y Programa de Control Par digitalWrite(L20,LOW);
if(distancia>=30)
Led´s digitalWrite(L30,HIGH);
else
La conexión para el circuito es únicamente colocar el pin de
digitalWrite(L30,LOW);
alimentación del sensor a +5V CD y el pin de GND a tierra. El pin
de trigger al puerto 2 del arduino y el pin echo al puerto 3 de //impresion en puerto serial
arduino. Para los led´s, colocaremos el ánodo en el pin 8 de arduino Serial.print(distancia);
y el cátodo a una resistencia de 220 ohms que va a tierra, lo mismo Serial.println("cm");
se hará para los 4 led´s restantes, pero enviados a los puertos 9, 10, delay(1000);
11 y 12 de arduino. }

Una vez armado el circuito procedemos a revisar el código de


control para el encendido de los led´s en base a la distancia.

3
Analizando el código tenemos inicialmente la declaración de los
puertos a usar de arduino y las variables a usar, las cuales se igualan
a cero para evitar datos basura.

Dentro del setup() primeramente iniciamos la comunicación con


el puerto serial. Declaramos trig como salida y echo como entrada.
Los led´s los declaramos todos como salidas.

Para el loop() Primeramente nos aseguraremos de que trig se


encuentre en bajo, esperamos dos micro segundo y a continuación
mandamos un pulso de diez micro segundo, después lo mandamos a
un estado bajo. Después de esto, el siguiente bloque se encarga del
cálculo de la distancia, el cual ya se explicó anteriormente. El bloque
siguiente es el control de los led´s. Este control nos dice que si la
distancia es mayor a 5cm debe encender el primer led, de lo contrario
lo apagara, si la distancia es mayor a 10cm, encenderá el segundo led
(manteniendo el primero encendido debido a la condicional anterior)
de lo contrario, lo apagara. Este control se realizara para 5, 10, 15, 20
y 30 cm. Fig. 7 Distancia >10cm

Finalmente, el último bloque se encarga de mostrar los valores de Para la figura 7 tenemos una distancia de 13.04cm, lo cual activa
distancia a través del monitor serial. el segundo led debido a la distancia mayor de 10cm. Mientras que en
la figura 8 observamos ya tres led´s encendidos, esto ya que la
C. Programa en operación distancia medida es de 18.66cm, la cual es mayor a 15cm, con la cual
enciende el tercer led
Con nuestro circuito y programas implementados procedemos a
realizar un par de pruebas para la comprobación de su
funcionamiento. Para ellos se muestran a continuación algunas
imágenes donde se observa el circuito, implementado, las mediciones
de distancia y los led´s.

Fig. 8 Distancia >15cm

La siguiente imagen nos muestra ya cuatro led´s encendidos,


debido a que se detectó una distancia mayor a 20cm, mientras que la
Fig. 6 Distancia >5cm
imagen de la figura 10 muestra todos los led´s encendidos, esto
porque la distancia medida excede los 30 cm.
En la imagen anterior se observa que la distancia medida es de
6.5cm, con lo cual el primer led enciende al detectar la distancia Con esto, queda demostrado el correcto funcionamiento del
mayor a 5cm código de control diseñado para este circuito.

4
Fig. 9 Distancia > 20cm

Fig. 10 Distancia > 30cm

VII. Conclusiones
José Alberto Pascual Huerta:

Tras la realización de la práctica se observó la gran utilidad de la


implementación de sensores para la lectura de datos físicos, así como
la especialización de cada uno para la medición de una variable física
en concreto. En este caso se advierte que debido a la manera en que
funciona el sensor HC-SR04 puede ser algo ineficiente cuando la
superficie donde el pulso rebota no es perpendicular al sensor debido
a que el echo puede ser enviado a otra dirección la cual puede no
coincidir con el receptor para el pulso.

Marcos Bladimir Romero Pérez:

Se observó que el funcionamiento de este sensor es que mediante


ondas sonoras se puede detectar distancia ya que tiene un emisor un
receptor yes mide el tiempo en que tarda en regresar la onda por el
emisor, este fenómeno físico es muy interesante ya que en los
murciélagos hacen un efecto similar para no chocar, con esta
observación se puede ver que no solo puede medir distancia si no que
también puede detectar objetos a una determinada distancias

También podría gustarte