miércoles, 25 de abril de 2012

Sensor de Proximidad con Infrarrojos

Desarrollo del Sensor de proximidad mediante Arduino:

La Practica de hoy es un sensor de proximidad mediante Arduino y un emisor-receptor de rayos infrarrojos.
El uso que le podemos dar es muy amplio, desde el detector de proximidad hasta  un detector de barrera, alarma antirrobo...
Como sensor de aparcamiento no es muy recomendable pues si no esta el emisor y receptor en paralelo el campo de detección es muy pequeño.







En primer lugar he realizado el esquema de conexiones con los elementos necesarios.

Materiales y componentes utilizados:

·        1 Diodo emisor infrarrojo
·        1 Resistencia 330Ω
·        1 Resistencia de 1MΩ
·        1 Diodo receptor Infrarrojo
·        Arduino

Como podemos apreciar pare realizar esta practica con arduino necesitamos muy pocos componentes, básicamente es programación.

En primer lugar realizaremos el esquema del emisor y en segundo lugar realizaremos el esquema del receptor de infrarrojos.






Esquema de emisor

El circuito de emisor es muy sencillo, simplemente conectaremos el diodo emisor de infrarrojos con la resistencia en serie, y lo uniremos a GND y al Pin12 de nuestro Arduino que es el que he definido como salida.
La programación de salida del Pin 12 será un envío constante de pulsos (True) que encenderá (5V) el diodo emisor de infrarrojos.
Podemos dejarlo encendido constantemente para que envíe rayos infrarrojos  o crear un parpadeo mediante la función “delay”.



Esquema de receptor
El esquema de receptor también es muy sencillo. Realizaremos un pequeño divisor de tensión. Emplearemos una fuente de 5 voltios (podemos utilizar la fuente que nos proporciona arduino 5V y GND).



En la misma conectaremos 1 resistencia de 1MΩ y un diodo receptor de infrarrojos. Entre el Ánodo del receptor de IRD2 y la resistencia de 1MΩ, llevaremos una conexión a uno de los pines analógicos de Arduino. De los cuales he utilizado el Pin3 y lo he definido como entrada.


En el momento que el receptor IRD2 recibe, conduce y disminuye el voltaje en Pin3.

Alarma de proximidad
Como sistema de alarma, he conectado un diodo Led azul entre el Pin13 y GND. No es necesario conectar una resistencia en serie con el diodo led, ya que el pin 13 la tiene internamente. Si recibe se activará el diodo led azul y sino se mantendrá apagado.




Montaje en la Protoboard

Emisor receptor-recibe



(He enfrentado emisor-receptor para que lleguen los rayos infrarrojos directamente, el diodo led se enciende pues está recibiendo señal)







Emisor receptor-NO recibe

(Colocado un obstáculo metálico en medio, el receptor no recibe señal, por tanto el diodo led no parpadea.)










Se realizan mediciones de voltaje entre el Pin 3 y GND. En el momento que el receptor de infrarrojo no conduce, es decir el circuito de recepción esta abierto, la tensión es de 4,22 Voltios.
En el momento que el Receptor de infrarrojo recibe, se cierra el circuito, y  el voltaje en Pin 3 cae a 1,50 voltios.


Me despido dejando el código que he desarrollado, y unos links directos a los módulos que he utilizado.

-Arduino UNO R3

https://s.click.aliexpress.com/e/_oEmMcZg 




La programación empleada


Sketch:

//Sensor de aparcamiento con infrarrojo
 //variables para la entrada y control de led
  int analogInput = 3;     //definimos la variable de entrada analogica en el pin3
  int LEDpin1 = 13;      // definimos la variable de salida para el led de alarma
  int LEDpin2 = 12;     //definimos la variable de salida de  envio de pulso. Pin12

 
  int value = 0;         // variable para definir el valor

  int threshold = 512;         // el umbral que controla cuando se enciende el led, podemos regular la sensibilidad.

  void setup()
{

// declaracion del modo de los pines INPUT/OUTPUT
  pinMode(analogInput, INPUT);
  pinMode(LEDpin1, OUTPUT);
  pinMode(LEDpin2, OUTPUT);

}
void loop()    //bucle de programa
{
  digitalWrite(LEDpin2, HIGH);              // Activa Emisor IRda
  value = analogRead(analogInput);      // lee el valor de entrada analogico


// si el receptor IR recibe, disminuye el valor analógico de entrada por el pin 3.
if (value < threshold){
  digitalWrite(LEDpin1, HIGH);   //Activa Diodo led alarma(pin13)
  delay(100);
  digitalWrite(LEDpin1, LOW);    //Apaga Diodo led de alarma(pin13)
  delay(100);
  digitalWrite(LEDpin1, HIGH);   //Activa Diodo led de alarma(pin13)
  delay(100);
}
// si el receptor no recibe, aumenta la resistencia en el receptor IR y aumenta el valor analogico de entrada por el pin 3.
else {digitalWrite(LEDpin1, LOW);

}
}

