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.
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.
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.
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:
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);
}