CNY70
SENSOR ÓPTICO REFLEXIVO



El CNY70 es un sensor óptico reflexivo que tiene una construcción compacta dónde el emisor de luz y el receptor se colocan en la misma dirección para detectar la presencia de un objeto utilizando la reflexión del infrarrojo sobre el objeto.
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.
La distancia máxima, la determina la corriente que le llega a la base del transistor. La distancia va desde 0mm hasta 10mm.
CARACTERÍSTICAS
• Sensor óptico por reflexión

• Combina un led infrarrojo emisor y un fototransistor receptor en un mismo módulo
• Longitud de onda del emisor: 950 nm
• Rango de operación con cambio >20% de la corriente de colector: 0 mm a 5 mm
• Distancia operativa a corriente de salida pico: <0 .5="" font="" mm="">
• Filtro contra la luz del espectro visible
• Corriente del LED en directo max: 50 mA
• Voltaje inverso del LED max: 5 V
• Corriente de colector del fototransistor en directo max: 50 mA
• Voltaje colector-emisor del fototransistor max: 32 V
• Voltaje emisor-colector del fototransistor max: 7 V



CONEXIONADO


PROGRAMACIÓN

int infraPin1 = 10;
//pin del infrarrojo utilizado como entrada digital en el lado derecho (#1)
int infraPin2 = 11;
//pin del infrarrojo utilizado como entrada digital en el lado izquierdo (#2)
int valorInfra1 = 0;
//valor inicial de la lectura digital del infrarrojo #1
int valorInfra2 = 0;
//valor inicial de la lectura digital del infrarrojo #2
int OUTPUT4 = 4;
//Output conectado al pin 4
int OUTPUT3 = 3;
//Output conectado al pin 3
int OUTPUT2 = 6;
//Output conectado al pin 6
int OUTPUT1= 7;
//Output conectado al pin 7


void setup () {

Serial.begin (9600);
//comenzar comunicación serial
pinMode (infraPin1, INPUT);
//inicializa el pin 1 como entrada digital
pinMode (infraPin2, INPUT);
//inicializa el pin 2 como entrada digital
pinMode (OUTPUT1, OUTPUT);
//inicializa el pin 7 como salida digital
pinMode (OUTPUT2, OUTPUT);
//inicializa el pin 6 como salida digital
pinMode (OUTPUT3, OUTPUT);
//inicializa el pin 3 como salida digital
pinMode (OUTPUT4, OUTPUT);
//inicializa el pin 4 como salida digital
}



void loop () {

valorInfra1 = digitalRead (infraPin1);
//lee el valor de la entrada 10 (infrarrojo #1)
Serial.print (“SENSOR1 “);
//imprimir el texto “SENSOR1 “
Serial.println (valorInfra1);
//imprimir la lectura del infrarrojo #1
valorInfra2 = digitalRead (infraPin2);
//lee el valor de la entrada 11 (infrarrojo #2)
Serial.print (“SENSOR2 “);
//imprimir el texto “SENSOR2 “
Serial.println (valorInfra2);
//imprimir la lectura del infrarrojo #2


if (valorInfra1==0)
//si la lectura del infrarrojo #1 es 0, ese cumplirá una de las siguientes condiciones:
{

if (valorInfra2==0)
//si la lectura del infrarrojo #2 es 0, es decir los dos sensores están sobre la línea negra, entonces los
{
// dos motores avanzarán en línea recta.
digitalWrite (OUTPUT1, 0);

digitalWrite (OUTPUT2, 1);

digitalWrite (OUTPUT3, 1);

digitalWrite (OUTPUT4, 0);

}

else
//si la lectura del infrarrojo #2 es 1, el sensor #1 está sobre la línea negra y el sensor #2 está por fuera de la
{
//línea negra, entonces solo una rueda gira
digitalWrite (OUTPUT1, 0);

digitalWrite (OUTPUT2, 0);

digitalWrite (OUTPUT3, 1);

digitalWrite (OUTPUT4, 0);

}

}

else
//si la lectura del infrarrojo #1 no es 0, será 1, se darán las siguientes posibilidades:
{

if (valorInfra2==0)
//como el sensor #1 está por fuera de la línea negra y el sensor #2 está sobre la línea negra, entonces sólo una
{
//rueda gira y esto causará el giro
digitalWrite (OUTPUT1, 0);

digitalWrite (OUTPUT2, 1);

digitalWrite (OUTPUT3, 0);

digitalWrite (OUTPUT4, 0);

}

else
//si ambos sensores dan lectura 1, los dos están por fuera de la línea negra, para que vuelva a su trayectoria
{
//tiene que retroceder
digitalWrite (OUTPUT1, 1);

digitalWrite (OUTPUT2, 0);

digitalWrite (OUTPUT3, 0);

digitalWrite (OUTPUT4, 1);

}

}

}