14 comentarios:

  1. buenas construi tu sensor y funciona de maravilla con arduino, ahora quiero ir mas alla :D, es posible medir la distancia con este sensor, algo similar al sensor de ultrasonidos que mide distancias en centimetros, es posible hacerlo tambien con un infrarrojo?

    ResponderEliminar
    Respuestas
    1. Hola Skrew, pues no descarto que halla soluciones posibles via infrarrojos, yo en esta entrada he realizado un recibe, no recibe. Hice pruebas colocando los led's posicionados en serie, en vez de enfrentados como este ejemplo, acercaba un objeto a los mismos, y cuando se encontraban muy próximos a 3 o 4 centímetros, entraba en funcionamiento por el rebote de la luz infrarroja. Esto nos hace depender del material para el rebote, superficie del objeto, posicion, bla,bla, aparte de que es una distancia muy pequeña...

      Solución, lo mejor que puedes hacer es comprarte un Emisor-Receptor por ultrasonidos, en ebay les tienes por 3 o 4 euros, y funcionan muy bien, puedes verlo en la entrada que tengo en el bloq.
      Espero haberte podido ayudar, si necesitas cualquier cosa, solo debes postear.
      Un saludo

      Eliminar
  2. Muy buen blog,

    Pero tenia un par de preguntas antes de construirlo:
    1. El voltage va disminuyendo de 4,22 a 1,50 conforme se acerquen emisor y receptor o simplemente el voltage cambia de golpe?
    2. Si esto es así, que distancias soportarían?

    Gracias de antemano por responder!

    ResponderEliminar
  3. Hola Kaos. En este caso el voltaje cae de golpe, a diferencia de cuando utilizamos una LDR, ya que varía la resistencia en función de la luz que recibe y por tanto el voltaje.
    Espero haberte ayudado.
    Un saludo

    ResponderEliminar
  4. Hola! Estoy trabajando en un proyecto en el que aparece una imagen fija en una pantalla y al acercarte se reproduce un video, en lugar de la imagen estática. Sería posible con este mecanismo? espero tu respuesta. un saludo y mil gracias

    ResponderEliminar
  5. hola estoy programando en arduino para la construccion de un robot y el cual debe seguir una linea, me gustria usar tu sensor infrarrojo pero no entiendo el valor en la programacion de

    int threshold = 512; // el umbral que controla cuando se enciende el led, podemos regular la sensibilidad.

    De donde obtuviste el valor 512???

    ResponderEliminar
  6. ola anonimo tengo entendido que el valor 512 que le da es variable segun el ambiente en el que trabajes puede ser mas o menos es experimental.

    ResponderEliminar
  7. muy buenos dias,.. de favor de le pido si me puede apoyar en cuando al montar un circuito para leer los pulsos de una persona,.. no tengo conocimiento suficiente para llevarlo a cabo.. le agradezco graciassss..

    ResponderEliminar
    Respuestas
    1. Hola Paty! pues yo no he trabajado mucho con ello pero si te puedo orientar un poco. Tienes por ejemplo un sensor ya desarrollado, que mide el pulso mediante un led que emite pulsos y se capta la reflexión que producen los capilares de nuestra piel. Puedes echarlo un vistazo en http://pulsesensor.com/, como puedes ver es código abierto y es un sistema que ahora se esta empezando a implementar en los wereables. Ese sensor es relativamente sencillo, como es open source hay bastante código en la red que lo puedes cargar en Arduino y funciona.
      Otra opción que tienes es un integrado de Analog Devices AD8232, pero este es algo más complejo, el sistema es totalmente distinto, interpreta los impulsos eléctricos amplificados que se produce en nuestro pecho del corazón. El sistema es más parecido a los EKG que hacen los médicos.
      Otra opción es que desarrolles un sistema parecido a las bandas pectorales jeje.
      Espero que te haya podido ayudar un poco, cualquier cosa me puedes preguntar y si puedo te hecho una mano.
      Un saludo!!

      Eliminar
  8. disculpa me puedes proporcionar la imagen de tu circuito es que en las imagenes que estan no se ve bien

    ResponderEliminar
  9. Hola,
    las imágenes de montaje no las tengo ya. Pero si sigues los esquemáticos de montaje no vas a tener ningún problema.
    Un saludo

    ResponderEliminar
  10. Hola, José.

    Necesito usar tu sensor para un cronómetro. La idea es poner 5 sensores cada 20 metros, y que cuenten una "vuelta" cada vez que paso por uno de ellos. El último debe parar completamente el tiempo. ¿Me puedes ayudar?

    El proyecto es para entrenamiento de atletismo, soy corredor de 100 metros y me ayudaría mucho.

    Espero tu respuesta, muchas gracias.

    ResponderEliminar
    Respuestas
    1. Hola Luciano,
      es un proyecto interesante, lo único desconozco el medio donde entrenas, si es un polideportivo o en el exterior, y si el proyecto que desarrolles va a quedar como una instalación fija o de quitar y poner. Te lo pregunto porque si es un sitio donde va a quedar instalado y tienes posibilidad de tener tensión en cada sensor,sería ideal. En caso contrario vas a tener que utilizar algún sistema de baterías y el envío de señal por radiofrecuencia.
      Yo utilizaría un Arduino y 5 módulos de RF. En cada Checkpoint el sensor de proximidad con el emisor y el Arduino tendrá conectados los receptores de RF registrando cada vez que pases por una marca, con un buen algoritmo de temporización.
      Yo te digo como lo haría en función de lo que me has planteado, pero ya te digo que desconozco el entorno, si tiene que ser un sistema waterproof, fácil de desmontar, si hay obstáculos o señales que puedan perturbar el envío de señal por RF, etc. Difícil no lo veo, pero hay que tener varias cosas en cuenta.
      Bueno ya me contaras como vas con el proyecto, espero haberte ayudado y si necesitas algo más me dices.
      Un saludo!

      Eliminar
  11. Hola amigo quisiera saber como utilizar tu circuito para un sistema de aparcamiento , si me pudieras ayudar te lo agradecería mucho, es que es para un proyecto.

    ResponderEliminar