El sensor GP2Y10 de Sharp es un dispositivo diseñado para detectar la presencia de partículas muy finas de polvo en el aire. Es capaz de detectar partículas de hasta 0.5 micras de tamaño, lo que lo convierte en una herramienta valiosa para medir la calidad del aire en sistemas de purificación del aire y en sistemas de aire acondicionado.
Este sensor de detección óptica está compuesto internamente por un diodo emisor de infrarrojos (IRED) y un fototransistor. Estos componentes están colocados diagonalmente para que puedan detectar las reflexiones de luz sobre las partículas de polvo en el aire. Es especialmente efectivo para detectar partículas muy finas como las del humo de un cigarrillo.
Uno de los métodos utilizado para distinguir el humo del polvo de la casa mediante el sensor GP2Y10 es un patrón de impulsos basado en comprobar el voltaje de la salida (Vo) cada 10ms. Al hacer esto, se puede averiguar cuantas veces se interrumpe la comunicación entre el IRED y el fototransistor, y de esta manera se conoce la densidad y la concentración de partículas de polvo o humo que hay en un determinado instante.
El sensor GP2Y10 es un dispositivo de bajo consumo, con un consumo de alrededor de 20mA. Puede ser alimentado con un voltaje de hasta 7VDC. Su salida es un voltaje lineal y proporcional a la cantidad de polvo detectado. La sensibilidad del sensor es de 0.5V por cada 0.1 mg/m³ de polvo en el aire.
Para conectarlo a una placa Arduino, es necesario añadir una resistencia de 150Ω y un condensador de 220µF, formando un circuito RC serie como divisor de tensión, como se puede observar en la siguiente imagen. El circuito RC serie actúa como un regulador de voltaje, proporcionando una señal de salida estable a la placa Arduino.
El sensor GP2Y10 cuenta con un diodo emisor de infrarrojos (IRED) conectado al pin digital 2 de Arduino. Este IRED se activa y permanece activo durante un período de tiempo específico para poder medir la cantidad de polvo en el aire. El período de tiempo de actividad del IRED es de 0.32ms. Este período de tiempo se compone de dos partes: el tiempo que la salida Vo tarda en estabilizarse para poder ser leída a través del pin analógico A0 (0.28ms) y los 0.04ms adicionales que la salida Vo se mantiene en su valor máximo.
Una vez completado el período de medición, el IRED se desactiva durante 9.680ms antes de iniciar una nueva secuencia de medición (pulso de control del IRED) que se repite cada 10ms. Esta secuencia se ilustra en la siguiente imagen.
En este post, vamos a utilizar el sensor GP2Y10 para medir la cantidad de partículas de polvo en el aire. Utilizaremos el voltaje en la salida Vo del sensor para calcular la concentración y la densidad de las partículas de polvo en el aire mediante unas fórmulas matemáticas. Estas fórmulas han sido cotejadas con los valores obtenidos de un medidor de calidad de aire profesional llamado DC1100, el cual también se incluirá en la programación.
Para poder visualizar los datos recolectados, hemos conectado un display LCD 1602 a Arduino mediante una conexión I²C. Con este display, podremos ver los valores de concentración y densidad de las partículas de polvo en el aire en tiempo real.
Además, hemos creado una simulación para poder obtener diferentes lecturas de polvo en el aire, esto mediante el uso de un Tupperware de un litro de capacidad. Al cual hemos adherido el sensor GP2Y10 y además se ha añadido un ventilador de 12VDC con conexión directa a la fuente de alimentación, para incluir harina u otro elemento que tenga pequeñas partículas a través del ventilador y que este las vaya recirculando a través del orificio del sensor GP2Y10 para obtener diferentes lecturas. De esta manera, se podrá observar como cambia los valores del sensor GP2Y10 cuando se aumenta la cantidad de partículas de polvo en el aire.
En la siguiente tabla podemos comprobar el voltaje de salida (en voltios) en función de la densidad del polvo (en mg/m³), que este sensor de SHARP nos ofrece.
Para conocer la calidad del aire en cada momento nos podemos orientar por medio de la siguiente tabla, que está realizada respecto a la concentración de partículas de polvo en partes por millón (ppm) que hay en el aire:
Lista de Materiales
-
- Arduino UNO Rev.3
- Cable USB tipo A-B
- Módulo LCM 1602 I2C V1
- Display 16×2 LCD 1602
- Sensor detector de partículas GP2Y10 de SHARP
- Resistencia de 150Ω
- Condensador electrolítico de 10V y C=220µF
- Ventilador de 12VDC 0.15A (C5010B12M)
- Fuente de tensión de 12VDC
- Tupperware de 1L de capacidad
- Protoboard
- Cables de conexión
Código del programa
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 |
/* TITULO: Detector de partículas de polvo en el aire con sensor GP2Y10 AUTOR: MARIANO DEL CAMPO GARCÍA (@2016) --> INGENIERO TÉCNICO INDUSTRIAL ESPECIALIDAD ELECTRÓNICA - FACEBOOK: https://www.facebook.com/mariano.delcampogarcia - TWITTER: https://twitter.com/MarianoCampoGa - CORREO: [email protected] DESCRIPCIÓN DEL PROGRAMA En este programa vamos a obtener el valor de densidad de partículas del polvo en mg/m³ y la concentración de partículas de polvo en ppm, además de obtener el voltaje entre los terminales de salida del sensor GP2Y10 de SHARP. Podremos visualizar dichos valores a través del LCD 1602 que tenemos conectado mediante comunicación I2C a nuestro Arduino. ESQUEMA DE CONEXION +-----+ +----[PWR]-------------------| USB |--+ | +-----+ | | GND/RST2 [ ][ ] | | MOSI2/SCK2 [ ][ ] A5/SCL[ ] | SCL del módulo I2C | 5V/MISO2 [ ][ ] A4/SDA[ ] | SDA del módulo I2C | AREF[ ] | | GND[ ] | | [ ]N/C SCK/13[ ] | | [ ]IOREF MISO/12[ ] | | [ ]RST MOSI/11[ ]~| | [ ]3V3 +---+ 10[ ]~| | [ ]5v -| A |- 9[ ]~| | [ ]GND -| R |- 8[ ] | | [ ]GND -| D |- | | [ ]Vin -| U |- 7[ ] | | -| I |- 6[ ]~| Pin 5 (Vo) | [ ]A0 -| N |- 5[ ]~| | [ ]A1 -| O |- 4[ ] | | [ ]A2 +---+ INT1/3[ ]~| | [ ]A3 INT0/2[ ] | Pin 3 (LED) del sensor GP2Y10 | [ ]A4/SDA RST SCK MISO TX>1[ ] | | [ ]A5/SCL [ ] [ ] [ ] RX<0[ ] | | [ ] [ ] [ ] | | UNO_R3 GND MOSI 5V ____________/ \_______________________/ NOTAS: - Conexiones del sensor GP2Y10: - Pin 1 (V-LED) del sensor GP2Y10 --> +5V de Arduino a través de una resistencia de R=150 ohm. - Pin 2 (LED-GND) del sensor GP2Y10 --> GND de Arduino. - Pin 1 ((V-LED) del sensor GP2Y10 --> Pin 2 (LED-GND) del sensor a través de C=220uF. - Pin 4 (S-GND) del sensor GP2Y10 --> GND de Arduino. - Pin 6 (VCC) del sensor GP2Y10 --> +5V de Arduino - La alimentación y la masa del módulo LCM 1602 I2C V1 van directamente conectadas a VCC (+5V) y GND respectivamente. */ // Importar librerías #include <Wire.h> // Librería comunicación I2C #include <LiquidCrystal_I2C.h> // Librería LCD I2C // Declaración del objeto // Poner la dirección del LCD a 0x27 para display 16x2, 20x2 y 20x4 // Terminales de conexión del LCD // addr, en,rw,rs,d4,d5,d6,d7,bl,blpol LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); int muestreo = 0; // Pin analógico para el pin Vo del sensor GP2Y10 int IRED = 2; // Pin digital para el IRED // Tiempos constantes para el pulso de control del IRED int retardo_1 = 280; int retardo_2 = 40; int retardo_3 = 9680; // Variables auxiliares del programa int valor = 0; float ppm = 0; float voltaje = 0; float densidad_polvo = 0; float ppm_real = 0; int i=0; void setup() { lcd.begin(16,2); // Inicializa el LCD para 16x2 pinMode(IRED,OUTPUT); // Pin digital 2 como salida // Mostramos un mensaje a través del LCD 1602 lcd.clear(); lcd.setCursor(0,0); lcd.print(" DETECTOR DE "); lcd.setCursor(0,1); lcd.print("PARTICULAS POLVO"); delay(3000); } void loop() { i=i+1; // Contador de pulsos de control // El IRED se va a activar con LOW y se desactiva con HIGH según las conexiones internas del sensor digitalWrite(IRED,LOW); // LED activado delayMicroseconds(retardo_1); // Retardo de 0,28ms valor = analogRead(muestreo); // Se muestrea el valor de Vo a través del pin analógico A0 ppm = ppm + valor; // Media ponderada de Vo delayMicroseconds(retardo_2); // Retardo de 0,04ms digitalWrite(IRED,HIGH); // LED desactivado delayMicroseconds(retardo_3); // Retardo de 9,68ms // retardo_1 + retardo_2 + retardo_3 = 10ms // Fórmulas matemáticas para el cálculo de los valores del sensor GP2Y10 voltaje = ppm/i*0.0049; // Voltaje en voltios (media de los valores ppm obtenidos) densidad_polvo = 0.17*voltaje-0.1; // Densidad de partículas de polvo en mg/m³ ppm_real = (voltaje-0.0356)*120000; // Concentración de partículas de polvo en ppm if (ppm_real < 0) ppm_real = 0; if (densidad_polvo < 0 ) densidad_polvo = 0; if (densidad_polvo > 0.5) densidad_polvo = 0.5; // Presentamos el voltaje a través del LCD 1602 lcd.clear(); lcd.setCursor(0,0); lcd.print("-> VOLTAJE"); lcd.setCursor(0,1); lcd.print(voltaje,3); // Tres decimales lcd.print(" V"); delay(2000); // Presentamos la densidad de partículas de polvo a través del LCD 1602 lcd.clear(); lcd.setCursor(0,0); lcd.print("-> DENSIDAD"); lcd.setCursor(0,1); lcd.print(densidad_polvo,3); // Tres decimales lcd.print(" mg x m3"); delay(2000); // Presentamos la concentración de partículas de polvo a través del LCD 1602 lcd.clear(); lcd.setCursor(0,0); lcd.print("-> CONCENTRACION"); lcd.setCursor(0,1); lcd.print(ppm_real,3); // Tres decimales lcd.print(" ppm"); delay(2000); } |
Video
Conclusión
En conclusión, en este post hemos visto cómo utilizar el sensor GP2Y10 de Sharp para medir la cantidad de partículas de polvo en el aire. Este sensor es especialmente efectivo para detectar partículas muy finas como las del humo de un cigarrillo, y su salida se puede utilizar para calcular la concentración y densidad de las partículas de polvo en el aire mediante fórmulas matemáticas. Además, hemos visto cómo conectar este sensor a una placa Arduino y cómo utilizar un display LCD para visualizar los datos en tiempo real.
Esperamos haber proporcionado información valiosa para su uso. Si tiene alguna pregunta o comentario, por favor, no dude en hacerlo saber, estaríamos felices de responder y brindar asistencia adicional. Muchas gracias por leer.