Ejemplo: se encenderá un LED verde en el caso de que lea un '0' o un LED amarillo en el caso de que lea un '1'.

int LedPin1 = 8;                                  //pin del Led verde
int LedPin2 = 9;                                  //pin del Led amarillo
int infraPin = 4;                                   //pin de infrarrojo, entrada digital
int valorInfra = 0;                                //valor inicial de la lectura inicial del infrarrojo

void setup () {
pinMode (LedPin1, OUTPUT);           //LedPin1 como salida
pinMode (LedPin2, OUTPUT);           //LedPin2 como salida
pinMode (infraPin, INPUT);                //Pin 4 como entrada digital
}

void loop () {
valorInfra = digitalRead (infraPin);     //Lee el valor de la entrada 4
digitalWrite (LedPin1, valorInfra);       //escribe en Pin 8 el valor del infrarrojo

valorInfra = !valorInfra;                        //se asigna el valor al infrarrojo
digitalWrite (LedPin2, valorInfra);       //escribe en Pin 9 el valor del infrarrojo
}

........................................................................

int LedVerde = 8;                                //pin del Led verde
int LedAmarillo = 9;                            //pin del Led amarillo
int sensor = 4;                                    //pin de infrarrojo, entrada digital
int valor = 0;                                       //valor inicial de la lectura inicial del infrarrojo

void setup () {
Serial.begin (9600);
pinMode (LedVerde, OUTPUT);         //LedVerde como salida
pinMode (LedAmarillo, OUTPUT);     //LedAmarillo como salida
pinMode (sensor, INPUT);                  //Pin 4 como entrada digital
}

void loop () {
valor = digitalRead (sensor);               //Lee el valor de la entrada 4
Serial.println (valor);
delay (100);

if (valor == 0)
{
   digitalWrite (LedVerde, HIGH);
   digitalWrite (LedAmarillo, LOW);
}

else
{
   digitalWrite (LedVerde, LOW);
   digitalWrite (LedAmarillo, HIGH);
}
}

TCRT 5000L
SENSOR ÓPTICO REFLEXIVO

Un TCRT5000L es un tipo de sensor óptico reflectivo que detecta la diferencia de color en un objeto mediante la reflexión de la luz en el mismoEl módulo posee un comparador de voltaje y un trimmer para ajustar la sensibilidad de detección del sensor.
El TCRT5000L es un sensor sencillo. Dispone de un LED emisor de luz infrarroja, y de un fototransitor que recibe la luz reflejada por un posible obstáculo. La cantidad de luz recibida depende del color y reflectividad del objeto, por lo que podemos distinguir entre zonas y oscuras de un objeto.
El rango de medición del sensor varía entre 0,2 a 15mm, siendo la distancia óptima 2,5mm. Por tanto es un sensor de muy corta distancia.
DIFERENCIA ENTRE EL TCRT5000L & CNY70
El TCRT5000L es menos inmune a la luz ambiente, lo que lo hace mejor para el desarrollo de robots o seguidores de línea.
El CNY70 solo detecta en un rango de 0mm a 5mm, mientras que el TCRT5000 permite 12mm y en algunas pruebas se ha logrado hasta 25mm.
CARACTERÍSTICAS

