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. |
Fórmula de la velocidad. |
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 |
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