Sei sulla pagina 1di 6

El sensor CNY70 como

entrada digital

El
dispositivo CNY70 es un sensor ptico infrarrojo, de un rango de
corto alcance (menos de 5 cm) que se utiliza para detectar colores de
objetos y superficies. Su uso ms comn es para construir pequeos
robots siguelneas.
Contiene un emisor de radiacin infrarroja -fotodiodo- y un receptor
-fototransistor-. El fotodiodo emite un haz de radiacin infrarroja, el
fototransistor recibe ese haz de luz cuando se refleja sobre alguna
superficie u objeto. El sensor enva una seal de retorno a Arduino,
cuyo valor depender de la cantidad de luz reflejada.
El CNY70 puede utilizarse como entrada digital o analgica. En
este ejemplo se ha utilizado como entrada digital para distinguir dos
colores: blanco o negro.
Cando el sensor est orientado hacia una superficie u objeto de color
negro ste absorbe gran parte de la luz emitida por el diodo.
Entonces el sensor enviar un valor alto (HIGH 1) a Arduino. A su
vez cuando el sensor se sita sobre una superficie u objeto

de color blanco gran parte de la luz emitida por el diodo ser


reflejada al fototransistor. Entonces, el sensor enviar un valor alto
(LOW- 0) a Arduino.
El CNY70 tiene cuatro terminales. Para distinguir los terminales a fin
de poder hacer el conexionado correctamente, tienes que colocar el
sensor con la parte del fotodiodo y del fototransistor hacia arriba y los
terminales hacia abajo. Adems, la cara del sensor que est
serigrafiada con el nombre del dispositivo ha de estar situada en tu
derecha, tal y como se muestra en la siguiente imagen.

Una vez identificados los terminales hay que realizar el conexionado a


la protoboard y a Arduino. Este esquema te servir para hacer
correctamente las conexiones. El pin de Arduino que se ha usado en
este programa ejemplo es el 4. Puedes conectarlo a cualquier otro pin
digital.

/*ProgramaqueutilizaelsensorinfrarrojosCNY70comoentrada
digitalparaencenderoapagardosLEDs
ElCNY70estcableadoparaquealestarsobrenegroleaun'1';ysi
estsobreblancoleaun'0'
SepuedeencontrarelcableadodelCNY70eneldocumentoquehayenel
archivodescomprimido
Sielsensordeinfrarrojosestsobrenegro,laentradadigital8
tendrelvalor'1':unLEDseencendery
laentradadigital9tendrelvalor'0':elotroLEDseapagar
Sielsensordeinfrarrojosestsobreblanco,laentradadigital8
tendrelvalor'0',unLEDseapagar
ylaentradadigital9tendrelvalor'1':elotroLEDseencender
Basadoenunprogramaencontradoenhttp://wiki.medialabprado.es/
PorJulioMega,http://www.tecnosefarad.comliberadoparala
comunidad
Thisexamplecodeisinthepublicdomain*/
int ledPin1=8;//pindeunLED
int ledPin2=9;//pindeotroLED
int infraPin=4;//pindelinfrarrojosutilizadocomoentrada
digital
int valorInfra=0;//Valorinicialdelalecturadigitaldel
infrarrojos.
void setup(){
pinMode(ledPin1,OUTPUT);//InicializaelpindelLED1como
salidadigital
pinMode(ledPin2,OUTPUT);//InicializaelpindelLED2como
salidadigital
pinMode(infraPin,INPUT);//Inicializaelpin4comoentrada
digital
}
void loop(){
valorInfra=digitalRead(infraPin);//Leeelvalordelaentrada
4,estoes,elvalorqueleeelinfrarrojo
digitalWrite(ledPin1,valorInfra);/*Escribeenelpin8el
valorqueleelaentrada4,estoes,elmismovalorqueleeel
infrarrojo
Sielinfrarrojolee0,
entonces,elLEDestarapagado
Sielinfrarrojolee1,
entonces,elLEDestarencendido*/

valorInfra=!valorInfra;//SeasignaavalorInfrael
valorInfranegado.SivalorInfraes1,elnuevovalorInfraser0;y
viceversa
digitalWrite(ledPin2,valorInfra);/*Escribeenelpin9el
valornegadoqueleelaentrada4,estoes,elnegadodelvalorque
leeelinfrarrojo
Sielinfrarrojolee0,
entonces,elLEDconectadoalpin9estarencendido
Sielinfrarrojolee1,
entonces,elLEDconectadoalpin9estarapagado*/
}

