Mostrando entradas con la etiqueta circuito. Mostrar todas las entradas
Mostrando entradas con la etiqueta circuito. Mostrar todas las entradas

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