¿Qué es un detector de obstáculos IR?
Un detector de obstáculos infrarrojo es un dispositivo que detecta la presencia de un objeto mediante la reflexión que produce en la luz. El uso de luz infrarroja (IR) es simplemente para que esta no sea visible para los humanos.
Constitutivamente son sensores sencillos. Se dispone de un LED emisor de luz infrarroja y de un fotodiodo (tipo BPV10NF o similar) que recibe la luz reflejada por un posible obstáculo.
Los detectores de obstáculo suelen proporcionarse con una placa de medición estándar con el comparador LM393, que permite obtener la lectura como un valor digital cuando se supera un cierto umbral, que se regula a través de un potenciómetro ubicado en la placa.
Este tipo de sensores actúan a distancias cortas, típicamente de 5 a 20mm. Además la cantidad de luz infrarroja recibida depende del color, material, forma y posición del obstáculo, por lo que no disponen de una precisión suficiente para proporcionar una estimación de la distancia al obstáculo.
Pese a esta limitación son ampliamente utilizados para la detección de obstáculos en pequeños vehículos o robots. Su bajo coste hace que sea frecuente ubicarlos en el perímetro, de forma que detectemos obstáculos en varias direcciones.
También son útiles en otro tipo de aplicaciones como, por ejemplo, detectar la presencia de un objeto en una determinada zona, determinar una puerta está abierta o cerrada, o si una máquina ha alcanzado un cierto punto en su desplazamiento.
Precio
Los sensores de obstáculos infrarrojos son realmente baratos. Podemos encontrar detectores infrarrojos, incluida la placa de medición, por 0,30€ en vendedores internacionales de eBay y AliExpress.
Al ser un sensor sencillo también podemos montarlo nosotros mismos. En general no merece la pena ya que sólo los componentes nos costarían más, sin contar el tiempo necesario y la calidad que podríamos obtener, por lo que lo normal es que usemos un modelo comercial.
Esquema eléctrico
El montaje es sencillo. Alimentamos el módulo a través de Vcc y GND conectándolos, respectivamente, a la salida de 5V y GND en Arduino.
Finalmente, conectamos la salida digital del sensor a una entrada digital para leer el estado del sensor.
Opcionalmente, calibramos el umbral de disparo acercando un objeto al detector de obstáculos y regulando la salida digital con el potenciómetro. Si queréis saltaros este paso, dejar el potenciómetro en un valor medio.
Ejemplos de código
El código es igualmente sencillo. Simplemente leemos el estado de la entrada digital, tal y como vimos en la entrada Entradas digitales en Arduino.
Si el sensor se dispara, ejecutamos las acciones necesarias.
const int sensorPin = 9;
void setup() {
Serial.begin(9600); //iniciar puerto serie
pinMode(sensorPin , INPUT); //definir pin como entrada
}
void loop(){
int value = 0;
value = digitalRead(sensorPin ); //lectura digital de pin
if (value == HIGH) {
Serial.println("Detectado obstaculo");
}
delay(1000);
}
También podemos leer el estado del sensor mediante el uso de interrupciones. Para más información consultar la entrada Qué son y cómo usar interrupciones en Arduino y Leer un pulsador con interrupciones en Arduino
Descarga el código
Todo el código de esta entrada está disponible para su descarga en Github.