Distancia de detección
12mm (generalmente)
Método de detección
 Reflectivo
Longitud de onda de funcionamiento
 950mm 
Voltaje inverso
5 V 
Corriente directa
60mA 
Sobretensiones Corriente
3A 
Emisor Disipación de potencia
100 mW 
Colector-emisor Voltaje
70 V 
Collector
100mA
Detector Disipación de potencia
100 mW 
Sensor disipación de energía total
200 mW 
Temperatura de funcionamiento
-25 ~ + 85
Tiene dos esquemas de conexión: digital y  análoga.
Digital: entrega un nivel de tensión alto o bajo  para indicar si la línea es blanca o negra.
Análogica: el nivel de tensión de salida variará de 0 a 5 voltios en función del color y tono del objeto (claro u oscuro).
FUNCIONAMIENTO

Un TCRT5000L es un sensor óptico que detecta la diferencia de color en una superficie. Para hacerlo dispone de:

Un LED (emisor infrarrojo) que emite luz infrarroja (IR) y
Un FOTODIODO que es capaz de recibir esa luz infrarroja y transmitir una señal.
ESQUEMA DEL MONTAJE
Se alimenta el módulo a través de Vcc y GND conectándolos, respectivamente, a la salida de 5V y GND en el Arduino.
Por otro lado, se conecta la salida digital del sensor (D0) a una entrada digital para leer el estado del sensor.
CÓMO PROGRAMARLO
Para detectar cuando el TCRT5000L pasa por encima de una zona oscura simplemente leemos el estado de la entrada digital.
Cuando el sensor se dispara tomaremos las acciones oportunas, como detener o variar la dirección de un robot.

const  int sensorPin = 9;

void setup () {
  Serial.begin(9600);                                             //iniciar puerto serie
  pinMode (sensorPin, INPUT);                            //definir pin como entrada
}

void loop () {
  int value = 0;
  value = digitalRead (sensorPin);                        //lectura digital de pin

  if (value == LOW) {
      Serial.println("TCRT5000L activado");           //zona oscura
  }
  delay(1000);
}


...................................................................................................................................................

SENSOR INFRARROJO DE MOVIMIENTO 
PIR HC-SR501

Los sensores o detectores PIR (Passive Infrared) reaccionan sólo ante determinadas fuentes de energía, como es el caso del calor del cuerpo humano o animales. Básicamente reciben la variación de las radiaciones infrarrojas del medio ambiente que cubre.

Es denominado detector pasivo debido a que no emite radiaciones, sino que las recibe. Estos captan la presencia detectando la diferencia entre el calor emitido por el cuerpo humano y el espacio alrededor. (Todo cuerpo emite cierto nivel de radiación; entre mayor temperatura tengam mayor radiación emitirá).

¿CÓMO FUNCIONA?

El principal elemento que lo compone es un SENSOR PIROELÉTRICO, diseñado para detectar cambios en la radiación infrarroja recibida. 

Consta de dos elementos detectores separados, siendo la señal diferencia entre ambos la que permite activar la alarma de movimiento. En el caso del HC-SR501, la señal generada por el sensor ingresa al circuito integrado BISS001, el cual contiene amplificadores operaciones e interfaces electrónicas adicionales. Otros sensores, incorporan un transistor de efecto campo que amplifica la señal eléctrica que genera cuando se produce dicha variación de radiación recibida.


CARACTERÍSTICAS

