CNY70 Sensor óptico de reflexión con Arduino Deja un comentario

El CNY70 es un sensor que incluye un led infrarrojo y un foto-transistor. Para Arduino se utilizan como medidores de distancia o detectores de líneas. Su función principal es la de medir la reflexión en superficies. El circuito integrado tiene cuatro pines, (1) y (2) son para el led emisor. También los pines (3) y (4) son para el foto-transistor. Para poder hacer una detección se requiere entonces de una superficie que refleje la luz infrarroja. Este tipo de sensor se utiliza por ejemplo, para la detección de líneas en un carro seguidor de lineas. Si la superficie reflectora es negra, no se reflejara tanta luz con longitud de onda en el infrarojo y por lo tanto tendremos un ‘0’ a la salida del emisor del foto-transistor. Si por el contrario tenemos que el sensor esta «viendo» una superficie blanca, tendremos un ‘1’. A continuación veremos el funcionamiento, la distancia máxima y el circuito para el CNY70.

Funcionamiento del CNY70

El CNY70 funciona como un detector de distancia. Para esto, requiere de una superficie que pueda reflejar la luz infrarroja. Entonces el detector recibe esta luz en la base del foto-transistor. Si la corriente en la base es suficiente, permite el paso de corriente entre el colector y el emisor. El CNY70 funciona como un switch que se abre o cierra si existe una superficie que refleje la señal que emite el diodo IR.

Distancia máxima del CNY70

En el CNY70 la distancia máxima,la determina la corriente que le llega a la base del transistor. La distancia va desde 0mm hasta 10mm. La corriente de la base depende de la corriente que se le suministre al diodo emisor. Por ejemplo, para tener la máxima distancia de detección posible, se requiere que al led se le proporcione una corriente de 20mA.

Para calcular la resistecía del led de acuerdo a este valor, se usa la Ley de ohm. Entonces la formula que aplica es la siguiente:

Corriente CNY70, I = V/R

Es decir que la corriente depende de la razón del voltaje y la resistencia.

Si queremos calcular la resistencia para obtener 20mA, entonces despejamos de la primera ecuación.

R = V/I  = (5V – 1.25V)/20mA = 187.5 Ohms.

El voltaje de 1.25V es el voltaje de caída del diodo emisor. Este valor depende de cada CNY70 y según la hoja de datos, puede ir desde 1.25V hasta 1.6V. Entonces para el sensor que use de prueba resulto ser de 1.25V. El valor comercial más cercano es 180 Ohms o 200 Ohms.

Con 180R, tendremos:   Corriente(I) = (5V-1.25V)/180 = 20.83mA.

Y también con 200 Ohms, tendremos:  Corriente = (5V-1.25V)/200 = 18.75mA.

Lo recomendable es usar una resistencia de 180Ohms si queremos obtener la máxima distancia de reflexión.

CNY70 Circuito

Para el CNY70 el circuito es muy simple, sólo se requieren dos resistencias. Por ejemplo, una resistencia para el led de 180Ohms como lo calculado anteriormente y una resistencia conectada al emisor. A continuación te presentamos el circuito.

En las pruebas que hice con este circuito encontré lo siguiente que el sensor responde digitalmente, es decir, 1 y 0 a la distancia de 10mm. En otras palabras, si se quiere detectar todo o nada, se puede a esta distancia. Pero también es importante señalar que el CNY70 proporciona un voltaje vs la distancia al objeto que refleja la luz. Por ejemplo, si no hay algún objeto cercano, se detecta 64mV. También si hay un objeto y esta a unos 10cm el sensor proporciona 100mV, a 5cm 300mV y así sucesivamente.

Sensor CNY70 con Arduino

Para usar el CNY70 con Arduino,podemos hacerlo funcionar de dos formas: digitalmente (0,1) para distancias de 0 a 10mm. Y la segunda forma es con una entrada analógica y midiendo la señal que proporciona el sensor dependiendo de la situación que se desee. En este ejemplo, veremos como utilizar al sensor de la segunda manera.

Código para Arduino para la lectura del CNY70

En el siguiente código se lee el canal analogico A0 de Arduino. Entonces se procede a armar el circuito del CNY70 que se mostro anteriormente. Las lecturas se muestran abajo del código en una imagen. El resultado es una diferencia entre el valor de voltaje que se lee en A0.

CNY70 detector de linea con Arduino

El siguiente código es una modificación del código anterior. Para este caso se utilizaron dos variables para calibrar la referencia, se requiere el valor de la lectura cuando no hay superficie (20) y el valor cuando se detecta la linea negra (100),  estos son valores cercanos a la imagen anterior.

A través de estructuras de control se detectan tres rangos de valores y se determina si existe o no una linea, si esto se hace muy rápido se puede tomar decisiones para mover al robot hacia la izquierda o derecha.

 

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Enviar Whatsapp
Hola 👋
¿En qué podemos ayudarte?