lunes, 13 de noviembre de 2017

Medidor de distancia con Arduino

Medidor de distancia con Arduino

Dr. Héctor Darío Aguirre Arvizu
17-11-12

Saludos amigos robotistas y estudiantes de electrónica.

En esta entrada vamos a ver cómo armar un pequeño medidor de distancia empleando un Arduino y un módulo de eco.
El principio de operación del módulo de eco es el siguiente: una pequeña bocina envía un ultrasonido en una dirección y cuando el mismo rebota en un objeto cercano localizado entre 3 cm y 3 m regresa al sensor localizado a unos dos centímetros del primero. Nosotros usamos en HCSR04 que se muestra en la imagen:
Módulo de ultrasonido HCSR04.
Para realizar el programa debemos utilizar la sencilla fórmula de la velocidad:
Fórmula de la velocidad.
De la fórmula anterior despejamos la distancia:
Fórmula de la velocidad

Conocemos la velocidad del sonido que es de 343 m/seg en condiciones normales de presión, aunque podemos generalizar a todos los puntos en el planeta, con el fin de simplificar.
Necesitamos calcular la distancia y para ello hacemos que nuestro módulo mande un pulso de duración breve para que iniciemos un contador de tiempo. Debido a que queremos que calcule directo la distancia en centímetros  hacemos la siguiente transformación de unidades:
Cálculo del factor para la distancia simplificando lo más posible
La duración de nuestro pulso será de 10 microseg.


Los siguientes son el diagrama eléctrico y el diagrama esquemático.
Diagrama eléctrico
Diagrama esquemático

A continuación presento el programa básico.

//Medidor de distancia
// Dr. Héctor Darío Aguirre Arvizu
//17-11-13

const int trig=12, echo=11; //para acordarnos de los pines y asegurar que no se modifican
float distancia=0, tiempo=0;  //declaramos las variables con las que mediremos distancia y tiempo

void setup() {
  Serial.begin(9600);
  pinMode(trig,OUTPUT); //Aquí tnemos la bocina
  pinMode(echo,INPUT); //aquí está el sensor de eco, es entrada
}

void loop() {
  digitalWrite(trig,LOW);// hace que el impulso sea cero al principio
  delayMicroseconds(5);//un tiempo de espera en microsegundos, ya que el milisegundo sería demasiado largo
  digitalWrite(trig,HIGH); //se enciende la bocina para mandar un pulso
  delayMicroseconds(10); //hacemos que el pulse dure 10 microsegundos
  tiempo = pulseIn(echo,HIGH); //se activa la bocina, empieza a contar el tiempo hasta recibir una señal, en echo.
  distancia = tiempo*0.01715; // por regla de conversión en torno a la velocidad de ida y vuelta del sonido para lectura
  Serial.print("Distancia = ");
  Serial.print(distancia); //imprimimos el valor de la variable llamada distancia, en el mismo renglón que el anterior
  Serial.println(" cm"); //imprime el nombre y da salto de línea al terminar 
  delay(500); //tiempo para que no lo haga demasiado rápido
}

Hasta aquí el programa

Reto: hacer que aparezca en metros, cambiamos la línea de cálculo de la distancia.

Aquí te mostramos un video sencillo del funcionamiento del circuito:

Esperamos te haya gustado.


D. R. 2017 Dr. Darío Aguirre





No hay comentarios:

Publicar un comentario