- Usa el PIR HC-SR 501 y el controlador BISS0001
- Voltaje de alimentación: de 5 a 12 VDC
- Consumo promedio: <1 font="" miliamperio="">
- Rango de distancia de 3 a 7 metros ajustable
- Ángulo de detección: cono de 110°
- Ajustes: 2 potenciómetros para ajuste de rango de detección y tiempo de alarma activa.
- CH1: Con este resistenca se establece el tiempo que se va a mantener activa la salida del sensor. Una de las principales limitaciones es que el tiempo mínimo es de más o menos 3 segundos.
- RL2: Esta resistencia variable permite establecer la distancia de detección que puede variar entre 3-7 metros.
- Jumper para configurar la salida de alarma en modo mono-disparo o disparo repetitivo (‘rettrigerable’)
- Salida de alarma de movimiento con ajuste de tiempo entre 3 segundos a 5 minutos.
- Salida de alarma activa Vo con nivel alto de 3,3 volts y 5 mA source, lista para conexión de un led, o un transistor y relevador.
- Tiempo de inicialización: después de alimentar el módulo HC-SR05, debe transcurrir 1 minuto antes de que inicie su operación normal. Durante ese tiempo, es posible que el módulo active 2 ó 3 veces su salida.
- Tiempo de salida inactiva: cada vez que la salida pase de activa a inactiva, permanecerá en ese estado los siguientes 3 segundos. Cualquier evento que ocurra durante ese lapso es ignorado.
- Temperatura de operación: -15° a +70° C.
- Dimensiones: 3,2 x 2,4 x 1,8 cms.


El módulo HC-SR501 tiene tres (3) pines de conexión: + 5V, OUT (3,3V) y GND; y dos rsistencias variables de calibración: (CH1 y RL2).

DETECTAR UN MOVIMIENTO (1)



PROGRAMACIÓN

const int LEDPin = 7;
//declarar el pin 7 para el LED
const int PIRPin = 4;
//declarar el pin4 para el PIR


void setup ()

{

pinMode (LEDPin, OUTPUT);
//inicializa el pin 7 como salida digital
pinMode (PIRPin, INPUT);
//inicializa el pin 4 como entrada digital
}



void loop ()

{

int value = digitalRead (PIRPin);
//lee el valor de la entrada 4 (sensor infrarrojo PIR)


if (value == HIGH)
//si la lectura del infrarrojo es 1, ese cumplirá la siguiente condición:
{

digitalWrite (LEDPin, HIGH);


}

else
//de lo contario el LED no enciende
{

digitalWrite (LEDPin, LOW);

}

}


DETECTAR UN MOVIMIENTO (2)

Otras Alternativas
.......................

byte sensorpir 2;              // pin de salida del sensor, en el Arduino es entrada.
byte led=13;                   // pin de salida para activar un diodo LED

void setup()
{
 pinMode(sensorpir, INPUT);    // declaramos los pines de entrada y salida 
 pinMode(led, OUTPUT);
 Serial.begin(9600);           // conf. velocidad del monitor Serial 
}

void loop)
 {
 if(digitalRead(sensorpir)== HIGH)
  { 
   Serial.println("Detectado movimiento por el sensor pir");
   digitalWrite(led, HIGH);
   delay(1000);
   digitalWrite(led, LOW);
  }
}
................................

int calibrationTime = 30;

long unsigned int lowIn;

long unsigned int pause = 5000;

boolean lockLow = true;

boolean takeLowTime;

int pirPin = 7;

int ledPin = 8;

int ledPin = 9;



void setup ()

{

Serial.begin(9600);

pinMode (ledPin, OUTPUT);

pinMode (PirPin, INPUT);

digitalWrite (pirPin, LOW);

Serial.print (“calibrating sensor “);

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

        Serial.print (“ . “);

        delay (1000);

  }

        Serial.print (“ done “);

        Serial.println (“SENSOR ACTIVE“);

        delay (50);

}



void loop ()

{

if (digitalRead (pirPin) = HIGH) {

     digitalWrite (ledPin, HIGH);

      if (lockLow) {

      lockLow = false;

      Serial.print (“ --- “);

      Serial.print (“motion detected at “);

      Serial.print (millis()/1000);

      Serial.print (“ sec “);

      delay (50);

      }

      takeLowTime = true;

   }

if (digitalRead (pirPin) = LOW) {

     digitalWrite (ledPin, LOW);

      if (takeLowTime) {

      lockIn = millis ();

      takeLowTime = false;

      }

if (! lockLow && millis() – lowIn > pause)  {

    lockLow = true;

      Serial.print (“motion ended at “);

      Serial.print (millis() – pause /1000);

      Serial.prinlnt (“ sec “);

      delay (50);

      }

    } 

}

