Lectura digital de sensores infrarrojos

Con el fin de poder leer un sensor infrarrojo del tipo diodo (aunque realmente es un transistor con una base fotosensible) de manera digital, se realizará el siguiente montaje que utiliza un amplificador operacional:

Funcionamiento

El amplificador operacional compara el voltaje analógico que establece el sensor infrarrojo con un voltaje configurable mediante el potenciómetro de 4,7Mohms.

Cuando el voltaje fijado por el sensor es mayor que el fijado por el potenciómetro, el amplificador operadional pone a su salida un 1 lógico (5V).

Cuando el voltaje fijado por el pontenciómetro es mayor que el del sensor, el amplificador operacional pone a su salida un 0 lógico (0V).

Base teórica

El circuito del sensor (a la izquierda) se comporta exáctamente igual que el circuito para la lectura analógica, mientras que el potenciómetro permite configurar un potencial con el que comparar.

En el diagrama se muestra un potenciómetro de 3 patas, esto es, en el terminal intermedio se dispone del valor y potencial configurados, mientras que entre los terminales de los extremos se dispone de toda la resistencia y la totalidad de diferencia de potencial.

Como se puede observar, el potenciómetro es de 4,7Mohms. Mejor cuanto mayor sea el valor, ya que sólo nos importa el potencial en el punto configurado y con una resistencia muy grande evitaremos gastar batería porque circulará menos corriente (punto importante si estamos alimentando todo el rato el potenciómetro).

Para el potenciómetro se han utilizado 3 voltios (en realidad 3,3V del Arduino). Esto permite afinar más el voltaje seleccionado con el potenciómetro, ya que el sensor infrarrojo no va a dar más de 2,5 voltios de diferencia de potencial al ser estimulado por un emisor infrarrojo (por una llama sí) y se desperdiciaría rango de configuración si se usasen 5 voltios.

Código

El siguiente código simplemente escribe en el puerto digital 13 el valor leído en el puerto digital 2.

(Código no probado)

Lectura analógica de sensores infrarrojos

Con el fin de poder leer un sensor infrarrojo del tipo diodo (aunque realmente es un transistor con una base fotosensible), se realizará el siguiente montaje:

Funcionamiento

El diodo LED de infrarrojos (el de la izquierda) está en serie con una resistencia de 100 ohms, y la luz es recibida mediante rebote por el sensor de la derecha. El puerto analógico convierte el voltaje en el punto medio en un valor de 10 bits (0-1024).
Si en el emisor se sustituye la resistencia por una de 50 ohms conseguiremos que detecte objetos más lejanos.

Base teórica

El puerto analógico se comporta como un circuito abierto, por lo que no consume ni cede corriente.

Cuando el sensor de infrarrojos no recibe infrarrojos se comporta como un diodo al corte, por lo que el potencial en el puerto analógico es de 0V ya que no hay corriente circulando por la resistencia de 1Mohm y por lo tanto se establece al potencial en el polo negativo del generador de corriente.

Cuando el sensor de infrarrojos recibe infrarrojos, se comporta como un cortocircuito (idealmente) por lo que el potencial en el puerto analógico se establece a un valor cercano a los 5V (ya que en el transistor hay una pequeña caída de tensión). En este momento, mientras que el sensor está conduciendo, hay un consumo de corriente a través de la resistencia de 1Mohm, y cuando mayor sea esta resistencia menor consumo, por lo que cuanto mayor sea, mejor.

Cuestiones prácticas

En la práctica, la intensidad del emisor no es suficiente para saturar el transistor receptor, por lo que sólo se consigue que, mediante reflexión de la luz infrarroja en un folio en blanco, el sensor funcione como una resistencia que hace caer alrededor de 2-2,5 voltios en sus extremos.
Si se utiliza una llama de mechero sí que se consigue que el transistor sature y se comporte casi como un cortocircuito (situación deseada).
Teniendo en cuenta esto, el puerto analógico desperdicia parte del rango de conversión, dado que se compara con 5 voltios de referencia. Mediante código solucionaremos esto haciendo que compare el voltaje en el puerto con 2,6 voltios.

Código

El siguiente código lee cada 500 milisegundos el puerto analógico y escribe el valor leído por el puerto serie. Se puede probar a utilizar un papel pintado a franjas blancas y negras y comprobar el comportamiento al transitar de franja a franja.

Detalles

  • La conversión analógica es mucho más lenta que la lectura digital. Una conversión analógica tarda entre 13 y 250 microsegundos.
  • El arduino posee mucho ruido en la lectura de puertos analógicos, ya que la librería no está programada para realizar lecturas precisas.