Skip to main content

3.6 Sensor de infrarrojos CNY70

Uno de los sensores más utilizados en robótica, o infinidad de aplicaciones industriales es el CNY-70.

Su nombre técnico es optoacoplador. Se basa en la acción conjunta de un diodo que emite una luz infrarroja (que no vemos) y un fototransistor que detecta el rebote de esta cuando incide sobre algún objeto. 

Inicialmente es un sensor analógico y nos da un valor de voltaje proporcional a la luz rebotada, pero podemos utilizarlo también de manera digital. El transistor y el diodo hay que alimentarlo a través de una resistencia, el diodo del orden de Ohmios para dar una señal razonable y el transistor del orden de k para que trabaja en la zona activa.

Su funcionamiento es sencillo, si el receptor recibe la señal del emisor, el transistor conduce, por lo que recibiremos un '1' lógico en el Arduino:

Conocimiento previo

  • Programación básica de Arduino.
  • Sentencia condicional if-else.
  • Comunicación serie.

Objetivos

  • Conocer el manejo y aplicaciones del sensor CNY 70
  • Realizar las conexiones necesarias sobre el sensor IR.
  • Crear un programa para Arduino que obtenga la información proporcionada por el sensor.

Lista de materiales:

  • Placa Arduino.
  • CNY 70
  • Resistencias 10KOhmios (valor orientativo).
  • Resistencia de 200 Ohmios (valor orientativo).
  • Placa de pruebas.

Vamos a ver una demostración del funcionamiento del sensor:

Montaje 12 detección linea blanca

El problema del CNY70 es que tiene los pines muy juntos que no se puede poner enmedio de la placa protoboard, tenemos pues que utlizar dos opciones:

  • Utilizar cables Dupond macho-hembra
  • Ponerlo inclinado aprovechando que dos extremos de la diagonal tienen que estar conectados a 5V

Lo mejor es utilizar cables M-H pero si no se tienen, vamos a utilizar la segunda opción, este es el esquema:

Utilizaremos la Edubásica el led rojo, si no tienes, simplemente añade un led al pin 13 tal y como hicimos en Montaje 1 led parpadeante sin edubásica

El programa a cargar en el Arduino es:

El resultado es:

/*
Talos Electronics
8-Noviembre-2015
Rafael lozano Rolón 
*/
//Declaracion de variables
int sensor = 7;       //ENTRA DIGITAL FACILMENTE ACCESIBLEE EN EDUBASICA
int Valor_cny70 = 0;
int Led=5;//LED ROJO DE EDUBÁSICA
// cambialo al 13 si no utilizas EDUBÁSICA

void setup() 
{
  Serial.begin(9600);       
  pinMode(sensor, INPUT);  
  pinMode(Led, OUTPUT);   
  digitalWrite(Led, LOW);  
}

void loop() 
{
  Valor_cny70=digitalRead(sensor);
  delay(100);//Esperar 100 ms 
  if(Valor_cny70==0)
  {
    Serial.print("Linea negra\n");
    digitalWrite(Led, HIGH);
  }
  else//Si el valor del sensro es 1
  {
    Serial.print("Linea blanca\n");
    digitalWrite(Led, LOW);
  }
}

Y en el monitor serie sale:


Linea negra
Linea negra
Linea negra
Linea blanca
Linea blanca
Linea blanca
Linea blanca
Linea blanca
Linea negra
Linea negra
Linea negra
Linea ...