..........................................................................................................................................


SENSOR ULTRASONIDO

HC-SR04


Un sensor de ultrasonidos puede servir para medir distancias a objetos, utilizarlos como "sonar" en lugares pocos accesibles y como detector de obstáculos.

Los ultrasonidos son aquellos sonidos que se generan en el rango de 20 KHz hasta los 400 KHz, aproximadamente.

El sensor HC-SR04 es un sensor de distancia que utiliza ultrasonido para determinar la distancia de un objeto en un rango de 2 a 450 cm. 

El sensor HC-SR04 posee dos transductores: un emisor y un receptor piezoeléctricos, además de la electrónica necesaria para su operación. 



PINES
  • VCC (+5V DC)
  • TRIG (Disparo del ultrasonido)
  • ECHO (Recepción del ultrasonido)
  • GND (0V)

Nota: El sensor US-016 es similar al HC-SR04 pero con salida de tipo analógica.

FUNCIONAMIENTO

El funcionamiento del sensor es el siguiente: el emisor piezoeléctrico emite 8 pulsos de ultrasonido (40KHz) luego de recibir la orden en el pin TRIG, las ondas de sonido viajan en el aire (340 m/s) y rebotan al encontrar un objeto, el sonido de rebote es detectado por el receptor piezoeléctrico, luego el pin ECHO cambia a Alto (5V) por un tiempo igual al que demoró la onda desde que fue emitida hasta que fue detectada, el tiempo del pulso ECO es medido por el microcontrolador y así se puede calcular la distancia al objeto. El funcionamiento del sensor no se ve afectado por la luz solar o material de color negro (aunque los materiales blandos acústicamente como tela o lana pueden llegar a ser difíciles de detectar).

CARACTERÍSTICAS


  • Voltaje de Operación: 5V DC
  • Corriente de reposo: menor a 2mA
  • Corriente de trabajo: 15 mA
  • Rango de medición: 2 cm a 450 cm
  • Precisión: +- 3 mm
  • Ángulo de apertura: 15°
  • Frecuencia de ultrasonido: 40 KHz
  • Duración mínima del pulso de disparo TRIG (nivel TTL): 10 μS
  • Duración del pulso ECO de salida (nivel TTL): 100-25000 μS
  • Dimensiones: 45mm x 20mm x 15mm
  • Tiempo mínimo de espera entre una medida y el inicio de otra 20ms (recomendable 50ms).

CONEXIONADO






PRÁCTICA 1

SENSOR ULTRASONIDO (A)




PRÁCTICA 2

SENSOR ULTRASONIDO (B)




..........................................................................................................................................

SENSORES DE GAS


SENSOR MQ-3


Este sensor detecta la concentración de alcohol en aire. Simplemente se conecta a una entrada analógica de un Arduino y se podrá medir la concentración de alcohol.

Los sensores de gas de la serie MQ son sensores analógicos por lo que son fáciles de implementar con cualquier microcontrolador.
También tiene una salida digital que se calibra con un potenciómetro, esta salida tiene un led indicador.
Este sensor de alcohol es adecuado para detectar la concentración de alcohol en el aliento, al igual que un alcoholímetro. Tiene un alta sensibilidad y tiempo de respuesta rápida.  Es muy sensible al alcohol y de menor sensibilidad a la bencina, también es sensible a gases como GLP, Hexano, CO, CH4 pero con sensibilidad muy baja, la cual se puede despreciar si hay poca concentración de estos.


Son electroquímicos y varían su resistencia cuando se exponen a determinados gases, internamente posee un calentador encargado de aumentar la temperatura interna.  
ESPECIFICACIONES TÉCNICAS
  • Voltaje de Operación: 5VDC
  • Integrado amplificador LM393 con umbral mediante potenciómetro.
  • 2 pines de salida (salida analógica y salida de nivel TTL).
  • Salida de nivel TTL válida de bajo nivel, se puede conectar directamente al microcontrolador.
  • Salida analógica de 0 ~ 5 V , el voltaje más alto equivale a una concentración más alta.
  • Condiciones de trabajo: Temperatura ambiente:-10℃ to 65℃, Humedad:≤95% RH

