Si estamos construyendo un robot, se nos hace necesario detectar obstáculos, y conocer la distancia a la que se encuentran, necesitamos realizar esto de forma automática y con electrónica.
Existe un sensor, el HC-Sr04, el cual es capaz de emitir un sonido y captar el eco del mismo.
De este modo uno puede detectar la distancia a la que se encuentra un objeto.
Esto se base en el principio del sonar.
Básicamente si sabemos la velocidad del sonido y medimos el tiempo que tarde desde que sale hasta que regresa el sonido, podemos conocer la distancia.
Existe un sensor, el HC-Sr04, el cual es capaz de emitir un sonido y captar el eco del mismo.
Esto se base en el principio del sonar.
El sensor ultrasónico es bastante sencillo de utilizar, se puede usar con cualquier microcontrolador.
Tiene dos pines de alimentación(5V) y dos pines para el control. Uno de disparo para que se inicie la emisión del sonido y otro de eco, que se pone en alto, un tiempo igual al que tardo el sonido en ir y volver.
Este tiempo es del orden de los us, y las velocidad del sonido es aproximadamente de 340m/s.
El esquema para la conexión con Arduino y un display LCD para presentar la información es:
El scketch es el siguiente:
Este tiempo es del orden de los us, y las velocidad del sonido es aproximadamente de 340m/s.
El esquema para la conexión con Arduino y un display LCD para presentar la información es:
El scketch es el siguiente:
/*
Codigo para Arduino, para medir distancias con el sensor ultrasonico
HC-SR04 y visualizarla en un display LCD 16x2
Circuito:
* LCD RS pin- D12
* LCD Enable pin - D11
* LCD D4 pin - D5
* LCD D5 pin - D4
* LCD D6 pin - D3
* LCD D7 pin - D2
* Potenciometro de 10K :
* El pin del medio a LCD Vo(pin3)
* Los demas entre 5V y GND
* Trigger HC-SR04 - D8
* Echo HC-SR04 - D9
*/
// include the library code:
#include <LiquidCrystal.h>
//Inicializo la libreria del LCD con los pines correspondientes a la conexion realizada
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
long distancia;
long tiempo;
void setup() {
// Configuracion del LCD 16x2
lcd.begin(16, 2);
pinMode(9, OUTPUT); //Pin D9 como salida
pinMode(8, INPUT); //Pind D8 como entrada
}
void loop() {
lcd.clear(); //Limpio el LCD
lcd.setCursor(0, 0); //Ubico el cursor
digitalWrite(9,LOW);
delayMicroseconds(5);
digitalWrite(9, HIGH); //Inicio el proceso de medicion
delayMicroseconds(10); //El pulso de disparo debe estar en alto por 10us
tiempo=pulseIn(8, HIGH); //Funcion para medir el tiempo en alto del pin echo
distancia= int(0.01653*tiempo); //Convierto los us en cm, el tiempo es proporcional a la distancia
lcd.print("Distancia: ");
lcd.print(distancia);
lcd.print("cm");
delay(500);
}