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. Permite
diferenciar entre dos colores: el blanco y el negro.
El CNY70 funciona como un detector de
distancia, muy utilizado en
robots seguidores de línea. 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 0 mm
hasta 10 mm.
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="">0>
• 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
Aplicaciones
Detección de
presencia o ausencia de objetos
Detección de
posición
Seguimiento de
línea en robótica
Medición de
revoluciones
Escaneo de
discos codificados
Encoders
Funcionamiento
El funcionamiento
es similar al sensor de ultrasonidos HC-Sr04, pero mediante infrarrojos.
El emisor envía una señal en infrarrojos, ésta se refleja
sobre el objeto que está dentro de su alcance y es recogida por el diodo
receptor de infrarrojos.
Si el receptor
recibe la señal del emisor, el transistor conduce, por lo que habrá un “1”
lógico en el Arduino.
CONEXIONADO y PROGRAMACIÓN
Ejemplo: el sistema diferencia mediante el sensor
CNY70 entre el color negro y el color blanco, activando un led
int CNY =
A0;
//CNY asociado al pin A0
int Led =
7;
//pin del Led
int valor =
0;
//valor inicial del sensor
void setup () {
pinMode (CNY,
INPUT); //Pin 4 como entrada análoga
pinMode (Led,
OUTPUT); //Led como salida
Serial.begin(9600); //monitor serial
}
void loop () {
valor = analogRead(CNY);
//El sensor lee
el valor y lo almacena
Serial.println(valor); //visualizar valores
delay (100); //esperar entre valor y valor
if
(valor>=11){ //valor para el color blanco
digitalWrite (Led,
HIGH);
//enciende el led
}
if
(valor<5){ //valor para el color negro
digitalWrite
(Led, LOW);
//apaga el led
}
}
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);
}
}
CONEXIONADO CON EL PUENTE H & LOS MOTORES
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);
|
|
}
|
|
}
|
|
}
|
|
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 mismo. El 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 fototransistor 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.
Analógica: 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 - Sensor Pasivo de Infrarrojos) 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 tenga, mayor radiación emitirá).
El sensor incluye unas lentes de Fresnel, que hacen que el sensor en su conjunto tenga un campo de visión mayor.
¿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. Este sensor da 1 si detecta movimiento o 0 si no lo detecta. 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="">1>
-
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 (por defecto es de 4 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 resistencias variables de calibración: (CH1 y RL2).
El sensor PIR tiene dos trimers, que se pueden variar con
un destornillador de estrella. Estos trimers ajustan el tiempo de retardo y la
sensibilidad (de 3,3 mm a 7 m), de forma individual. También hay un puente de
selección de modo de disparo.
• H (re-activación): la salida permanece
alta cuando el sensor se dispara repetidamente y baja cuando está
inactivo.
• L (Normal): la salida cambia de alta a baja
cuando se activa. El movimiento continuo da como resultado un pulso alto-bajo
repetido.
El lente y el sensor son las partes que captan el
infrarrojo. El sensor solo capta, pero de forma recta, y con el lente es capaz
de captar en 180º. El lente tiene un color blanco con un patrón de hexágonos.
El sensor dejaría de captar si está con agua o húmedo.
Una mejora que se le puede incluir al sensor es soldarle
una fotocelda, este lo que causa es que el funcionamiento cambia al punto de
que solo detecta cuando tenga una cierta cantidad de luz.
El sensor en un
detector de movimiento está en realidad dividido en dos mitades. La razón de
esto es que las dos mitades están conectadas de tal manera que se anulan entre
sí. Si una mitad ve más o menos radiación IR que la otra, la salida oscilará a
alto o bajo.
Hay algunos PIR que son de colector abierto, esto
quiere decir que cuando el sensor detecta un cuerpo, la señal de salida pasa a
masa, por lo que se deberá incorporar al circuito de conexión una resistencia
de unos 10 KΩ pull-up.
COMPROBAR EL SENSOR PIR
Hay que tener en cuenta el orden de los pines, es diferente según el modelo utilizado. En algunos modelos como el Sparkfun es necesario conectar una resistencia "pull-up" de 10 KW entre su pin de alimentación y su pin de datos para que funcione correctamente, este tipo de sensor envía una señal HIGH cuando no detecta movimiento y una señal LOW cuando sí.
El circuito mostrado cuando el sensor PIR (modelo Adafruit que no usa resistencia pull-up externa) detecte el movimiento, el pin de datos enviará un pulso HIGH de 3,3V y por tanto, se ilumina el led. Cuando el le se apague, se puede comprobar al pasar la mano por delante, o todo el cuerpo.
Al conectar las baterías, se debe esperar unos segundos a que el sensor PIR se estabilice e inicie a emitir datos fiables.
En el modelo Adafruit, según la posición del jumper situado en el dorso de la placa funciona de dos modos: si está en el "L" el led parpadeará a un ritmo de segundo a segundo mientras detecta movimiento; y si está colocado en "H", el led permanecerá encendido mientras detecta movimiento.
El programa anterior, simplemente notifica por el monitor serial cuándo se ha detectado movimiento.
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
.......................
Observaciones:
boolean estado=false
El funcionamiento del sensor sin ésta haría que apareciera repetidamente por el monitor serial el texto que se va a imprimir hasta que el sensor dejase de detectar movimiento.
El sensor está durante un tiempo enviando señal de movimiento, pasado ese tiempo volverá a su estado de observación.
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 (TRIG) y un receptor (ECHO) 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)
CONTROL DE MOTORES CONECTADOS A UN SENSOR DE PROXIMIDAD
..........................................................................................................................................
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.
Características del LM35
Voltaje de
funcionamiento: 4 a 30 Voltios
Rango de
Temperatura: 55°C a 150°C
Precisión:
±2°C
Corriente de
Salida: +10mV/°C
El fabricante del TMP36 o LM35 establece 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á:
Para convertir el
voltaje leído en temperatura se utiliza la siguiente fórmula:
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.
Debido a los valores resultantes del sensor (en milivoltios), este sensor se deberá conectar en las entradas analógicas de Arduino.
También se puede utilizar otros tipos de sensores para medir la temperatura, como lo es TERMISTOR NTC.
PRÁCTICA 5. SENSOR DE TEMPERATURA
PRÁCTICA 6. RETO: SENSOR DE TEMPERATURA CON PANTALLA LCD y LEDs
El sensor de
presión barométrica BMP180 permite medir la altura respecto al nivel del
mar, su funcionamiento está basado en la relación entre presión del aire y la
altitud. El BMP180 es el reemplazo de BMP085, posee alta precisión y de bajo
consumo de energía.
CARACTERÍSTICAS
Digital interfaz
de dos cables (I2C)
Amplio rango de
medición de presión barométrica
Ultra-bajo
consumo de energía
Bajo ruido
Completamente
calibrado
Medición de
temperatura incluida
Ultraplano y
pequeño tamaño
Alimentación:
1.8V – 3.6V
Rango de
medición: 300 – 1100hPa
Los pines A4 y
A5 están definidos fijos para las señales SDA y SCL del bus I2C y no se pueden
cambiar en el Arduino UNO.
Lecturas de
presión y temperatura con el BMP180
Lecturas de
presión y temperatura con el BMP180 a través de la pantalla LCD
QRD 1114
SENSOR INFRARROJO
0 Comentarios