top of page

Práctica 2: Medidor de distancia con ultrasonidos

El objetivo de esta práctica es medir la distancia entre objetos próximos comprendidos entre unos cuantos centímetros. Para ello se va a utilizar un sensor de ultrasonidos.

 Materiales:

  • 1 Arduino UNO

  • 1 Protoboard

  • 4 Cables de Conexión 

  • 1 Ultrasonidos

Características Eléctricas: 

Polarizado: Sí

Tensión: 5V

Rango de medición: 2cm a 4m

Descripción breve dispositivos:

 

Que es Sensor Ultrasonido:

El HC-SR04 es un sensor de distancias por ultrasonidos capaz de detectar objetos y calcular la distancia a la que se encuentra en un rango de 2cm a 4m. El sensor funciona por ultrasonidos y contiene toda la electrónica encargada de hacer la medición. Su uso es tan sencillo como enviar el pulso de arranque y medir la anchura del pulso de retorno. De muy pequeño tamaño, el HC-SR04 se destaca por su bajo consumo, gran precisión y bajo precio por lo que esta reemplazando a los sensores polaroid en los robots mas recientes.

El funcionamiento es simple, envía una señal ultrasonica inaudible y nos entrega el tiempo que demoro en ir y venir hasta el obstáculo mas cercano que detecto.

Generalmente están conformados por dos cilindros puestos uno al lado del otro, uno de ellos es quien emite la señal ultrasonica, mientras que el otro es quien la recibe, es un sistema muy simple pero no por eso deja de ser efectivo.

El sensor hc-sr04 en particular tiene una sensibilidad muy buena del orden de los 3mm, teniendo en cuenta que la mayoría de las aplicaciones donde este sensor es utilizado es para medir o detectar obstáculos o distancias mayores a varios centímetros, podemos decir que su sensibilidad es muy buena.

245.png

Fijándonos en los pines del sensor de ultrasonidos, se conecta el pin Vcc al pin 5V de la placa de arduino, el GND al GND de la placa de arduino, y los pines triger y echo a los pines 13 y 12 respectivamente.

distancias-esquema.png

Programación en Arduino IDE

En primer lugar, se configura el pin digitales 13 en modo salida (OUTPUT) y el pin digital 12 en modo entrada (INPUT). Esta configuración se establece en la función setup(), ya que solamente se ejecuta una vez. Además se establece el pin digital 13 a un valor bajo (LOW).

Al ejecutar el código se establece el pin digital 13 a un valor alto (HIGH) y bajo (LOW) rápidamente durante 10 microsegundos. Este es el estado que cambia y deberá detectar el pin digital 12, el cual almacena en una variable el tiempo transcurrido. Solamente quedará calcular la distancia conociendo la velocidad del sonido y dividiendo el resultado entre 2 ya que se trata de ida y vuelta.

medidor distancia 2.PNG

 Códigos para copiar:

/**

* Medidor de distancias

*/

 

void setup() {

    Serial.begin(9600);

    pinMode(13, OUTPUT);

    pinMode(12, INPUT);

 

   digitalWrite(13, LOW);

   }

 

void loop() {

 

digitalWrite(13, HIGH);

delayMicroseconds(10);

digitalWrite(13, LOW);

 

long tiempo;

 

tiempo = pulseIn(12, HIGH);

 

// Velocidad Sonido = 343 m/s

 

float distancia = 34300*tiempo*0.000001;

distancia = distancia / 2;

 

Serial.print("Distancia: ");

Serial.println(distancia);

 

}

​

Otros códigos:

esquema_circuito.png

 código esquema anterior:

/* Autor: Sara Peña
 
   Título: Ejemplo básico de cómo utilizar el sensor ultrasónico HC-SR04 SKU: SM0040
   Descripción: Este programa calcula la distancia en centímetro de un objeto frente al sensor.
   Conexión del sensor HC-SR04 al microcontrolador Uno:
    TRIG: pin 2
    VCC: 5V
    GND: GND
    ECHO: pin 4
   
*/

//Definir
const int trigPin = 2;
const int echoPin = 4;
long duration;
int distance;

 

void setup() {
  // Configuración
  pinMode(trigPin, OUTPUT); // Definir trigPin como salida
  pinMode(echoPin, INPUT); // Definir echoPin como entrada
  Serial.begin(9600); // Activar comunicación serial
}

 

void loop() {
  // Código principal donde ocurren en loop

  // Obtener valores


  digitalWrite(trigPin, LOW);   // Mandar señal baja para limpiar la señal de cualquier residuo
  delayMicroseconds(4);         // por 4 micro segundos.
  digitalWrite(trigPin, HIGH);  // Mandar señal (pulso) alta en el trigPin
  delayMicroseconds(10);        // de 10 micro segundos.
  digitalWrite(trigPin, LOW);

 

// Computación
  duration = pulseIn(echoPin, HIGH); // Escuchar el pulso de regreso (eco) y determinar el tiempo de viajen de ella en micro segundos.
  distance = duration * 0.034 / 2; // Interpretar el tiempo a distancia
  Serial.print("Distancia: ");   // Imprimir distancia en cm en la comunicación serial
  Serial.print(distance);
  Serial.println("cm");
  delay (1000);
}

bottom of page