DIAGRAMA DE CONEXIONADO
Los sensores MQ se encuentran en módulos, lo que simplifica la parte de conexiones y facilitan su uso, solo basta con alimentar el módulo y empezar a leer el sensor, estos módulos también tienen una salida digital la cual internamente trabaja con un comparador y con la ayuda de un potenciómetro se podrá calibrar el umbral y así poder interpretar la salida digital como presencia o ausencia del gas.
Salida Digital
Tan pronto se alimente el módulo este empezará a calentar, hay que esperar unos minutos para que el módulo caliente y tener un censado adecuado.
El programa es el mismo para cualquier módulo MQ si se usa la salida digital, puesto que  esta salida se comporta como 1 o 0. Tener en cuenta que esta salida es negada, 1 para ausencia de alcohol y 0 para presencia de alcohol.
Nota: antes de usarlo hay que dejarlo conectado por 24 horas

La sensibilidad del sensor se configura a través de la resistencia variable que trae el módulo, girando a la derecha se hace más sensible y necesitamos menos presencia de alcohol para activar la salida, de igual forma si giramos a la izquierda aumentamos el umbral necesitando mayor presencia del gas (alcohol) para que se active la salida.

La diferencia de utilizar la salida digital, es que usando la salida analógica se puede trabajar con diferentes niveles de presencia de gas y escalarlo de acuerdo a la necesidad de nuestra aplicación.

Programación:
int pin_mq = 2;

void setup() { 
  Serial.begin(9600);
  pinMode(pin_mq, INPUT);
}


void loop() {
  
  boolean mq_estado = digitalRead(pin_mq);          //Leemos el sensor
  if(mq_estado)                                     //si la salida del sensor es 1
  {
    Serial.println("Sin presencia de alcohol");
  }
  else                                              //si la salida del sensor es 0
  {
    Serial.println("Alcohol detectado");
  }
  delay(100); 
}

Salida Analógica
La diferencia de utilizar la salida analógica es que podemos trabajar con diferentes niveles de presencia de gas y escalarlo de acuerdo a la necesidad del diseño de la aplicación.
Programación:
void setup() {
  Serial.begin(9600);
}

void loop() {
  
  int adc_MQ = analogRead(A0);                 //Lemos la salida analógica del MQ
  float voltaje = adc_MQ * (5.0 / 1023.0);     //Convertimos la lectura en un valor de voltaje

  Serial.print("adc:");
  Serial.print(adc_MQ);
  Serial.print("    voltaje:");
  Serial.println(voltaje);
  delay(100);
}

PRUEBA INICIAL





PRÁCTICA 3

Sensor de Humo (A)


Se implementa el circuito sin led, para revisar los valores que muestran al acercar o alejar la simulación  de humo en el sensor de gas. Estos valores son los que se tendrán para la programación terminada.




PRÁCTICA 4

Sensor de Humo (B)

Se implementa el circuito conectando los leds. 





TMP 36 o LM35DZ son sensores de temperatura en grados centígrados de precisión y bajo voltaje.

El fabricante del TMP36 o LM35 establecen que la salida de tensión será de 10mV por cada grado de temperatura, y como el Arduino Uno mide las salidas analógicas un máximo de 1024 para 5V (y 0 para 0V), por tanto, para una lectura dada, el valor en voltios de la medida será:

En el TMP36 El 0V no es 0° sino -50° (para leer valores bajo cero), así que al total hay que restarle 50. En cambio en el LM35DZ empieza en 0°, no hay que restarle nada.

 PRACTICA 5. SENSOR DE TEMPERATURA



PROGRAMACIÓN


PRÁCTICA 6. RETO: SENSOR DE TEMPERATURA CON PANTALLA LCD y LEDs








0 Comentarios