Usando 6 Reflexivos CNY70


usando 6 sensores
El CNY70 es unsensor ptico infrarrojo muy compacto, de un rango de un alcance de menos
de 5 cm, se suele usar para detectar un cambio en la reflectividad, contiene un emisor de luz
(Fotodiodo) infrarrojo y un receptor (Fototransistor) en la misma direccion, son capaces de
detectar la presencia de un objeto utilizando la reflexin del infrarrojo sobre el objeto, la
reflexin consiste en cuando un rayo de luz que incide sobre una superficie es reflejado.
Funciona as: El fotodiodo emite un az de luz, cuya intensidad est en funcin de la
resistencia que se le conecte y la tensin a la que se alimente, El fototransistor se encarga de
recibir ese az de luz cuando se refleja sobre alguna superficie, dependiendo de la cantidad de
luz recibida el dispositivo enva una seal de retorno a Arduino.
Tenemos dos formas de leer el valor de retorno de estos sensores, digital y analogica, la
forma digital solo tendriamos dos valores de retorno 0 y 1 dependiendo si el fototransistor
est en estado de corte (baja intensidad de luz) o estado activo (alta intensidad de luz). De la
forma analogica los valores de retorno van de 0 (estado de corte) hasta 1023 (estado activo).
Estos sensores soportan un mximo de 3.3 V, consulta el diagrama de conexin antes
de hacer pruebas. Este ejemplo vamos a imprimir los valores de retorno de estos sensores
empleando ambas formas de lectura:

Lectura Analogica
//Los sensores se conectan a los puertos analogico del 0 al 5, El sensor mas a la izquierda
//debe ir al puerto 0 y asi susecivamente
int vectorCNY [ ] = { 0, 0, 0, 0, 0, 0 } ;

//Se inicializan los sensores en 0

void setup ( ){

Serial.begin(9600); } //Inicializa monitor serial

void loop ( ){

for ( int i = 0; i < 6; i ++ )


puertos analogicos 0 a 5

//Lee los valores de retorno de los sensores desde los

vectorCNY [ i ] = analogRead ( i ); //este for no necesita { } por que solo lee


la primera linea consecutiva
for ( int i = 0; i < 6; i ++ ) { //Imprime en el monitor serial los valores leidos

Serial.print ( vectorCNY [ i ] );
Serial.print ( ); }
Serial.print ( \n ) ;
delay(3000);

// Espera 3000 milisegundos (3 segundos) y repite la lectura Lectura

Lectura Digital
//Los sensores se conectan a los puertos digitales del 2 al 7, El sensor mas a la izquierda
//debe ir al puerto 2 en este caso

int vectorCNY [ ] = {2,3, 4, 5, 6, 7}; //Arreglo de cny70 con los pines a los que estan
ligados
int leng_vectorCNY = 6 ; //Longitud del arreglo (numero de pines)

void setup() {

Serial.begin(9600); //Inicializa monitor serial


for (int i = 0; i < leng_vectorCNY; i ++) //Los pines son numerados de 0 a
leng_vectorCNY-1
pinMode(vectorCNY[ i ], INPUT);
}

void loop() {

//cada pin se configura como entrada

for (int i = 0; i < leng_vectorCNY; i ++) {

Serial.print(digitalRead(vectorCNY [ i ] )); //Imprime cada una de las

lecturas de los pines

Serial.print ( ); }
Serial.print(\n);
delay(3000); //Espera 3000 milisegundos y repite la lectura
}

Diagrama de Conexion:
Para ambas formas de lectura ( Analogica o Digital ) es necesario utilizar una resistencia de
47K para no daar el fotodiodo (tome la imagen de internet (^_^)! )

Potrebbero piacerti anche